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