OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10935|回复: 13

有没哪位大哥弄过stm32的一个BootLoader和两个app程序的跳转啊?

[复制链接]

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
发表于 2016-11-30 18:11:19 | 显示全部楼层 |阅读模式
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位置上?
表达能力有限多多见谅哦
1.PNG

最佳答案

查看完整内容[请看2#楼]

你可以修改flash算法,利用仿真器将代码烧写到指定区域(注意擦除是整个扇区擦的,所以代码的起始地址,最好是一个扇区的起始地址,另外不要勾选全片擦除!),这可以解决你下载2个APP的问题,用仿真器下载。. 至于你说的两个APP互相跳转,当然是没有问题的,你只要逻辑上设计好,就OK的了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-30 18:11:20 | 显示全部楼层
你可以修改flash算法,利用仿真器将代码烧写到指定区域(注意擦除是整个扇区擦的,所以代码的起始地址,最好是一个扇区的起始地址,另外不要勾选全片擦除!),这可以解决你下载2个APP的问题,用仿真器下载。.
至于你说的两个APP互相跳转,当然是没有问题的,你只要逻辑上设计好,就OK的了。

回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-11-30 20:48:43 | 显示全部楼层
yklstudent 发表于 2016-11-30 19:43
能玩一个就能玩两个,不过觉得一般也用不着

理是这个理,主要是还需要用两个app来达到远程升级这个目的,如果只执行一个app的话还要对flash进行两次擦除和写入,时间久了,应该会对flash有影响吧。
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2016-12-1 09:30:19 | 显示全部楼层
shop60994719.taobao.com
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-12-1 10:12:54 | 显示全部楼层
密耳 发表于 2016-12-1 09:30
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-1255750307.9.yo68Ib&id=536369739835

你这个程序在编译链接app程序的时候要固定链接地址吗?
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1764
金钱
1764
注册时间
2015-6-11
在线时间
311 小时
发表于 2016-12-1 15:58:19 | 显示全部楼层
单靠KEIL目前没有这个功能,研发时都是下两次,不过量产后我是用UBIN(http://www.pc6.com/softview/SoftView_90998.html) 这个软件把BIN文件合成一个,用JLINK下载一次就可以
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-12-2 14:50:52 | 显示全部楼层
正点原子 发表于 2016-11-30 18:11
你可以修改flash算法,利用仿真器将代码烧写到指定区域(注意擦除是整个扇区擦的,所以代码的起始地址,最 ...

感谢原子哥的回帖
我的想法是说一般情况下就通过BootLoader读取一个标志位跳转到app1执行app1代码,突然某天想升级了,就在app1的代码中的一个下载功能把程序烧到app2的位置上更改标志位,下次运行的时候就从BootLoader读取标志位后跳到app2一直执行app2代码,以后又想升级了,再通过app2把程序下载app1的位置上,这样一直重复下去。然后就想说有没有办法把app的程序编译链接成一个位置无关的.bin文件。
想法有点天真,不知道可行的程度有多高
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-10-28
在线时间
26 小时
发表于 2016-12-2 15:01:27 | 显示全部楼层
我们这边折腾的是,从片外flash读,然后把原来的APP 备份到后面,从片外flash读过来的覆盖原来APP位置。
然后若是升级的APP启动失败则恢复原来的APP。
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-8-17
在线时间
8 小时
发表于 2016-12-2 15:13:37 | 显示全部楼层
当初搞MC9S12XS128的芯片的时候搞过,不过换成stm32汇编部分的代码估计都不一样了。
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-12-2 18:35:05 | 显示全部楼层
makc 发表于 2016-12-2 15:01
我们这边折腾的是,从片外flash读,然后把原来的APP 备份到后面,从片外flash读过来的覆盖原来APP位置。
...

那启动失败的时候,程序应该怎么去判断啊。我用得flash有512k,够用
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2016-11-29
在线时间
12 小时
 楼主| 发表于 2016-12-2 18:39:27 | 显示全部楼层
颠疯 发表于 2016-12-2 15:13
当初搞MC9S12XS128的芯片的时候搞过,不过换成stm32汇编部分的代码估计都不一样了。

流程应该都一样吧。你那有用到函数重定位吗?
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-8-17
在线时间
8 小时
发表于 2016-12-5 12:35:51 | 显示全部楼层
神的诱惑 发表于 2016-12-2 18:39
流程应该都一样吧。你那有用到函数重定位吗?

记不清了,大概就是我强制把app1放在一个地址,app2放在一个地址,上电的时候先启动app1,然后根据指令去更新app2或者直接运行app2。
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2015-11-23
在线时间
37 小时
发表于 2021-6-4 14:50:30 | 显示全部楼层
你好  你这个问题解决了嘛
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2020-8-5
在线时间
12 小时
发表于 2021-7-8 18:06:10 | 显示全部楼层
神的诱惑 发表于 2016-12-2 14:50
感谢原子哥的回帖
我的想法是说一般情况下就通过BootLoader读取一个标志位跳转到app1执行app1代码,突 ...

你这个功能实现了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 15:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表