前几天准备搞个28335的UCOS II移植,由于对CSM的功能不是很了解,导致了28335被锁死。在这要感谢下电子发烧友的1009109508 大神,以及回帖的nicholas1233 。用其方法,成功解决了芯片锁死问题!帖子地址:http://bbs.**/jishu_380974_1_1.html下面我来还原一下事故现场:本人比较懒,所以从网上找了个28335的UCOS II工程文件,通过ccs4.1.2进行编译,结果出现了好多错误,经过不断修改,错误终于减少到了个位数。
于是,顺藤摸瓜,对F28335.cmd文件进行了修改,心想,BEGIN空间不是不够吗,那好,我就再给你200,F28335.cmd原始文件如图2所示。修改过的F28335.cmd如图3所示。
编译通过了,但有一个警告:
warning: creating ".stack" section with default size of 0x400; use the -stack
option to change the default size
之前玩STM32留下了个坏观念,即警告不是错误的原则,加上编译通过生成了.Out文件的喜悦,把警告就给忽略了。于是就稀里糊涂的把.out给 下载进去了,下载过程中又出现了疑似警告的对话框,在此就不再复现了。最后,操作系统的四个任务只执行了两个,想返回修改,发现仿真器已 经不能正常连接了,按照错误提示,意识到芯片可能被锁死了。。。
读到这可能有人会问,怎么才能确定芯片被锁了呢,根据我个人的经历,可通过一下几个条件判断:
1.仿真器连接不上
2.点仿真器连接按钮后对芯片进行复位,仿真器成功连接
3.编译器提示:
4.C28xx: Flash Programmer: Error erasing flash memory. Device is locked or not connected. Operation cancelled
C28xx: Flash Programmer: Error erasing Flash memory.
C28xx: Flash Programmer: Device is locked or not connected. Operation cancelled.
提示以上信息的基本上就可以判断为芯片被锁死
下面来说说解锁(本人ccs4.1.2版本)
按1009109508帖子的步骤,在ccs4.1.2版本下无法生成记事本文件,整好手里有个3.3版的环境,因此在3.3下成功生成了.TXT。按照该帖子的思想,再结合图3,我的密码区显然被BEGIN的内容覆盖了,而BEGIN的地址为0x0033fff6,所以搜索该地址,如图4所示。0x0073即为0x0033fff6地址的内容,依次类推,0x0033fff8内容即为0073、 0x0033fff9内容为931C.
回到开发环境,点击TOOLS->on-chip-flash
完成解锁
|