打印
[STM32F1]

关于bin文件追加CRC的方案

[复制链接]
942|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
djz1992|  楼主 | 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
没用到的地址随便加 
沙发
sonicll| | 2020-9-25 14:45 | 只看该作者
加在bin文件末尾应该不会有问题,正常的程序逻辑是不会执行到bin结尾后面的位置的,所以这个地区的值是全FF,还是你自己规定的值,对代码本身没有意义

使用特权

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


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

使用特权

评论回复
地板
sonicll| | 2020-9-25 15:18 | 只看该作者
djz1992 发表于 2020-9-25 15:00
这是我的bin文件结尾,是在这个后面追加?
这最后的0100 0000是无用的吗?追加了crc的值不会出错么
...

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

使用特权

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

使用特权

评论回复
6
dalarang| | 2020-9-25 15:26 | 只看该作者
可以直接在结尾追加。

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

使用特权

评论回复
7
ykwym| | 2020-9-27 08:49 | 只看该作者
你想要用srecord

使用特权

评论回复
8
djz1992|  楼主 | 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?



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生苦短,冬日苦长,正是青葱,却无骄阳

115

主题

620

帖子

5

粉丝