Other Parts Discussed in Thread: C2000WARE
F021库版本为1.54,功能是在固件中擦除并重新编程某些扇区,用于参数保存,固件升级等。
目前现象是:使用CCS加载.out文件,然后直接运行,FLASH擦除编程一切正常。
同样的工程同样的cmd和out文件,使用CCS加载以后,然后拔掉仿真器重新上电,FLASH会进入一种类似“锁死”的状态,无法擦除也无法编程。
检查擦除以后Fapi_getFsmStatus的返回值,擦除空Sector返回0x0810,擦除非空Sector返回0x0C10,根据FMSTAT寄存器描述:spruhm9f文档的3.15.21.6节
涉及FMSTAT的三个位:
- bit11 文档上是保留的
- bit10 EV表示擦除有错误
- bit4 CSTAT表示执行命令有错误
这几个位只是告诉用户出错了,具体什么错误并没有描述,并且bit11是保留的,文档并没有描述,对问题诊断并没有太大意义。
查看两种情况下的FLASH寄存器:
``` #重新上电无法擦除FLASH时FLASH控制寄存器 0x05F800 0200 0000 0000 0000 0000 0000 0000 0000 0x05F808 0000 0000 0000 0000 0000 0000 0000 0000 0x05F810 0000 0000 0000 0000 0000 0000 0000 0000 0x05F818 0000 0000 0000 0000 0000 0000 000F 0000 0x05F820 0003 0000 8001 0000 0001 0860 0000 0000 0x05F828 0000 0000 0000 0000 0000 0000 0000 0000 0x05F830 00FC 0000 55AA 0000 0000 0000 0000 0000 0x05F838 0000 0000 0000 0000 0000 0000 0000 0000 0x05F840 000B 0000 0055 00EB 0000 00DB 0000 000F 0x05F848 0716 0000 A000 0000 0004 0000 010A 0700 #CCS加载正常擦除时FLASH控制寄存器 0x05F800 0200 0000 0000 0000 0000 0000 0000 0000 0x05F808 0000 0000 0000 0000 0000 0000 0000 0000 0x05F810 0000 0000 0000 0000 0000 0000 0000 0000 0x05F818 0000 0000 0000 0000 0000 0000 000F 0000 0x05F820 0003 0000 8001 0000 0001 0860 0000 0000 0x05F828 0000 0000 0000 0000 0000 0000 0000 0000 0x05F830 00FC 0000 0000 0000 0000 0000 0000 0000 0x05F838 0000 0000 0000 0000 0000 0000 0000 0000 0x05F840 000B 0000 008C 01E9 0000 01BE 0000 0000 0x05F848 071B 0000 9000 0000 0004 0000 010A 0700 ```
文档上列出的寄存器并没有明显异常,但是确实有一些地址不同,这些地址没有文档描述。
如何进一步诊断这个问题呢?