This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x裸机开发:如何加载运行不同的工程;

Other Parts Discussed in Thread: AM3352

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等操作,再跳转也不行;

谢谢!