本文转自公众号,欢迎关注
https://mp.weixin.qq.com/s/uzaGLFTDBAn8wyR84yaiIw
1.1 下载SRecord
进入网址https://sourceforge.net/projects/srecord/,下载最新版本SRecord。
1.2 解压压缩包,复制下面的exe文件到工程下
与uvprojx工程文件保持同一目录
1)新建名字为crchex2bin的txt文件,改后缀名为bat。
2)在crchex2bin.bat下添加以下内容
copy .XXXX_XXXoutputXXXX_XXX.hex .
.srec_cat .XXXX_XXX.hex -intel -crop 0x08000000 0x0803FFFC -fill 0x00 0x08000000 0x0803FFFC -crc32-l-e 0x0803FFFC -o .XXXX_XXX_Check.hex -intel -obs=16
.srec_cat .XXXX_XXX.hex -intel -offset -0x8000000 -o .XXXX_XXX.bin -binary
.srec_cat .XXXX_XXX_Check.hex -intel -offset -0x8000000 -o .XXXX_XXX_Check.bin -binary
其中copy .XXXX_XXXoutputXXXX_XXX.hex .表示将optput下生成的hex文件复制到工程所在目录。
.srec_cat .XXXX_XXX.hex -intel -crop 0x08000000 0x0803FFFC -fill 0x00 0x08000000 0x0803FFFC -crc32-l-e 0x0803FFFC -o .XXXX_XXX_Check.hex -intel -obs=16
表示将intel格式的XXXX_XXX.hex的地址 0x08000000 到0x0803FFFC处的值复制到新的文件XXXX_XXX_Check.hex的 0x08000000 到0x0803FFFC地址处,不足处填充0x00。并且对原始数据的地址 0x08000000 到0x0803FFFC处的值计算小端模式crc32值,填充在新的文件的0x0803FFFC地址处。新的文件的格式也是intel,并且一行记录16个字节的数据。
.srec_cat .XXXX_XXX.hex -intel -offset -0x8000000 -o .XXXX_XXX.bin -binary
表示将hex文件转换成bin文件,地址偏移-0x08000000,即hex文件的地址0x08000000,对应到bin文件的地址0。
.srec_cat .XXXX_XXX_Check.hex -intel -offset -0x8000000 -o .XXXX_XXX_Check.bin -binary
同上
编译后会自动调用脚本添加crc值和hex转bin文件。
生成文件如下:
使用文本比较工具Araxis Merge对比TY38_EPS_Check.hex和TY38_EPS.hex,发现在后面填充了0x00,并且在最后填充了CRC值0xA055E2F8
使用二进制编辑工具010 Editor 对比XXXX_XXX_Check.bin和XXXX_XXX.bin,发现在后面填充了0x00,并且在最后填充了CRC值0xA055E2F8
在010 Editor中将TY38_EPS_Check.bin的最后四字节删除
另存为
tocheck.bin。
打开网页 http://www.atool9.com/file_hash.php
将tocheck.bin文件拖放到网页里,只勾选CRC32
查看crc值为0xA055E2F8。与自动计算的一致。
Keil官方文档《an277.pdf》
二进制编辑工具《010 Editor》
文本比较工具《Araxis Merge》
CRC在线工具《http://www.atool9.com/file_hash.php》
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !