这几天在使用STM32F050c6d的MCU进行移植开发,只有最新的版本才对这颗MCU支持,所以*更新到了最新的版本。MDK4.6跟Jlin4.56d的下载地址在我的资源里已经共享。安装完以后提示更新,更新之后被告知,Jlink为Clone。
解决办法如下:
1、重新烧写固件到Jlink,将原来V8.bin固件用Winhex打开,并找到偏移地址为0xff00为首地址4bytes修改为其他值,只要不为原来的11111117 或 805306163即可,因为更新后的固件对这两个固件SN进行了强制校验,修改为其他值即可完美解决问题,同时将0xff30后面的GDBFull对应改成GDBFULL,对应ASCII码为47 44 42 46 55 4C 4C,目的是跳过GDBFull检查。
1.1 另外一种灵活的修改SN的方法:将0xff00为起始地址的4Bytes修改为0xffffffff,同时将0xff30后面的GDBFull对应改成GDBFULL,对应ASCII码为47 44 42 46 55 4C 4C,目的是跳过GDBFull检查,保存修改好的固件文件。更新固件后,打开Commander,不理会更新,在Jlink命令后面输入
exec setsn = xxxxxxxx,所输入的sn为16进制,否则更新升级时会出现错误。 建议定义成你更新的时间,如20121121,这样就能追溯掉固件上次的时间。
2、此时安装了Segger4.65d的版本,打开JLink Commander,按要求提示更新,更新完之后即可正常使用最新的版本了。
PS:CM0加入读保护后,Segger的Unsecured Chip功能不能正常使用了,还未找到办法。跟ST的FAE联系后,建议使用ST Link的STVP来对Option Byte进行擦除,对RDP进行擦除。
更新固件之后,实测发现更容易掉固件了,之前的固件在同样的硬件平台使用半年都不掉一次,更新之后,平均估计半个月就会掉。还没找到问题所在,这样推理的话,只是跟固件相关。抑或是新的固件对硬件操作上有所更改所致?
注意:同时修改GDBFull为GDBFULL或其他字符,根据目前实测,一个月不掉固件,所以修改的地方除了SN,同时应当修改GDBFull字符。解决之前只修改SN后,常掉固件的问题。