初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2016-11-29
- 在线时间
- 12 小时
|
6金钱
最近在弄一个程序碰到个问题,就是编译app程序的时候一定要配置IAR里的一个地址,而且这个地址就是烧写程序到flash上的地址,有没有办法就是不配置IAR的地址信息,然后app程序随便下载到flash的某块地址上,通过BootLoader进行跳转。就是在片内flash的0x08000000上烧一个BootLoader,然后在0x08005000的地方上有个app1程序,在0x08012800的地址上有个app2程序。
执行过程的话是芯片上电运行bootloader,在BootLoader中判断一个标志位决定是跳转执行0x08005000的app1还是0x08012800的app2。如果执行0x08005000的app1,在app1中实现从远程将一个app程序写在0x08012800的flash让它成为app2,然后设置标准位,最后关闭中断软件复位,通过BootLoader跳转到app2去执行程序。
一句话就是通过app1程序下载app2程序然后复位执行app2程序,还可以通过app2程序下载app1程序然后复位执行app1程序
问题就是怎么编译app程序让app既可以放在app1位置也可以放在app2位置上?
表达能力有限多多见谅哦
|
最佳答案
查看完整内容[请看2#楼]
你可以修改flash算法,利用仿真器将代码烧写到指定区域(注意擦除是整个扇区擦的,所以代码的起始地址,最好是一个扇区的起始地址,另外不要勾选全片擦除!),这可以解决你下载2个APP的问题,用仿真器下载。.
至于你说的两个APP互相跳转,当然是没有问题的,你只要逻辑上设计好,就OK的了。
|