hex檔案是可以燒寫到微控制器中,被微控制器執行的一種檔案格式,生成hex檔案的方式由很多種,可以通過不同的編譯器將c程式或者匯程式設計序編譯生成hex。
hex檔案如果用特殊的程式來檢視(一般記事本就可以實現)。開啟後可發現,整個檔案以行為單位,每行以冒號開頭,內容全部為16進製製碼(以ascii碼形式顯示)。hex檔案可以按照如下的方式進行拆分來分析其中的內容:
例如:
:020000040000fa , 我把它看做 0x02 0x00 0x00 0x04 0x00 0x00 0xfa
第乙個 0x02 為資料長度。
緊跟著後面的0x00 0x00 為位址。
再後面的0x04為資料型別,型別共分以下幾類:
'00' data record//資料記錄
'01' end of file record//檔案結束記錄
'02' extended segment address record//擴充套件段位址記錄
'03' start segment address record//開始段位址記錄
'04' extended linear address record//擴充套件線性位址記錄
'05' start linear address record//開始線性位址記錄
然後,接著0x04後面的兩個 0x00 0x00就是資料。最後乙個0xfa是校驗碼。
hex檔案的每一行都是這樣的格式:
<0x3a>
[資料長度1byte]
[資料位址2byte]
[資料型別1byte]
[資料nbyte]
[校驗1byte]
<0x0d>
<0x0a>
在例如:
:1000000018f09fe518f09fe518f09fe518f09fe5c0
按照上面的資料行格式分析如下:
<0x3a>
[資料長度1byte]
10(十六進製制)
[資料位址2byte]
00 00
[資料型別1byte]
00[資料nbyte]
18f09fe518f09fe518f09fe518f09fe5
[校驗1byte]
c0<0x0d>
<0x0a>
每行中的資料並不是一定有的,第二個位元組資料長度為0,那麼這行就沒有資料。
由於每行標識資料位址的只有2byte,所以最大只能到64k,為了可以儲存高位址的資料,就有了extended linear address record。如果這行的資料型別是0x04,那麼,這行的資料就是隨後資料的基位址。例如:
:020000040004f6
:1000000018f09fe518f09fe518f09fe518f09fe5c0
:1000100018f09fe5805f20b9f0ff1fe518f09fe51d
第一行,是extended linear address record,裡面的資料,也就是基位址是0x0004,第二行是data record,裡面的位址值是0x0000。那麼資料18f09fe518f09fe518f09fe518f09fe5要寫入flash中的位址為 (0x0004 << 16) | 0x0000,也就是寫入flash的0x40000這個位址。同樣,第三行的資料的寫入位址為0x40010。當乙個hex檔案的資料超過64k的時候,檔案中就會出現多個extended linear address record。
end of file record 行是每乙個hex檔案的最後一行。例如:
:00000001ff
這樣的一行資料內容是固定的,資料長度為0,位址為0。
校驗值:每一行的最後乙個值為此行資料的校驗和。例如:
:1000000018f09fe518f09fe518f09fe518f09fe5c0 這行中的 0xc0
:1000100018f09fe5805f20b9f0ff1fe518f09fe51d 這行中的 0x1d
校驗和的演算法為:計算從0x3a 以後(不包括0x3a)的所有各位元組的和模256的餘數的補碼即是校驗位元組。即各位元組二進位制算術和,不計超過256的溢位值,然後用0x100減去這個算數累加和,得出得值就是此行得校驗和。
**: 在此感謝!!!
HEX檔案格式
hex檔案格式描述 1intel hex檔案是由一行行符合intel hex檔案格式的文字所構成的ascii文字檔案。在intel hex檔案中,每一行包含乙個hex記錄。這些記錄由對應機器語言碼和 或常量資料的十六進製制編碼數字組成。intel hex檔案通常用於傳輸將被存於rom或者eprom中...
HEX檔案格式
nec微控制器編譯器pm 生成的燒錄檔案是hex檔案。hex檔案的intel格式 這是intel公司提出的按位址排列的資料資訊,資料寬度為位元組,所有資料使用16進製制數字表示.例子 10008000af5f67f0602703e0322cfa92007780c361 1000900089001c6...
hex檔案格式
hex檔案是可以燒寫到微控制器中,被微控制器執行的一種檔案格式,生成hex檔案的方式由很多種,可以通過不同的編譯器將c程式或者匯程式設計序編譯生成hex。hex檔案如果用特殊的程式來檢視 一般記事本就可以實現 開啟後可發現,整個檔案以行為單位,每行以冒號開頭,內容全部為16進製製碼 以ascii碼形...