采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
Eric Ma:
mingxi,
1.可以采用下面的方式跳转:
#define Update (void (*)(void))0x3F7FF6
………………
在需要跳转时,
(*Update)();
这样就跳转到上面的这个地址中去了。
所以如果烧写完成之后,可以跳转到0x3F7FF6,然后开始执行。
2. 其他的没什么特殊的,只要注意用户程序和boot程序之间的跳转和相关判断就可以了。另外可以划出一个段给boot,这样就可以升级代码就可以固化了。
Eric
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
mingxi mo:
回复 Eric Ma:
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)执行?
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
10#:
回复 mingxi mo:
1. 像上面Eric提到的一样,只要你跳转到了那个地址,后面它就自动会执行到App的main();
2. 只要对App自己使用到的flash和RAM进行指定即可,不让它与boot的flash和RAM重叠。
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
mingxi mo:
回复 10#:
感谢答复!但还是不明白?
1、0x3F7FF6地址,我看TI 例程里的CMD文件是
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
在Boot程序跳转时,跳到那个地址会跳到APP程序的main么?为什么?能否具体说明?
2、FLASH划为两块分别给boot与app能理解,但RAM如何分配?
希望高手专家能给出例程,万分感谢!
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
10#:
回复 mingxi mo:
1,是的,会跳转到main(),因为该地址里存有执行C语言环境初始化以及其它功能的代码,然后就会执行这个跳转,具体请参考BOOT ROM手册或controlsuite路径下的文档和例子(以F2806x为例:C:\ti\controlSUITE\libs\utilities\boot_rom\2806x);
2,RAM可以随意分配,只要够用且不互相冲突就可以了。
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
mingxi mo:
回复 10#:
感谢您的回答,但是还是有问题:
1,我理解是该语句无法跳到APP的main(),只会跳到Boot中的main。因为两个(boot与app)工程的CMD文件都是BEGIN
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
请问谁有实际做过类似的工程呢?能否提供两个工程的文件(Boot与APP)的一个简例子
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
10#:
回复 mingxi mo:
是的,只能跳到一个的main(),确切地说就是boot的main,然后需要在里面判断是进行程序升级还是到app的主程序运行。
只能有一个工程的cmd里有BEGIN,就是boot.
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
hua zheng:
回复 10#:
那如果是到APP主程序运行呢,这个时候应该怎么跳转,总不至于又跳到begin里面然后又回boot的main吧,这个点不是很理解
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
hua zheng:
回复 10#:
我试过copy完后跳到数据流里的入口地址结果他又返回到boot的main里面,然后接下来该如何跳到app去运行,我试过一直都是返回到boot的main里。
采用F28027开发一个项目,要求后续产品能在线升级,参考了相资料及ARM上的做法的思路
将工程分为两部分(boot与app),分别烧录在DSP片上FLASH的前后两个不同区域。
boot包括底层通讯驱与FLASH读写,app是真正最后执行的部分
即用“程序”烧写“程序”有一个问题请教?
即前一程序(boot)完成Flash烧写或自检完成后,如何跳转到后一程序(APP)?
1、程序跳转有什么指令实现?
2、APP程序开发调试中除了对CMD文件中对FLASH进行地址分配外,还需要什么特殊处理?
hua zheng:
你好,不知道你后面boot和app这个问题解决了吗?我现在遇到和你一样的问题,能讨论下吗?qq:342257828