嵌入式開發系統編程文件格式解析
摘要:嵌入式系統編程文件格式多種多樣。為方便嵌入式系統開發和深度理解各種目標系統,論文詳細分析了多種主流的嵌入式可執行文件(即機器碼文件)格式。比較了不同格式的異同點,并介紹了各種嵌入式文件格式的主要硬件系統及目標器件。
關鍵詞:嵌入式系統;編程文件;HEX格式
1 常見文件格式解析
雖然不同的開發集成環境和不同的硬件架構使得嵌入式設備中可執行文件的格式不盡相同,但基本上包含以下一些典型特征:
①可執行文件的基本信息,如文件大小、時間、權限等。
②與硬件架構相關的二進制代碼和數據。
③符號表與符號重定位表。
從文件本身所包含的信息來看,嵌入式系統可執行文件主要有:純數據類文件,記錄類文件以及描述類文件。
1.1 純數據文件格式
純數據文件就是指文件中不包含地址和校驗信息等,只包含純粹的用戶數據。純數據文件主要包括兩種:BIN格式和HEX格式。BIN格式即二進制的文件,使用時每8位作為一個字節來用,傳輸BIN文件時并不進行ASCII編碼。BIN文件格式是沒有結束標記的。顯然,BIN文件格式是除了一些壓縮格式(如ZIP和RAR)之外最節省空間的格式,它主要是用來編程存儲器器件的,通常會建議將EPROM數據存儲為BIN格式以作為標準文件格式來下載。HEX格式相比BIN格式的區別就是,每個字節都轉成了2個0~9和A~F之間值的ASCII碼。整個文件是分行表示的,每行一般是16或32個字節,行以空格加回車表示結束。
1.2 記錄類文件格式
記錄類文件中所有的數據行都叫做記錄,每一條記錄一般都分為多個域來清晰地說明記錄的類型、記錄中數據的數量、數據的存儲地址、數據校驗信息等。而且,記錄類文件一般都有關于該文件開始和結束的標記信息。各種記錄類文件格式的差異就體現在不同公司定義的記錄標記以及一些域格式和順序的差別上。記錄類文件常見的就是各種MCU的燒錄文件。
1.2.1 Intel HEX文件格式(.HEX)
Intel HEX是一種較老的文件格式。它是用ASCII字符來表示文件中數據域的二進制數據。文件中每一行是一條HEX記錄,由一個回車和一個換行結束。IntelHEX文件經常被用于將程序或數據傳輸存儲到ROM、EPROM,大多數編程器和模擬器使用Intel HEX文件。
記錄格式如下:
:BBAAAATTHHHH…HHHCC
:——記錄開始標記。
BB——長度域,占一個字節。代表這條記錄中數據的字節數,每條記錄最大數據字節數是255字節,通常為32字節。長度域只計數數據域的大小。
AAAA——地址域,占兩個字節,存儲方式是MSB。地址域指出這條記錄的第一個數據字節的地址,隨后地址逐一增加以存儲下面的數據。整個文件中各記錄的地址順序是不重要的,文件中有時也會有一段空的地址。
TT——類型域,1字節。表示該條記錄的類型。
HH——數據域,長度受到記錄類型的限制。數據記錄以字節為單位。
CC——校驗和,占一個字節。計算方法是將本記錄中除了冒號和校驗字節之外的所有字節加起來,將模除256得到的余數取補碼。
Intel HEX文件格式的6種記錄說明如表1所列。
評論