HEX檔案和BIN檔案格式的區別

2021-09-24 14:21:17 字數 1296 閱讀 9062

在微控制器開發中hex檔案和bin檔案是非常常見的燒寫檔案格式,以常用開發環境keil為例,分別建立hex和bin檔案,比如:

1、建立hex:在keil裡面可以通過勾選【魔法棒》output>creat hex file】讓工程輸出hex檔案。

2、建立bin:在keil中在【魔法棒》user>after build/rebuild】標籤下勾選run #1,同時在其對應的user command文字框中輸入

fromelf --bin [email protected] !l 編譯後就會輸出bin檔案。

言歸正傳,先簡單描述下hex(左邊)和bin(右邊)檔案的區別:

1、hex檔案

2、bin檔案

bin檔案只有純粹的資料(**)資訊,並不包含位址,所以燒寫bin時就需要指定燒寫位址,一般可以在燒寫工具上修改。

下面看乙個keil下生成的hex和bin檔案的部分**:

hex檔案內容都是ascii編碼得到的,可以用本本編輯器直接開啟,bin檔案不能用編輯器直接檢視,可以把它轉換成16進製制然後顯示(如在notepad++下裝乙個外掛程式就好:外掛程式安裝):

很直觀的可以看到bin檔案只是hex檔案中的資料區域。

hex格式解讀:

hex檔案每一行代表乙個記錄(record),其基本格式如下

record mark  冒號(:)  表示起始標誌

load reclen  資料長度  即info or data 段的資料長度

offset     位址偏移  指定相對基位址的偏移量

info or data    資料資訊  校驗值

首先要注意的時,1-byte中的byte在hex檔案中因為經過ascii編碼的所以用兩個字元表示乙個16進製制即乙個位元組,,在bin檔案中則是直接用乙個位元組表示這兩字元,上面的圖很直觀

下面以hex檔案第一行為例,它的含義主要有,02表示資料段「6000」長度為2,0000表示偏移位址,04表示記錄型別為擴充套件線性位址的記錄,6000表示線性位址的基位址並且表示的時[16-31]區域即高位位址,[0-15]區域即低位預設為0。

最後的9a為校驗值,用0x100減去起始標誌(:)後面所有字元累加對256的模值得到的結果作為校驗值:0x100-(0x02+0x00+0x00+0x04+0x60+0x00)%256=9a

其他記錄型別類似,可以參考pdf:hex檔案詳解

HEX檔案和BIN檔案格式的區別

hex檔案和bin檔案格式的區別 hex檔案和bin檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別 1 hex檔案是包括位址資訊的,而bin檔案格式只包括了資料本身。2 bin檔案格式 對二進位制檔案而言,其實沒有 格式 檔案只是包括了純粹的二進位制資料。3 hex檔案格式 ...

HEX檔案格式

hex檔案格式描述 1intel hex檔案是由一行行符合intel hex檔案格式的文字所構成的ascii文字檔案。在intel hex檔案中,每一行包含乙個hex記錄。這些記錄由對應機器語言碼和 或常量資料的十六進製制編碼數字組成。intel hex檔案通常用於傳輸將被存於rom或者eprom中...

HEX檔案格式

nec微控制器編譯器pm 生成的燒錄檔案是hex檔案。hex檔案的intel格式 這是intel公司提出的按位址排列的資料資訊,資料寬度為位元組,所有資料使用16進製制數字表示.例子 10008000af5f67f0602703e0322cfa92007780c361 1000900089001c6...