HEX文件格式說明

HEX文件格式說明

hex格式的文件是最常用的用於單片機程序編譯後用於下載的文件。在這裏我們介紹一下hex和bin文件的區別。bin文件是寫在單片機內部的執行文件。就是bin文件裏面的就是單片機裏應該寫入的所有內容。但是我們只有bin文件是無法下載使用的。因爲bin文件裏面沒有地址信息。比如單片機的中斷,是有固定的中斷地址的,一旦發生中斷就會跳轉到中斷地址運行。所以我們必須在把想在中斷中執行的內容寫在中斷地址的地方(或者也可以在中斷地址處加跳轉指令到我們想要執行的地方)。再說hex文件,hex文件每一行開頭都有地址信息,告訴你這一行應該存在內存的什麼位置。所以編譯好的hex文件可以直接下載使用。

:10000000020C0B02000A53917F3232020DC2758C32
:0F001000F4E4F58A758901F58EC2A9758810226E
:10002300020B6DFCF500040002002EC0E0C083C08B
:1000330082C0D075D000C000C0077808E606C3941C
:10004300014007200404D2047600900089E0FF04F5
:10005300F0EFC394134002E4F0C2CFD007D000D036
:10006300D0D082D083D0E032020006020316E864C7
:1000730080F8E933E83360110460F0ED33EC33705A
:100E7300AB40D2ACE4F5A743981075A91C8FA72209
:100E8300AFA7E4F5A7538E3FF591759310F59285BF
:100E9300939585929443E6404391048FA722AFA78D
:100EA300E4F5A7538ECFF5C875CBF4F5CA85CBCD42
:100EB30085CACCD2AD75C8048FA722C2B4D2B77F7E
:100EC3000A7E00120E447F020E7D007CB4120AD407
:100ED3007F0A7E00020E44A3E0FF8F993099FDC282
:020EE300992252
:00000001FF

我從某個hex文件裏截取了開始和結尾部分,方便具體講解。首先以第一行爲例:
10000000020C0B02000A53917F3232020DC2758C32

首先這都是16進制的。
第一個0x10 表示這一行有16個數據位
第二第三 0x00,0x00(高位在前地位在後) 表示這一行的數據位從地址0x0000處開始存儲。(一般情況下單片機上電都是從0x00處開始執行,然後跳轉到需要的地方運行)
第四字節是一個標誌位,有以下幾種可能0x00 0x01 0x02 0x03 0x04 0x05,分別有以下含義
'00’數據記錄:用來記錄數據,HEX文件的大部分記錄都是數據記錄

'01’文件結束記錄:用來標識文件結束,文件的最後一行的標誌位

'02’擴展段地址記錄:用來標識擴展段地址的記錄(我不懂,沒法解釋)

'03’開始段地址記錄:開始段地址記錄(我也不懂)

'04’擴展線性地址記錄:用來標識擴展線性地址的記錄(我還是不懂)

'05’開始線性地址記錄:開始線性地址記錄(這個。。。不懂)
後面的一直到倒數第二位
02 0C 0B 02 00 0A 53 91 7F 32 32 02 0D C2 75 8C(正好16個)
這是數據位,這就是要寫到單片機內存裏的東西。

然後最後一位32 是校驗位。校驗方式是整行內容(除了最後的校驗位)進行LRC(縱向循環冗餘校驗)。

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