intel hex介紹
intel hex由任意數量的十六進製制記錄組成。每個記錄包含5個域,它們按以下格式排列:
:llaaaatt[dd...]cc
每一組字母對應乙個不同的域,每乙個字母對應乙個十六進製制編碼的數字。每乙個域由至少兩個十六進製制編碼數字組成,它們構成乙個位元組,就像以下描述的那樣:
: 每個intel hex記錄都由冒號開頭.
ll 是資料長度域,它代表記錄當中資料位元組(dd...)的數量.
aaaa 是位址域,它代表記錄當中資料的起始位址.
tt 是代表hex記錄型別的域,它可能是以下資料當中的乙個:
00 – 資料記錄
01 – 檔案結束記錄
02 – 擴充套件段位址記錄
04 – 擴充套件線性位址記錄
dd 是資料域,它代表乙個位元組的資料.乙個記錄可以有許多資料位元組.記錄當中資料位元組的數量必須和資料長度域(ll)中指定的數字相符.
cc 是校驗和域,它表示這個記錄的校驗和.校驗和的計算是通過將記錄當中所有十六進製制編碼數字對的值相加,以256為模進行以下補足.
資料記錄
intel hex檔案由任意數量以回車換行符結束的資料記錄組成.資料記錄外觀如下:
:10246200464c5549442050524f46494c4500464c33
其中:
10 是這個記錄當中資料位元組的數量.
00 是記錄型別(資料記錄)
464c…464c是資料.
33 是這個記錄的校驗和.
擴充套件線性位址記錄(hex386)
擴充套件線性位址記錄也叫作32位位址記錄或hex386記錄.這些記錄包含資料位址的高16位.擴充套件線性位址記錄總是有兩個資料位元組,外觀如下:
:02000004fffffc
其中:
02 是這個記錄當中資料位元組的數量.
0000 是位址域,對於擴充套件線性位址記錄,這個域總是0000.
04 是記錄型別 04(擴充套件線性位址記錄)
ffff 是位址的高16位.
fc 是這個記錄的校驗和,計算方法如下:
01h + not(02h + 00h + 00h + 04h + ffh + ffh).
當乙個擴充套件線性位址記錄被讀取,儲存於資料域的擴充套件線性位址被儲存,它被應用於從intel hex檔案讀取來的隨後的記錄.線性位址保持有效,直到它被另外乙個擴充套件位址記錄所改變.
通過把記錄當中的位址域與被移位的來自擴充套件線性位址記錄的位址資料相加獲得資料記錄的絕對儲存器位址.
hex 和 bin 相互轉換
HEX和BIN檔案的區別
hex 檔案和 bin 檔案的區別,這兩個檔案裡都包含 cpu可以執行的機器碼,只是 hex 比bin 多一些資訊,就是機器碼的儲存 位址。這些儲存位址實際是給燒寫程式的軟體使用的。如果我們燒寫 hex 檔案到板卡裡 flash 儲存器 燒寫軟體就不會問我們儲存位址,因為這個檔案裡已經包含了這類資訊...
HEX檔案和BIN檔案格式的區別
hex檔案和bin檔案格式的區別 hex檔案和bin檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別 1 hex檔案是包括位址資訊的,而bin檔案格式只包括了資料本身。2 bin檔案格式 對二進位制檔案而言,其實沒有 格式 檔案只是包括了純粹的二進位制資料。3 hex檔案格式 ...
HEX檔案和BIN檔案格式的區別
在微控制器開發中hex檔案和bin檔案是非常常見的燒寫檔案格式,以常用開發環境keil為例,分別建立hex和bin檔案,比如 1 建立hex 在keil裡面可以通過勾選 魔法棒 output creat hex file 讓工程輸出hex檔案。2 建立bin 在keil中在 魔法棒 user aft...