1. 程式人生 > >colorful technology,wonderful life!---多彩科技,技術人生!

colorful technology,wonderful life!---多彩科技,技術人生!

HEX檔案和BIN檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別:

  1、HEX檔案是包括地址資訊的,而BIN檔案格式只包括了資料本身。在燒寫或下載HEX檔案的時候,一般都不需要使用者指定地址,因為HEX檔案內部的資訊已經包括了地址。而燒寫BIN檔案的時候,使用者是一定需要指定地址資訊的。
  2、BIN檔案格式,對二進位制檔案而言,其實沒有”格式”檔案只是包括了純粹的二進位制資料
  3、HEX檔案格式,HEX檔案都是由記錄(RECORD)組成的。在HEX檔案裡面,每一行代表一個記錄。記錄的基本格式為:

         記錄型別包括:
'00' Data Rrecord:用來記錄資料,HEX檔案的大部分記錄都是資料記錄
'01' End of File Record

:用來標識檔案結束,放在檔案的最後,標識HEX檔案的結尾
'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檔案本身還包括別的附加資訊。