Inter Hex文件格式

Inter Hex文件是一種常見的文件存儲格式,常用於微控制器編程。C編譯器或者彙編器將源程序轉化成機器碼並輸出Hex文件,從而將二進制信息表示成ASCII文本形式。接下來通過一個簡單的示例來了解一下Intel Hex文件的構成格式。

:020000040000 FA
:10000000000200207D0000009F000000A100000011
:1000100000000000000000000000000073756C7517
:10002000FFFFFFFF0000000000000000A300000031
:10003000A500000000000000A7000000A9000000CB
:10004000AB000000B9560000AB000000AB000000A0
:10005000AB000000DD6900008D6F0000296F00001B
:10006000000000000000000000000000000000000C
:1000700000000000000000000000000018000000E4
:1000800000000000180000000000000000000000D4
:0400900000000000E8
:020000040000FA
:047FFC0072756C75B9
:04000005000000698E
:00000001FF

以上是一個完整的Hex文件,爲便於分析,將其用空格分開,表示成以下形式:

1  2   3   4   5   6
: 02 0000 04 0000 FA
: 10 0000 00 000200207D0000009F000000A1000000 11
: 10 0010 00 00000000000000000000000073756C75 17
: 10 0020 00 FFFFFFFF0000000000000000A3000000 31
: 10 0030 00 A500000000000000A7000000A9000000 CB
: 10 0040 00 AB000000B9560000AB000000AB000000 A0
: 10 0050 00 AB000000DD6900008D6F0000296F0000 1B
: 10 0060 00 00000000000000000000000000000000 0C
: 10 0070 00 00000000000000000000000018000000 E4
: 10 0080 00 00000000180000000000000000000000 D4
: 04 0090 00 00000000 E8
: 02 0000 04 0000 FA
: 04 7FFC 00 72756C75 B9
: 04 0000 05 00000069 8E
: 00 0000 01  FF

Hex文件每一行作爲一個單獨的數據塊,稱爲一條記錄(record)。每一行的組成形式可以表示爲 :BBAAAATT[DDDDD]CC ,由6個部分組成(也可能是5個),均以16進制數的形式表示。其中‘:’代表每一行的開始標誌,‘BB’表示在這一行中的數據域裏的字節數,’AAAA‘代表數據存儲的16位偏移地址,數據存儲的真實物理地址需要把這個偏移量加上之前定好的基地址。基地址和偏移量均以大端形式表示。’TT‘代表記錄類型,規定了數據域的意義。’DDDDD‘爲數據域,其字節個數由‘BB’確定,其表示的意義由’TT‘決定。’CC‘爲校驗和,由該行數據按字節相加後的補碼,例如對於 ’:040010001122334442 ‘,校驗和爲42,計算方法爲:0x04 + 0x00 + 0x10 + 0x11 + 0x22 + 0x33 +0x44 = 0xBE,0xBE 的二進制形式是 10111110 。取其補碼即反碼加一得 01000010 = 0x42,42即爲校驗和,如果數據加和超過一字節,則超過的部分全部捨去,最終的校驗和始終只有一字節。
對於 : 10 0010 00 00000000000000000000000073756C75 17,可以看到,冒號表示每一行的開始,’10‘等於16,表示數據域有16字節,’0010‘表示地址,’00‘表示數據域存儲的是數據,’17‘爲校驗和。’CC‘的範圍是00~05,00表示數據域存儲的是數據,01表示Hex文件結束,數據域爲空。04表示擴展地址類型,指數據域保存的是32位地址的高16位。因爲‘AAAA’表示的地址範圍爲0000~FFFF,當地址超過FFFF時,需要先聲明地址的高16位,如:020000040001F9聲明瞭高16位爲0001。其餘’CC‘值所代表的含義在此不做詳細介紹,具體請參看Hex文件格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章