Part Number:TMS320F28062Other Parts Discussed in Thread:C2000WARE
在做Bootloader升级时,现在通过CCS10(插上TI的仿真器)全速运行或者是断点运行,都能够实现正常烧录了。但是拔掉仿真器,直接上电后,进入APP(FLASH的SECTION B——SECTION H)区域运行,后发指令进入Bootloader(FLASH的SECTION A)区域模式,但是整个升级过程停在erase APP(SECTION B——SECTION H)这一步,erase返回一个擦除失败的状态,并且验证了APP程序确实没有被擦除。
关键是通过CCS10仿真运行时,程序应该是在RAM中运行的,这一套升级过程(包含erase和program)都是已经实现了功能,无任何异常。但是为什么现在程序从FLASH运行,就无法擦除FLASH的APP区域了呢?请问下这个问题可能是什么原因造成的?谢谢!
Green Deng:
你好,C2000操作flash函数:flashAPI,是需要运行在ram中的,所以当你将程序烧写进flash之后,为了保证flashAPI函数运行在ram中,需要加上memcpy(或者memcopy)函数将这部分代码从flash搬移到ram中运行。你的问题可能是没有搬移?
具体方法可以参考flashAPI的说明和例程,路径如下:C:\ti\c2000\C2000Ware_4_00_00_00\libraries\flash_api\f2806x
,
siqi wen:
感谢Green Deng的回复,确实是FLASHAPI函数需要放在RAM中运行,否则该函数放在FLASH中会出现奇怪的现象。使用memcpy是肯定可以的,但是有些bootloader程序也会将部分重要的函数或者是库单独放在RAM中,只要能确定FLASHAPI函数在RAM中,该问题就不存在了。