你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何防止MCU通过串口IAP升级后变砖

[复制链接]
奏奏奏 提问时间:2019-6-10 17:43 /
目前计划的MCU串口IAP升级方案是这样的:
(1)串口通讯符合IAP升级指令,则转换为升级模式;
(2)升级模式中不断接收升级数据,每包数据最多100个字节,包含包头、校验码、写入FLASH地址、写入数据有效长度、写入数据内容;
(3)接收到的数据搬运到 程序备份区(与目前运行程序区一样大),将升级标记保存到FLASH中指定区域;
(4)重启,重新上电后从升级标记读取程序备份区开始地址,通过Bootloader跳转到这个开始地址运行程序;
(5)将程序备份区的数据复制搬运到 FLASH中 主程序区域;
(6)重启,重新上电后从升级标记读取知道本次切换回主程序区域运行。

但是,上面过程中,我最担心的就是因为升级数据包出错,导致步骤(4)或者步骤(6)无法正常工作,变成一开机就变砖了。
看各位有MCU升级经验的大佬带带我。先谢谢各位

收藏 评论4 发布时间:2019-6-10 17:43

举报

4个回答
yklstudent 回答时间:2019-6-10 18:31:29
本帖最后由 yklstudent-179403 于 2019-6-10 18:33 编辑

保留或者预留一种方式可以强制进入bootloader区,运行bootloader程序即使APPlication挂了,还可以运行bootloader进行升级
然后就是对整各application程序进行校验,如果传输中断某一帧出错,可以识别出来

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

奏奏奏 回答时间:2019-6-10 19:03:57
yklstudent-1794 发表于 2019-6-10 18:31
保留或者预留一种方式可以强制进入bootloader区,运行bootloader程序即使APPlication挂了,还可以运行bootl ...

整个APP程序所有数据进行校验和校验吗?
检验和应该是最简单的,相加后取低位就可以了。
废鱼 回答时间:2019-6-11 08:29:41
加和校验是最差的。可能会发生一致的时候。最好是加CRC校验,或者其他的高级校验方式。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

奏奏奏 回答时间:2019-6-11 09:24:51
安 发表于 2019-6-11 08:29
加和校验是最差的。可能会发生一致的时候。最好是加CRC校验,或者其他的高级校验方式。 ...

目前串口协议中用的是CRC16的校验方式,得到这个宝贵意见后我还是决定保持CRC16校验。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版