搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32F1] 关于bin文件追加CRC的方案

[复制链接]
174|8
 楼主 | 2020-9-25 14:35 | 显示全部楼层 |阅读模式
我用的STM32CUBEIDE,我知道keil可以运行脚本,来追加32位的crc。
STM32CUBEIDE不知道行不行,不行的话,我可以用py脚本手动来添加。
问题是,32位的crc值应该加在上面地方。

1.加在bin文件末尾。如果直接加在末尾,在OTA的时候,这最后的四个字节要不要烧写进flash?会不会对程序功能有影响?
2.因为固件有分区,加载分区的末尾。那么总共100k的分区,bin只有50k,如何在100k的地方加32位的CRC?把空余部分全部补0?

@dirtwillfly @m564522634 @ufbycd @xyz549040622 求大佬指点

使用特权

评论回复

评论

dirtwillfly 2020-9-25 21:51 回复TA
没用到的地址随便加 
| 2020-9-25 14:45 | 显示全部楼层
加在bin文件末尾应该不会有问题,正常的程序逻辑是不会执行到bin结尾后面的位置的,所以这个地区的值是全FF,还是你自己规定的值,对代码本身没有意义

使用特权

评论回复
 楼主 | 2020-9-25 15:00 | 显示全部楼层
sonicll 发表于 2020-9-25 14:45
加在bin文件末尾应该不会有问题,正常的程序逻辑是不会执行到bin结尾后面的位置的,所以这个地区的值是全FF ...

123.png
这是我的bin文件结尾,是在这个后面追加?
这最后的0100 0000是无用的吗?追加了crc的值不会出错么

使用特权

评论回复
| 2020-9-25 15:18 | 显示全部楼层
djz1992 发表于 2020-9-25 15:00
这是我的bin文件结尾,是在这个后面追加?
这最后的0100 0000是无用的吗?追加了crc的值不会出错么
...

0100 0000应该是有用数据,你加在后面不会有影响,bin文件末尾的部分一般都是变量值,变量本身都有定义好的位宽,不会越界读取到你后面的值

使用特权

评论回复
| 2020-9-25 15:25 | 显示全部楼层
你换个思路想想,bin文件烧进flash后,bin之后的flash空间,数值可能是0xFF,如果你的CRC会影响程序,那这些0xFF理论上也会影响程序啊,但实际上并不会

使用特权

评论回复
| 2020-9-25 15:26 | 显示全部楼层
可以直接在结尾追加。

不过我一般的做法是在文件最前端增加固定的256字节,文件长度、CRC校验值、文件简略说明等信息都放里面,升级时用它判断文件是否合法,确认后再截取掉。

使用特权

评论回复
| 2020-9-27 08:49 | 显示全部楼层
你想要用srecord

使用特权

评论回复
 楼主 | 2020-9-28 08:16 | 显示全部楼层
本帖最后由 djz1992 于 2020-9-28 08:19 编辑
dalarang 发表于 2020-9-25 15:26
可以直接在结尾追加。

不过我一般的做法是在文件最前端增加固定的256字节,文件长度、CRC校验值、文件简略 ...
怎么通过脚本在开头加呢?
在前端加的话,是在划区的时候不把这部分划进APP区吗?就是APP的开头往后移一段?这就跟在划区末尾加一个问题,100K的划区,程序只有50K,怎么通过脚本在100K的地方加CRC的值?用脚本把51-99K全部填充00?



使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表