本文轉自公眾號,歡迎關注
https://mp.weixin.qq.com/s/uzaGLFTDBAn8wyR84yaiIw
1. 下載軟件
1.1 下載SRecord
進入網址https://sourceforge.net/projects/srecord/,下載最新版本SRecord。
1.2 解壓壓縮包,復制下面的exe文件到工程下
與uvprojx工程文件保持同一目錄
2. 配置MDK
2.1 編輯腳本
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
同上
2.2 使能配置生成hex文件
2.3 配置添加用戶腳本
3. 生成和驗證
3.1自動生成
編譯后會自動調用腳本添加crc值和hex轉bin文件。
生成文件如下:
3.2 校驗
使用文本比較工具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。與自動計算的一致。
4. 參考
Keil官方文檔《an277.pdf》
二進制編輯工具《010 Editor》
文本比較工具《Araxis Merge》
CRC在線工具《http://www.atool9.com/file_hash.php》
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5082文章
19122瀏覽量
305107 -
文件
+關注
關注
1文章
566瀏覽量
24737 -
MDK
+關注
關注
4文章
209瀏覽量
32066 -
腳本
+關注
關注
1文章
389瀏覽量
14864
發布評論請先 登錄
相關推薦
評論