Part Number:TMS320F28035Other Parts Discussed in Thread:C2000WARE
我的目标:将FLASH扇区的 A&B C&D F&G分布存放三组程序,每次上电通过A&B程序运行后与外部通讯,选择跳转运行C&D或者F&G。
将FLASH_A&B扇区存放作为二次boot程序,通过仿真器烧写,cmd中 SECTIONS 和 BEGIN 为 A 扇区。C&D扇区程序的cmd修改,将 BEGIN 放入扇区C的origin+0x1FF6,SECTIONS放入C和D,由通讯将hex烧写进相应位置。
问题:
1 在跳转时,将指针指向C的origin地址就可以吗?
2 跳转后A&B所占用的RAM和堆栈会自己释放吗?详细流程是怎么样的?会不会导致DSP运行不稳,出现未知异常?
3 通过仿真器选择不擦除扇区A&B,是否也可以将程序固话到 C&D?并且仿真器可以在线联调?
是否有相关文档讲述此方面问题?对于dsp内部跳转到另一个扇区具体怎么运作的感觉不清晰。
我的跳转通过定义 #define Jump_Flash_C_Program_Begin (void(*)(void))FLASH_C_ADDRESS
FLASH_C_ADDRESS为cmd的origin地址。
Green Deng:
1、是的,跳转到下载的APP入口地址
2、这个问题还真没留意过,找了一下也没找到相关说明
3、可以实现。在线联调是指什么?
其实可以参考一下例程,TI有提供一个基于can的二次bootloader例程:C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2803x\examples\c28\f2803x_can_flash_kernel
,
Camel Santo:
1、跳转到下载的APP入口地址?是指APP程序CMD编译的 BEGIN (origin+0x1FF6)地址 还是定义的扇区origin地址?
3、在线联调就是用仿真器可以在线观察变量,设置断点,修改全局变量数值。。等操作。
这个can_flash_kernel里面的Exit_Boot.asm不是很理解,是不是只需要在main最后return 写入要跳入的目标扇区的origin地址就可以了?