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.
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
Hi Eric,
感谢您的回复,思路基本明白了,问题还是具体操作上:
例如在TI例程,的F28027.CMD文件里:
FLASHD : origin = 0x3F0000, length = 0x002000 /* on-chip FLASH */
FLASHC : origin = 0x3F2000, length = 0x002000 /* on-chip FLASH */
FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH */
我想把boot程序放在FLASHA中,将用户程序放在FLASHC中。
1.在boot程序的project里,执行跳转判断后,如何跳到FLASHC中用户程序的main开始执行?
2.在APP程序的prject里,除将cmd文件中SECTIONS中 Allocate 的FLASHA改成FLASHC外,还要哪些操作?
能否帮忙分别给出boot与app两个简单的demo例程,只需实现上电后,从boot程序(FLASHA)运行一定时间后跳转到APP程序(FLASHC)执行?
1. 像上面Eric提到的一样,只要你跳转到了那个地址,后面它就自动会执行到App的main();
2. 只要对App自己使用到的flash和RAM进行指定即可,不让它与boot的flash和RAM重叠。
1,是的,会跳转到main(),因为该地址里存有执行C语言环境初始化以及其它功能的代码,然后就会执行这个跳转,具体请参考BOOT ROM手册或controlsuite路径下的文档和例子(以F2806x为例:C:\ti\controlSUITE\libs\utilities\boot_rom\2806x);
2,RAM可以随意分配,只要够用且不互相冲突就可以了。
是的,只能跳到一个的main(),确切地说就是boot的main,然后需要在里面判断是进行程序升级还是到app的主程序运行。
只能有一个工程的cmd里有BEGIN,就是boot.