OpenEdv-开源电子网

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

stm32如何对烧录的代码做一个备份?

[复制链接]

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
发表于 2018-3-16 09:10:06 | 显示全部楼层 |阅读模式
1金钱
stm32如何对烧录的代码做一个备份,当程序跑飞后,将备份的程序拷贝出来继续运行?大家有没有好的办法

最佳答案

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

1, IAP+APP1+APP2,每个APP有一个版本号。比如存放在固定地址。总是运行高版本的APP. 2,更新的时候,交替更新,比如当前正在用APP1,则更新APP2, 待APP2更新完成,标记为高版本,复位重启即可运行APP2。 3,假设APP2更新过程出现错误,比如网络卡死,IAP代码要做处理,能识别这种长时间无法更新的情况,则标记APP2更新失败,版本号清零。然后复位重启,继续运行APP1.等待下次更新。 4,下次更新到来,因为运行APP1,所以更新AP ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-3-16 09:10:07 | 显示全部楼层
1, IAP+APP1+APP2,每个APP有一个版本号。比如存放在固定地址。总是运行高版本的APP.
2,更新的时候,交替更新,比如当前正在用APP1,则更新APP2, 待APP2更新完成,标记为高版本,复位重启即可运行APP2。
3,假设APP2更新过程出现错误,比如网络卡死,IAP代码要做处理,能识别这种长时间无法更新的情况,则标记APP2更新失败,版本号清零。然后复位重启,继续运行APP1.等待下次更新。
4,下次更新到来,因为运行APP1,所以更新APP2,更新成功同第二点。更新失败同第三点。

至此,总是不会出现无法运行APP的情况。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13114
金钱
13114
注册时间
2012-11-26
在线时间
3812 小时
发表于 2018-3-16 09:13:54 | 显示全部楼层
麻烦学习下语文,梳理下你想描述的内容
回复

使用道具 举报

2

主题

45

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4542
金钱
4542
注册时间
2013-12-27
在线时间
491 小时
发表于 2018-3-16 09:20:44 | 显示全部楼层
备份?  传说中有个东西叫看门狗。。。。。。
回复

使用道具 举报

2

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2017-12-12
在线时间
81 小时
发表于 2018-3-16 09:29:32 | 显示全部楼层
看门狗不是可以实现复位吗
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2018-3-16 09:52:07 | 显示全部楼层
用备份就不会跑飞了吗?
程序跑飞了就是程序没有写得足够好.
或者硬件设计不够好.造成的.备份程序没有用.
看门狗也没有用.
回复

使用道具 举报

2

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2017-12-12
在线时间
81 小时
发表于 2018-3-16 10:31:19 | 显示全部楼层
现在楼主的问题不是为什么会跑飞,而是跑飞后怎么办?
回复

使用道具 举报

6

主题

119

帖子

0

精华

高级会员

Rank: 4

积分
712
金钱
712
注册时间
2015-11-26
在线时间
139 小时
发表于 2018-3-16 10:36:27 | 显示全部楼层
新手起航 发表于 2018-3-16 10:31
现在楼主的问题不是为什么会跑飞,而是跑飞后怎么办?

跑飞后复位重启呗  然后找跑飞的原因     他这种想法治标不治本
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-3-16 14:56:27 | 显示全部楼层
程序如何判断它自己跑飞了?如果判断不了,有备份也白搭。
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-3-16 14:59:40 | 显示全部楼层
用iap就可以
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复

使用道具 举报

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
 楼主| 发表于 2018-3-16 15:32:53 | 显示全部楼层
我重新梳理一下我的问题,是这样的,我的工程中加入了在线升级,在在线升级中断后会一直卡在在线升级中,直到在线升级完成后,但是如果由于网络原因在线升级一直不能完成的话,我想强制跳出在线升级,运行在线升级之前的程序,就是这样,需要保存一份代码做准备。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-16 17:20:44 | 显示全部楼层
可以用用看门狗
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-3-16 17:59:33 | 显示全部楼层
我觉得你要解决的重点问题在于升级失败为什么就不能继续运行原程序了,这样设计本来就很不合理,你要将在bootloder还是APP做的升级、升级详细步骤,具体哪个地方不会做等等详细列出来,最好写个模板或贴些代码让我们知道你的思路。
你就笼统的问个升级中断怎么办,如何备份程序,你都能写IAP了,flash页读再页写都不会说不过去吧,所以具体哪里不懂要细说啊
回复

使用道具 举报

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
 楼主| 发表于 2018-3-17 08:45:00 | 显示全部楼层
正点原子 发表于 2018-3-16 09:10
1, IAP+APP1+APP2,每个APP有一个版本号。比如存放在固定地址。总是运行高版本的APP.
2,更新的时候,交 ...

有没有这样的例程呢或者资料呢?
回复

使用道具 举报

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
 楼主| 发表于 2018-3-17 08:54:11 | 显示全部楼层
正点原子 发表于 2018-3-16 09:10
1, IAP+APP1+APP2,每个APP有一个版本号。比如存放在固定地址。总是运行高版本的APP.
2,更新的时候,交 ...

我现在也是这样做的,但是在跳转的时候就进入hardfault了,暂时未找到原因
回复

使用道具 举报

2

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2017-12-12
在线时间
81 小时
发表于 2018-3-17 09:32:14 | 显示全部楼层
原子论坛有几篇很好的IAP帖子,你找找看
回复

使用道具 举报

6

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2016-1-7
在线时间
54 小时
发表于 2018-3-17 16:12:55 | 显示全部楼层
这样做512K完全不够用......
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13114
金钱
13114
注册时间
2012-11-26
在线时间
3812 小时
发表于 2018-3-17 16:43:48 | 显示全部楼层
落尘浅羽 发表于 2018-3-17 16:12
这样做512K完全不够用......

过大的话,可以存在外部flash
学无止境
回复

使用道具 举报

2

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2018-3-3
在线时间
7 小时
发表于 2018-3-19 14:09:42 来自手机 | 显示全部楼层
用bootloader。跑飞了计算crc,坏掉就从外部rom里面读出固件重刷。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 00:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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