colorful technology,wonderful life!---多彩科技,技術人生!
1、HEX檔案是包括地址資訊的,而BIN檔案格式只包括了資料本身。在燒寫或下載HEX檔案的時候,一般都不需要使用者指定地址,因為HEX檔案內部的資訊已經包括了地址。而燒寫BIN檔案的時候,使用者是一定需要指定地址資訊的。
2、BIN檔案格式,對二進位制檔案而言,其實沒有”格式”。檔案只是包括了純粹的二進位制資料。
3、HEX檔案格式,HEX檔案都是由記錄(RECORD)組成的。在HEX檔案裡面,每一行代表一個記錄。記錄的基本格式為:
記錄型別包括:
'00' Data Rrecord:用來記錄資料,HEX檔案的大部分記錄都是資料記錄
'01' End of File Record
'04' Extended Linear Address Record:用來標識擴充套件線性地址的記錄
'02' Extended Segment Address Record:用來標識擴充套件段地址的記錄
在上面的後2種記錄,都是用來提供地址資訊的。每次碰到這2個記錄的時候,都可以根據記錄計算出一個“基”地址。對於後面的資料記錄,計算地址的時候,都是以這些“基”地址為基礎的。
資料記錄的具體格式:
看個例子:
:020000040000FA
:10000400FF00A0E314209FE5001092E5011092E5A3
:00000001FF
對上面的HEX檔案進行分析:
第1條記錄的長度為02,LOAD OFFSET為0000,RECTYPE為04,說明該記錄為擴充套件段地址記錄。資料為0000,校驗和為FA。從這個記錄的長度和資料,我們可以計算出一個基地址,這個地址為0X0000。後面的資料記錄都以這個地址為基地址。
第2條記錄的長度為10(16),LOAD OFFSET為0004,RECTYPE為00,說明該記錄為資料記錄。資料為FF00A0E314209FE5001092E5011092E5,共16個BYTE。這個記錄的校驗和為A3。此時的基地址為0X0000,加上OFFSET,這個記錄裡的16BYTE的資料的起始地址就是0x0000 + 0x0004 = 0x0004.
第3條記錄的長度為00,LOAD OFFSET為0000,TYPE = 01,校驗和為FF。說明這個是一個END OF FILE RECORD,標識檔案的結尾。
在上面這個例子裡,實際的資料只有16個BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址為0x4
4、HEX檔案和BIN檔案大小有區別
HEX檔案是用ASCII來表示二進位制的數值。例如一般8BIT的二進位制數值0x3F,用ASCII來表示就需要分別表示字元'3'和字元'F',每個字元需要一個BYTE,所以HEX檔案需要 > 2倍的空間。
對一個BIN檔案而言,你檢視檔案的大小就可以知道檔案包括的資料的實際大小。而對HEX檔案而言,你看到的檔案大小並不是實際的資料的大小。一是因為HEX檔案是用ASCII來表示資料,二是因為HEX檔案本身還包括別的附加資訊。