OpenEdv-开源电子网

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

stm32在线升级过程中突然中断的问题?

[复制链接]

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
发表于 2018-3-14 11:43:25 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 追月 于 2018-3-14 13:19 编辑

在程序中加入了在线升级功能,但是发现一个问题,在在线升级过程中如果在线升级突然中断,虽然可以再次升级,但是万一一直中断就就一直进不来用户程序,现在的想法是在在线升级中如果中断后2min还未再次升级则将在线升级标志位清零,跳转到原来的用户函数中,我用在线仿真发现在跳转的时候会进入hardfault,可能是已经改变了用户程序,请问在线升级时如何保存完整的用户程序备用呢?

最佳答案

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

我倒是做过,分成bootloder、用户程序区A、远程升级程序存放区B、远程升级参数存放区C; 用户程序通过串口接收在线升级包并写入到A区,同时计算CRC16存入C区,所有搞定后重启。 在bootloder中检测标志位并进行程序copy flash升级操作,稳妥起见先读一遍B区程序并计算CRC16,对比存放到C区的CRC16,不同则舍弃升级跳转执行原程序; CRC16相同则将B区程序copy到A区flash,然后再跳转。 一般除非升级过程中突然断电,否则不会造成 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-3-14 11:43:26 | 显示全部楼层
我倒是做过,分成bootloder、用户程序区A、远程升级程序存放区B、远程升级参数存放区C;
用户程序通过串口接收在线升级包并写入到A区,同时计算CRC16存入C区,所有搞定后重启。
在bootloder中检测标志位并进行程序copy flash升级操作,稳妥起见先读一遍B区程序并计算CRC16,对比存放到C区的CRC16,不同则舍弃升级跳转执行原程序;
CRC16相同则将B区程序copy到A区flash,然后再跳转。
一般除非升级过程中突然断电,否则不会造成升级失败
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-3-14 14:14:10 | 显示全部楼层
没看懂你说什么,一般而言APP获取并存储所有升级包到EEPROM或FLASH,然后跳转到bootloader将升级包写入到APP应用程序区,如果bootloader这时候写入失败被打断,则APP应用程序是已经被覆盖了一部分,确实不能继续跳转执行。解决方法要么你升级前将APP用户程序读出来存放起来,升级失败再将它写回去,要么就防止升级被打断如升级时关掉所有中断。
回复

使用道具 举报

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
 楼主| 发表于 2018-3-14 15:54:45 | 显示全部楼层
一起哈皮 发表于 2018-3-14 14:14
没看懂你说什么,一般而言APP获取并存储所有升级包到EEPROM或FLASH,然后跳转到bootloader将升级包写入到AP ...

现在就是想将flash分成三个部分,分别是BootLoader区,程序备份区和运行区,但是不知道怎么操作
回复

使用道具 举报

40

主题

150

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6198
金钱
6198
注册时间
2015-7-18
在线时间
449 小时
 楼主| 发表于 2018-3-14 17:38:35 | 显示全部楼层
一起哈皮 发表于 2018-3-14 16:39
我倒是做过,分成bootloder、用户程序区A、远程升级程序存放区B、远程升级参数存放区C;
用户程序通过串口 ...

我现在也想这样弄,你那有没有操作flash的资料
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 10:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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