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