找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 818|回复: 3
打印 上一主题 下一主题
收起左侧

完整的STM32单片机bin文件后面加入多余的数据会导致程序出错?

[复制链接]
跳转到指定楼层
楼主
ID:585428 发表于 2022-9-23 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整的bin文件后面加入多余的数据会导致程序出错是什么原因。


疑惑来源:

最近在做stm32 iap升级。用的sd卡升级。
因为在最后一个包处理的时候偷懒了,所以有了疑惑。
sd卡读取升级包时,读取固定长度2048个字节的数据+2字节校验,然后写入2048个字节数据。最后一个包读取时,通过取余获取最后一个包的长度x,然后x个字节写入到数组,最后仍旧写入2048个字节的数据。
这样最后写入到flash中的最后一个包,x字节后的数据时上一个包的,没有覆盖。
升级后的现象是开机了,然后菜单也能操作,但是到·某些动作就白屏卡死了。

后来我做了处理,最后一个包时,整个数组先memset一下置0xff,但是多写了2个字节的校验,有的程序出错,有的程序可以运行。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:879348 发表于 2022-9-24 08:25 | 只看该作者
不懂你在说什么,只要把bin文件完整下载到flash就行,如果没有完整就是boot程序本身有问题,至于你说的X后面是任何数据,对整个程序没有任何影响
回复

使用道具 举报

板凳
ID:94031 发表于 2022-9-24 09:39 | 只看该作者
升级包数据的形成与读取都是事前约定好的,在没有弄清原理前是不能随便改数据的。
回复

使用道具 举报

地板
ID:514901 发表于 2022-9-24 14:05 | 只看该作者
程序写得不规范呗,按理说程序范围外的地址是不会运行到的。按照你说的出现这种情况更可能是中断向量表没设置好的原因
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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