OpenEdv-开源电子网

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

串口IAP升级之后,关机再重启板子为什么不会自动跳转到上次升级的程序运行呢??

[复制链接]

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-3-20
在线时间
16 小时
发表于 2020-3-25 23:02:24 | 显示全部楼层 |阅读模式
1金钱
串口IAP升级成功运行后,关机再重启板子为什么不会自动跳转到上次升级的程序运行呢??这是为什么呢
升级的时候跳转成功了,但板子只要关机重启,就不会跳转到新升级的程序运行。板子就没反应了。为什么?
谁知道啥原因啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3627
金钱
3627
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-3-25 23:13:59 | 显示全部楼层
需要按下对应的按键才会运行对应的APP
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
发表于 2020-3-26 08:56:47 | 显示全部楼层
芯片上电后,都是从0x8000000地址开始的(硬件决定的),也就是bootloder开始,是否需要执行APP程序(非0x8000000地址开始的程序)需要在bootloder中触发,原子用的是按键触发执行APP,你可以使用其他方式,比如判断flash中标志位,这样就可以实现自动切换APP程序了
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
发表于 2020-3-26 09:01:06 | 显示全部楼层
芯片上电后,程序都是从0x8000000地址开始的(由硬件决定的),也就是bootloder开始,想要执行APP程序(非0x8000000开始的程序),需要在bootloder中触发程序跳转。原子哥用的是按键触发,也可以自行修改为其他触发方式,比如判断flash中的标志位触发,这样就可以实现上电自动切换APP程序了。
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-3-20
在线时间
16 小时
 楼主| 发表于 2020-3-27 00:01:02 | 显示全部楼层
chaifuwu 发表于 2020-3-26 09:01
芯片上电后,程序都是从0x8000000地址开始的(由硬件决定的),也就是bootloder开始,想要执行APP程序(非0x ...

不太懂你说的这个flash标志位?是在写flash完成之后,自己加个标志位?还是库函数里调用那个函数来判断呢??
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-3-20
在线时间
16 小时
 楼主| 发表于 2020-3-27 00:06:56 | 显示全部楼层
chaifuwu 发表于 2020-3-26 08:56
芯片上电后,都是从0x8000000地址开始的(硬件决定的),也就是bootloder开始,是否需要执行APP程序(非0x8 ...

还是有点不太懂。现在是我串口发个命令,成功的把APP写到flash当中,写完能可以自动跳转到这个APP自动运行,而不用我再按键或再发命令去触发跳转。
下次开机之后,我不升级的情况下,也会自动运行我上次升级成功的代码。不用再发任何命令和操作。这个具体是怎么实现的呢?
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-3-20
在线时间
16 小时
 楼主| 发表于 2020-3-27 00:09:40 | 显示全部楼层
hou18 发表于 2020-3-25 23:13
需要按下对应的按键才会运行对应的APP

我的问题是,程序下载成功,怎样能让它自动跳转运行,不用人工干预。下次从新开机也会自动运行APP程序,不用再让人工干预
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-3-20
在线时间
16 小时
 楼主| 发表于 2020-3-27 00:13:56 | 显示全部楼层
这个问题,讲视频的原子哥也解答一下啊,视频怎么就没讲到这个问题啊?疏忽掉了吧,很常见很使用的一个操作,视频怎么都没讲一下啊?具体解答一下啊!!!!!@@@@@正点原子
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-5-20 13:57:20 | 显示全部楼层
我觉得可以模拟电脑的启动过程,设置一个BIOS按键,如果需要升级APP程序的话就在启动的时候快速的按下这个按键(可以在bootloder设置一个等待时间,比如几百ms)。如果在规定的时间不按下按键,则bootloder默认无需升级程序,自动跳转APP程序地址执行相应程序。
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1433
金钱
1433
注册时间
2020-5-12
在线时间
394 小时
发表于 2020-5-20 15:06:12 | 显示全部楼层
flash分3个区,iap区,标识区,app区。iap区放iap代码,标识区主要存放是否存在app程序的标志。app区存放app代码。在iap程序中,读取标识区的数据,查看是否有app代码,有则进行跳转。无则运行在iap区,等待升级。
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2687
金钱
2687
注册时间
2017-9-8
在线时间
468 小时
发表于 2020-5-20 15:11:05 | 显示全部楼层
这个很简单,自己做个标志位,分为需要升级和不需要升级,BOOTLOADER里判断一下,需要升级的就下载APP,验证完后跳转APP,不需要就直接跳转APP
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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