1、在IAR的project->option->debugger->Texas instrument->Download下面有个Flash lock protection设置,选中Lock flash memory,并在选中下面的CC253x,CC254x,在输入框中输入0-127,这样是不是说锁定了从0到127page的flash?
2、使用上面的设置之后,每次使用IAR进行download and debugger都会提示我flash已经锁定,需要对芯片进行erase才能继续,这个是表明芯片的flash已经被锁定了吗?但是我看编译出来的.hex文件的lock bits没有发现变成0了啊,这是为什么,还是说实际编译出来的.hex文件长度不够,没有到lock bit?
3、另外即使使用了1中的设置,但是使用SmartRF Flash Programmer还是可以利用动作Read flash into hex-file将CC2541的flash读出来。这样的话锁定不就失效了吗?那这个锁定到底是锁定什么?只是锁定不让debugger吗?
4、使用SmartRF Flash Programmer设置Flash lock,并在该处输入框中输入0-127,这样进行下载,是不是效果与1类似?还是有所差异?
Yue TANG:
禁止读,要如下设置,这个就够了,其他没设置过。
da qin zheng sheng:
这个功能是flash写保护的,防止改变程序代码!
li li33:
回复 Yue TANG:
谢谢您的回答。
1、但实际上按照只这样设置还是不能锁定芯片,使用SmartRF Flash Programmer仍然可以通过动作Read flash into hex-file将flash读到某个.hex文件里。必须要同时选中Lock flash memory,并在输入框中输入0-126才能实现SmartRF Flash Programmer不能读取,这时除了动作Erase之外,其余5个动作都会提示Chip is locked!我试了很多次,如果不设置Lock flash memory,那么读取仍然能成功,芯片不会被锁定。这个跟IAR的版本有关系吗?我使用的是IAR for 8051 8.10版。
2、虽然可以通过上述1中IAR这样的设定实现芯片读取被锁定,但是这有个问题,因为设定了Lock flash memory,那么程序中正常的写flash的操作都将会失败,这将导致程序错误!!!
3、另外,如果不使用IAR做程序的下载,而是将上述1中生成的.hex文件通过SmartRF Flash Programmer下载进入芯片,那么SmartRF Flash Programmer读取flash竟然成功了,也就是说程序失去了读取锁定!!!这样的话,如果实际生产中无法给出源码用IAR进行烧写,就不能实现读取锁定!
li li33:
回复 da qin zheng sheng:
设定了Lock flash memory确实可以实现Flash的写保护,但程序中正常的写flash的操作也将会失败
li li33:
我发现了解决办法,只需在下载.hex文件时选中SmartRF Flash Programmer的Block debug commads,即可以实现flash的读取锁定!这个时候不需要设置write protect,在IAR编译的时候的也不需要设定Flash lock protection和Debugger interface lock。
li li33:
这个网站有问题,我这个回帖已经发布3遍了,不知道为什么在帖子中就是看不到。
我发现了解决办法,只需在下载.hex文件时选中SmartRF Flash Programmer的Block debug commads,即可以实现flash的读取锁定!这个时候不需要设置write protect,在IAR编译的时候的也不需要设定Flash lock protection和Debugger interface lock。
Yue TANG:
回复 li li33:
你IAR里也是一样啊。如果你用的flashprgorammer,这是地球人都知道的方法呀。