Other Parts Discussed in Thread: C2000WARE
程序为Bootloader+应用层程序,单核。Bootloader区域为FLASH A-D,应用层区域为Flash E-K, 应用层中掉电数据保存区域为Flash L-N(通过CAN/SCI通信及Flash API完成在线数据更新)。
目前问题如下:当通过调试器下载并直接运行,观测Flash L-N区域和通信反馈数据,可以完成正常的Erase、Write等功能。拔掉调试器重新上电或通过通信及wdg配合完成复位后,flash相关的Erase\Write命令均执行不成功。
是否与Bootloader到App的跳转有关,是否可能是编译器优化了部分代码,如while(Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}语句等为进行判断,是否还有其他可能原因。
目前已经做过的测试如下:
1.bootloader程序中删除Flash驱动包的初始化,直接通过asm(" LB 0x088000")跳转进App程序,由App重新完成系统初始化等,问题依然存在。
2.取消Bootloaer程序,更改CMD问题,仅存在应用层程序,问题依然存在。
3.通过变量取值如res=Fapi_checkFsmForReady(),通过变量判断,排除编译器优化干扰等,问题依然存在。