tft每日頭條

 > 科技

 > hex格式與bin格式

hex格式與bin格式

科技 更新时间:2024-10-03 16:10:58
1 什麼是HEX文件

HEX文件是由一行行符合 HEX文件格式的文本所構成的ASCII文本文件。在HEX文件中,每一行包含一個HEX記錄。這些記錄由對應機器語言碼和/或常量數據的十六進制編碼數字組成。HEX文件通常用于傳輸将被存于ROM或者EPROM中的程序和數據。

2 HEX文件格式

hex格式與bin格式(HEX文件格式說明)1

常見HEX文件格式

一般Hex文件通過記事本就可以打開。可以發現一般Hex文件的記錄格式如下:

HEX文件由任意數量的十六進制記錄組成。每個記錄包含5個域,它們按以下格式排列:

每一組字母對應一個不同的域,每一個字母對應一個十六進制編碼的數字。每一個域由至少兩個十六進制編碼數字組成,它們構成一個字節,就像以下描述的那樣:

:(冒号)每個HEX記錄都由冒号開頭 ;

LL 是數據長度域, 它代表記錄當中數據字節(dd)的數量;

aaaa 是地址域, 它代表記錄當中數據的起始地址;

TT是代表HEX記錄類型的域,它可能是以下數據當中的一個:

00 – 數據記錄(Data Record)

01 – 文件結束記錄(End of FileRecord)

02 – 擴展段地址記錄(ExtendedSegment Address Record)

03 – 開始段地址記錄(Start Segment Address Record)

04 – 擴展線性地址記錄(Extended Linear Address Record)

05 – 開始線性地址記錄(Extended Segment Address Record)

dd 是數據域 , 它代表一個字節的數據. 一個記錄可以有許多數據字節.記錄當中數據字節的數量必須和數據長度域(ll)中指定的數字相符.

cc 是校驗和域 , 它表示這個記錄的校驗和.校驗和的計算是通過将記錄當中所有十六進制編碼數字對的值相加, 以256為模進行以下補足.

表示為:“:[1字節長度][2字節地址][1字節記錄類型][n字節數據段][1字節校驗和] ”

具體事例

具體根據記錄類型分析如下:

(1)數據記錄”00”:10246200464C5549442050524F46494C4500464C33

其中:10是這個記錄當中數據字節的數量.即0x10 ;

2462 是數據将被下載到存儲器當中的地址.即0x2462 ;

00 是記錄類型( 數 據 記錄).即0x00 ;

464C…464C是 數據.分别代表0x46,0x4C... ;

33是這個記錄的校 驗和即0x33;計算方法如下:256D-(10H 24H 62H 00H 46H 4CH 55H 49H 44H 20H 50H 52H 4FH 46H 49H 4CH 45H 00H 46H 4CH)/100H=33H;

(2)文件結束(EOF)”01”:00000001FF

其中:00 是記錄當中數據字節的數量.

0000 是數據被下載到存儲器當中的地址. 在文件結束記錄當中地址是沒有意義,被忽略的.0000h 是典型的地址;

01 是記錄類型 01( 文件 結 束 記錄)

FF 是 這個記錄 的校 驗 和, 計算方法如下: 256D-(00H 00H 00H 01H)=FFH;

(3)擴展線性地址記錄(HEX386) ”04”:02000004FFFFFC

其中:02 是這個記錄當中 數 據字 節 的 數量.

0000 是地址域, 對于 擴 展 線 性地址 記錄 , 這個 域 總是0000.

04 是記錄類型 04( 擴 展 線 性地址 記錄)

FFFF 是地址的高16 位.

FC 是這個記錄的校 驗 和, 計算如下: 256D-(02H 00H 00H 04H FFH FFH)/100H=FFH;

當一個擴展線性地址記錄被讀取, 存儲于數據域的擴展線性地址被保存,它被應于

從 HEX 文件讀取來的随後的記錄 . 線性地址保持有效, 到它被另外一個擴址錄所改變。

通過把記錄當中的地址域與被移位的來自擴展線性地址記錄的地址數據相加獲得 數據記錄的絕對存儲器地址。

以下的例子演示了這個過 程:

:0200000480007A //數據記錄的絕對存儲器地址高16位為0x8000

:100000001D000A00000000000000000000000000C9

:100010000000000085F170706F0104005D00BD00FC

第一行,是Extended Linear Address Record,裡面的數據,也就是基地址是0x8000,第二行是DataRecord,裡面的地址值是0x0000。那麼數據1D000A00000000000000000000000000(共16個字節)要寫入FLASH中的地址為 (0x8000<< 16)| 0x0000,也就是寫入FLASH的0x80000000這個地址;第三行的數據寫入地址為0x80000010.當一個HEX文件的數據超過64k的時候,文件中就會出現多個Extended Linear Address Record。

(4)擴展段地址記錄(HEX86)“02“:020000021200EA

其中:02 是記錄當中數據字節的數量;

0000 是地址域. 對于擴展段地址記錄 ,這個域總是0000;

02 是記錄類型 02( 擴展段地址記錄);

1200 是地址段;

EA 是這個記錄的校 驗 和;

當一個擴展段地址記錄被讀取, 存儲于數據域的擴展段地址被保存, 它被應用于從HEX文件讀取來的随後的記錄 .段地址保持有效, 直到它被另外一個擴展地址記錄所改變。

通過把記錄當中的地址域與被移位的來自擴展段地址記錄的地址數據相加獲得數 據記錄的絕對存儲器地址。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved