久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

痞子衡嵌入式:探析開啟CRC完整性校驗的IAR工程生成.out和.bin文件先后順序

 怡紅公子0526 2022-05-23 發(fā)布于北京

  大家好,,我是痞子衡,,是正經搞技術的痞子,。今天痞子衡給大家分享的是開啟CRC完整性校驗的IAR工程生成.out和.bin文件先后順序問題,。

  痞子衡之前寫了一篇 《在IAR開發(fā)環(huán)境下為工程開啟CRC完整性校驗功能的方法》,,有同事在使用CRC校驗功能時遇到了關于.out/.bin文件先后生成順序的問題,。我們在線調試IAR工程時,,調試器下載的其實是可執(zhí)行文件(.out),CRC校驗功能在.out文件里沒有任何歧義,,但是更多時候我們會使用鏡像文件(.bin)來下載量產,,有時候CRC校驗功能在.bin文件里卻沒有正常開啟,這是怎么回事,?痞子衡為你解惑:

一,、使用IAR生成鏡像文件

  拋開CRC完整性校驗功能,,以一個正常嵌入式工程來說,比如 \SDK_2.8.2_FRDM-K64F\boards\frdmk64f\demo_apps\hello_world\iar\,,這個工程正常編譯鏈接后一定會生成.out可執(zhí)行文件(其實就是標準.elf文件),。如果我們希望同時能生成一個.bin鏡像文件,需要借助工程選項Output Converter:

  在Output Converter可以指定生成鏡像文件格式,,常見的鏡像格式(.bin/hex/.s19)都支持,。如果你了解IAR你應該知道這個功能其實是調用 \IAR Systems\Embedded Workbench 8.50.6\arm\bin\ielftool.exe 工具實現的:

ielftool --bin sourceFile.out destinationFile.bin
ielftool --ihex sourceFile.out destinationFile.hex
ielftool --srec sourceFile.out destinationFile.s19

  我們編譯工程看一下編譯信息,從日志輸出順序來看,,首先生成了hello_world.out(藍色框標出),,然后調用了ielftool工具執(zhí)行轉換命令(綠色框標出),最后生成了hello_world.bin(紅色框標出):

二,、比較兩種CRC校驗開啟方法

  《在IAR開發(fā)環(huán)境下為工程開啟CRC完整性校驗功能的方法》 一文中介紹了兩種開啟CRC完整性校驗功能的方法,,我們從生成.out/.bin文件順序的角度來分析一次結果:

2.1 基于Checksum功能

  分析開啟Checksum功能的工程編譯結果,可以發(fā)現日志輸出順序如下:

1. 調用ielftool實現添加CRC校驗功能(藍色框)
2. 生成了包含正確CRC校驗值的.out文件(綠色框)
3. 調用ielftool實現文件格式轉換(紅色框)
4. 生成了包含正確CRC校驗值的.bin文件(黃色框)

  這種情況下,,.out文件和.bin文件雖然生成先后順序不同,,但都包含了正確的CRC校驗值,因此在CRC驗證使用上是一致的,。

2.2 基于Post-build功能

  再來分析開啟Post-build功能的工程編譯結果,,可以發(fā)現日志輸出順序如下:

1. 生成了默認CRC校驗值的.out文件(藍色框)
2. 調用ielftool實現文件格式轉換(綠色框)
3. 生成了包含默認CRC校驗值的.bin文件(紅色框)
4. 調用ielftool實現添加CRC校驗功能(黃色框)
5. 生成了包含正確CRC校驗值的.out文件(紫色框)

  這種情況下,.out文件和.bin文件生成先后順序不同,,但是.bin里只是默認的CRC校驗值(全0),,并不是期望的正確CRC校驗值,因此無法用于后面的CRC驗證,,這也是我同事遇到的問題,。

三、解決Post-build下.bin/.out一致性問題

  現在讓我們來解決我同事遇到的Post-build下.bin和.out里CRC校驗值不一致問題,,顯然無法直接使用工程選項Output Converter功能了,,因為它在IAR里執(zhí)行順序沒法改變。

  我們需要額外寫一個如下post-build.bat腳本,,在bat腳本里實現CRC校驗功能添加以及文件格式轉換,,這樣我們就能控制文件生成順序。

set OUT=%1.out
set BIN=%1.bin

ielftool --fill="0xFF;__checksum_begin-__checksum_end" --checksum="__checksum:4,crc32:p,0xffffffff;__checksum_begin-__checksum_end" --verbose %OUT% %OUT%

ielftool --bin --verbose %OUT% %BIN%

  將post-build.bat腳本放到工程文件同路徑下,,并重新使用Post-build來執(zhí)行這個腳本,,傳入腳本的參數是$TARGET_BPATH$,即不含工程目標文件后綴的全路徑,,再次編譯工程后就可以得到包含正確CRC校驗值的.bin文件了,,問題解決,大功告成!

備注:post-build.bat腳本正常執(zhí)行的前提是,,ielftool工具的路徑需要在系統(tǒng)環(huán)境變量里。

  至此,,開啟CRC完整性校驗的IAR工程生成.out和.bin文件先后順序問題痞子衡便介紹完畢了,,掌聲在哪里~~~

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多