AM335x裸机开发:如何加载运行不同的工程;
需求: 在SPL后的BOT工程里,实现APP的升级更新功能; 需要在BOT工程里,加载APP工程并运行;
开发硬件: AM3352,SPI0.SPIFLASH;
开发软件: CCS;
参考AM335X_StarterWare,建立CCS裸机工程:
工程1:SPL工程:ROM上电启动(从SPI FLASH里加载代码到内部RAM运行); 内部RAM空间;
工程2:BOT工程:SPL工程代码实现从SPI FLASH里加载BOT并跳转运行; 外部DDR.BOT空间;
工程3:APP工程:BOT工程代码实现从SPI FLASH里加载APP并跳转运行; 外部DDR.APP空间;
注1:SPL工程是没有开启MMU和CACHE; BOT和APP有开启;
注2:APP工程用仿真器下载能正常工作;
SPL加载并跳转,能正常运行BOT工程;
BOT加载并跳转,不能正常运行APP工程: 正常一般是在BOT加载APP代码到DDR.APP空间后,用指令跳转:
int JumpApp(void)
{
CacheDisable(CACHE_ALL); // 调试测试,关闭CACHE;
IntMasterIRQDisable();//调试测试,关闭总中断;
IntAINTCInit();//调试测试,初始化中断;
(*(void (*)(void))(0x81C00000);// 跳转到APP
for(;;);
return 0;
}
但实际没有正常工作(APP工程没有运行);
分析:
可能是MMU和CACHE原因,但尝试过在跳转前失效和回写CACHE等操作,再跳转也不行;
谢谢!