硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1049|回复: 3
收起左侧

[BOOT/IAP] 关于APP.bin 带CRC的问题

[复制链接]

12

主题

63

回帖

99

积分

初级会员

积分
99
发表于 2024-7-5 12:05:51 | 显示全部楼层 |阅读模式
本帖最后由 flying1104 于 2024-7-5 14:02 编辑

环境:
使用Bootloader写入带有CRC的app.bin
使用U盘读取后,写入
使用RL-FLASHFS 函数调用

现象:
在调用RL-FLASHFS函数写入的时候,发现在99%的时候,永远写入错误

分析:
排查发现写入CPU FLASH必须为32位对齐
正常使用生成的APP.bin是32位对齐的
而加了CRC后,是会在末尾增加4位的校验数据,造成不是32位数据包
因此造成了写入到99%时候会出错

发现:
然后看了例子,为什么没有出错
[C] 纯文本查看 复制代码
                TotalSize += bw;
                ucState = bsp_WriteCpuFlash((uint32_t)(AppAddr + Count*sizeof(tempbuf)),  (uint8_t *)tempbuf, bw);

其中tempbuf的大小位4096,永远为32位对齐

使用RL-FLASHFS的时候,修改成
[C] 纯文本查看 复制代码
uiReadCnt = fread(ucaBuff, sizeof(uint8_t), PAGE_SIZE, fin); 
ucState = bsp_WriteCpuFlash((uint32_t)(APP_ADDR + uiPageCnt * uiReadCnt), (uint8_t *)ucaBuff, uiReadCnt);

uiReadCnt 为实际读取到的数据大小,最终造成了读取到不一定是32位对齐

解决:
暂时的解决方法是读取字节数,然后判断差了多少个字节,在写入到片内FLASH后面增加相应的0x00填充到32位对齐

不知道还有没更方便的方案,尤其是能够在根源解决问题


3楼把根源的图片解析了一下
回复

使用道具 举报

5

主题

229

回帖

249

积分

高级会员

积分
249
发表于 2024-7-5 13:25:03 | 显示全部楼层
CRC不是keil编译完加载bin文件后面的吗?
然后写读取bin文件的时候不是可以获取到文件的长度的,写入STM32 FLASH 32字节写入的,咋会出错呢?
回复

使用道具 举报

12

主题

63

回帖

99

积分

初级会员

积分
99
 楼主| 发表于 2024-7-5 14:00:25 | 显示全部楼层
本帖最后由 flying1104 于 2024-7-5 14:35 编辑
旮旯旭 发表于 2024-7-5 13:25
CRC不是keil编译完加载bin文件后面的吗?
然后写读取bin文件的时候不是可以获取到文件的长度的,写入STM32 ...

2.png

左边为使用hex2bin生成的文件大小
659776/32 = 20618
右边为加入了crc后的文件大小
659780/32 = 20618.125
多了4个字节
这个是使用
[C] 纯文本查看 复制代码
copy Objects\output.hex .\output.hex

hex2bin output.hex

for /f %%i in ('dir /b output.bin') do (
set indexdx=%%~zi
)
ECHO %indexdx%

srec_cat.exe output.bin -Binary -crop 0 %indexdx%  -STM32_Little_Endian %indexdx%  -o app.bin -Binary


论坛的样例方式生成的
你说的读取bin获取到长度大小,然后依据读取的字节做相关的处理,是可以解决这个问题的
但根本原因在于生成的bin带CRC后不是32位对齐,不知道是否能在生成的过程中就把这个解决
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-7-6 08:23:03 | 显示全部楼层
flying1104 发表于 2024-7-5 14:00
左边为使用hex2bin生成的文件大小
659776/32 = 20618
右边为加入了crc后的文件大小

可以将原始固件bin手动编辑下补0,然后算CRC,凑齐32字节整数倍。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-15 02:14 , Processed in 0.041856 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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