在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 功能強大的 HEX 開源轉換工具,你值得擁有

            功能強大的 HEX 開源轉換工具,你值得擁有

            發(fā)布人:魚鷹談單片機 時間:2021-05-12 來源:工程師 發(fā)布文章

            功能

            你是否存在這樣的需求?

            將 HEX 轉化為 BIN文件?

            將 BIN 文件轉化為 HEX 文件?

            將兩個 HEX 文件合并成一個 HEX 文件?

            將兩個 BIN 文件合并成一個 BIN 文件?

            將一個 HEX 拆分成多個 HEX文件?

            計算某段空間數(shù)據(jù)的 CRC 校驗數(shù)據(jù),用于 ROM 完整性檢查?

            比較兩個 HEX 或 BIN 文件的差異?

            如果你有這些需求,但是你還需要自制工具或使用多個工具才能完成以上功能,那你就 out 了,是時候用上這個開源工具了:SRecord

            該工具可以在 LINUX 和 window 平臺工作,滿足你的開發(fā)需求。

            官方只提供源碼(C++),并沒有exe格式的文件直接供你使用,但有前輩開路,不用擔心,所以你可以在該鏈接下直接下載該工具,復制到你的 Windows 電腦上即可用命令行的形式使用了:

            https://sourceforge.net/projects/srecord/files/srecord-win32/

            (右滑查看)

            如果不方便下載,魚鷹在后臺也提供了該軟件包(不需要安裝,解壓縮即可),回復 hex工具 即可領取工具。

            為了方便說明,首先我們使用同一個工程生成兩個 HEX 文件,一個默認偏移地址 0x08000000(代表 BOOTLOADER)input0.hex,另一個偏移地址 0x0800A000(代表 APP)intput1.hex。

            1.png

            因為初始地址不一樣,所以我們可以使用它進行合并(如果兩個 HEX文件地址有重合,將產(chǎn)生錯誤或警告,合并失敗,當然如果確實有需求,也是有辦法的)。

            然后將兩個文件拷貝到工具目錄下,這一步可以不做,僅僅是為了方便書寫命令而已,事實上,一般我們在命令中明確給出路徑即可(相對路徑或絕對路徑)。

            /c/SREC/srec_cat.exe src/input.hex -intel -offset -0x0800A000 -o src/output.bin -binary

            2.png

            將HEX文件轉化為 BIN文件(BASH環(huán)境下命令,CMD類似)

            ./srec_cat.exe input1.hex -intel -offset -0x0800A000 -o output1.bin -binary

            需要注意的是魚鷹標記的 -,如果沒有這個,程序可以正常執(zhí)行,不報錯,但是會生成一個很大文件(從地址 0 開始轉化):

            3.png

            -intel 代表使用 HEX格式來解析 input1.hex 文件,它并不是靠后綴名確定格式的

            -binary 代表輸出 BIN格式文件

            -offset -0x0800A000 代表從 0x0800A000 地址轉化,否則將從 0 地址開始轉化。

            如果輸入的Intel HEX文件的記錄未按升序地址順序排序,將發(fā)出警告,可使用 Disable_Sequence_Warnings 選項禁用。KEIL 51生成的 HEX 就是這種情況,ARM的并不需要該選項。

            將 BIN文件轉化為 HEX文件?

            ./srec_cat.exe output1.bin -binary -offset -0x0800A000 -o cmp.hex -intel

            因為魚鷹不確定該命令是否正確,所以又將生成的 cmp.hex 文件轉化為 bin文件進行對比:

            ./srec_cat.exe cmp.hex -intel -offset 0x0800A000 -o cmp.bin -binary

            事實上,上述命令確實可以將 bin文件轉化為 hex文件。

            4.png

            將兩個 HEX文件合并成一個 HEX文件

            ./srec_cat.exe input0.hex -intel input1.hex -intel -o output.hex -intel

            此時兩個文件文件的中間空白部分填充 0xff。

            如果你想固定中間部分的填充值,可以使用如下命令:

            ./srec_cat.exe input0.hex -intel -fill 0xff 0x08000000 0x0800A000  input1.hex -intel  -o output_ff.hex -intel

            -fill 0xff 0x08000000 0x0800A000 代表如果 0x08000000~0x0800A000 地址有空白,將填充0xff,當然也可以修改成 0x00 或其他值,建議該值和 FLASH擦除后的值保持一致。

            5.png

            并且該 參數(shù)應該放在 input0.hex -intel 之后,放在 input1.hex -intel 后面會出錯,應該是該參數(shù)值對前面的文件有效,并且地址范圍包含在前面文件中。

            ./srec_cat.exe input0.hex -intel -fill 0xff 0x08000000 0x0800A000  input1.hex -intel -offset -0x08000000 -o output_ff.bin -binary

            魚鷹曾嘗試使用上面的參數(shù)直接生成 bin文件,但發(fā)現(xiàn)最終生成的 bin文件從地址 0 開始,-offset 并沒起作用,只能先轉化為 hex文件了。

            將兩個 BIN文件合并成一個 BIN文件

            ./srec_cat.exe -output "merge.bin" -binary output0.bin -binary -fill 0xff 0x00000000 0x0000A000 output1.bin -binary -offset 0x0000A000

            特別注意的是,這條命令和之前的命令有很大不同,首先指定輸出文件,并且有雙引號,而第二個文件指定(偏移)地址時, -offset 0x0000A000地址前沒有 -。

            并且因為bin文件不存在絕對地址信息,只有相對偏移,所以你會看到第一個輸入文件 output0.bin 并沒有指定偏移,將以默認地址 0 處理,并且填充命令也是按照偏移 0x00000000 0x0000A000來處理。

            將一個 HEX拆分成多個 HEX文件

            ./srec_cat.exe output_ff.hex -intel -crop 0x08000000 0x08009FFF -o merge_part1.hex -intel

            分割第一個文件

            ./srec_cat.exe output_ff.hex -intel -crop 0x0800A000 0x08100000 -o merge_part2.hex -intel

            分割第二個文件,注意不要加 -offset -0x0800A000,網(wǎng)上一篇參考文章加了該參數(shù),實際發(fā)現(xiàn)生成的 hex 文件從 0x0 開始。

            0x08100000 這個值只要包含你的 HEX 文件的最大地址即可。

            關于加入 CRC校驗、比較文件的差異功能,我們下期再見了。

            *博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



            關鍵詞: 開源轉換

            技術專區(qū)

            關閉