TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

谢谢!

Shine:

请问为什么要SPL和BOT两个工程?这两个工程不能合并成一个吗? 一个二次bootloader代码就能加载app工程。starterware里有一次bootloader,请参考下面的wiki网站。
processors.wiki.ti.com/…/AM335X_StarterWare_Booting_And_Flashing

user4467014:

回复 Shine:

SPL工程有代码限制,貌似说不能大于109K; 因此设计了个BOT来实现产线测试代码和APP升级代码等;
连接那个应该是相当于我SPL工程.谢谢!

Shine:

回复 user4467014:

109K是SPI flash的限制?二次bootloader代码做一些的外设初始化,一般不会很大,您的二次bootloader代码做很多事吗?

user4467014:

回复 Shine:

TRM里:

26.1.9.2 Boot Image Location and SizeThe boot image is downloaded directly into internal RAM at the location 0x402F0400 on GP devices. Themaximum size of downloaded image is 109 KB.

应该就是SPL加载的最大为109K的代码; 

您说的二次bootloader ,应该就是SPL工程.   

需要做板卡生产是的板卡的产线测试代码,以及APP升级更新等代码. 肯定超过109K大小的.

因此我才设计SPL(SRAM)—BOT(DDR)—APP(DDR) 这样;

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » AM335x裸机开发:如何加载运行不同的工程;
分享到: 更多 (0)