嵌入式系統可執行檔案格式 轉

2022-06-21 06:42:09 字數 4925 閱讀 9004

**:嵌入式系統可執行檔案格式

uboot編譯映像格式(uboot)嵌入式系統可執行檔案的格式

executable and linking format(elf)檔案是linux系統 下的一種常用、可移植目標檔案(object file)格式,它有三種主要型別:

可執行檔案(executable file):包含適合於執行的乙個程式,此檔案規定了exec() 如何建立乙個程式的程序映像。

共享目標檔案(shared object

態鏈結器(dynamic linker)可能將它與某個可執行檔案以及其它共享目標一起組合,建立程序映像。

s-record檔案格式

s-record檔案遵循motorola制定的格式規範,是一種標準的、可列印格式的檔案。s-record檔案是通過對鏈結器生成的目標程式或

時除錯。s-record檔案是由多條記錄組成的,每條記錄都是由5個字段組成的ascii字串,格式如下所示。

l         記錄型別:由兩個字元組成,描述了該條記錄的可能型別(s0, s1, s2, s3, s5, s7, s8, or s9)。

l         資料長度:是對應於2 byte十六進製制數的一對字元,表示該條記錄後續字元對的個數;

l         資料:由每2 byte十六進製制值翻譯得到的成對的字元,大小為0-64,這些十六進製制數值可能是存放在儲存器中的資料,或者是描述資訊;

l         校驗和:它們所對應的十六進製制數值是根據除記錄型別之外的其他字段字元成對累加之和求反所得;

l         換行符:每條記錄都由換行符終止。針對不同的目標器件,可能每條記錄的結束符不盡相同,設計中用傳輸程式來提供一致的換行符。

所有的s-record檔案都是以型別為s0的記錄作為首條記錄,這條記錄在資料字段中給出檔案的資訊,包括路徑、版本號等,這些資訊是供閱讀的,

將不被存放到儲存器中。s-record檔案的中間記錄可能是型別為s1、s2或s3的記錄,其位址字段分別對應2、3、4

byte位址,因而主要區別在於定址空間的不同。s-record檔案以s7、s8或s9型別的記錄作為末條記錄,除了位址字段長度不同外,它們都給出了

程式執行的起始位址,並都不含資料字段。

hex檔案格式

intel

hex檔案是記錄文字行的ascii文字檔案,在intel hex檔案中,每一行是乙個hex記錄,由十六進製制數組成的機器碼或者資料常量。intel

hex檔案經常被用於將程式或資料傳輸 儲存到rom、eprom。大多數程式設計器和模擬器使用intel hex檔案。

乙個intel hex檔案可以包含任意多的十六進製制記錄,每條記錄有五個域,下面是乙個記錄的格式, :llaaaatt[dd...]cc

每一組字母是獨立的一域,每乙個字母是乙個十六進製制數字,每一域至少由兩個十六進製制數字組成,下面是位元組的描述: :冒號:它是每一條intel

如果是資料記錄,這表示將要燒錄的這條記錄中的資料在eprom/flash中的偏移位址,對於不支援擴充套件段位址和擴充套件線性位址的,如89c51,這就是

cc是效驗和域:表示記錄的效驗和,計算方法是將本條記錄冒號開始的所有字母對(不包括本效驗字和冒號)所表示的十六進製制數字都加起來,然後模除256得

到的餘數,最後求出餘數的補碼即是本效驗位元組cc。

intel hex檔案由若干個資料記錄組成,乙個資料記錄以乙個回車和乙個換行結束,(回車為0x0d換行為0x0a)。

擴擴充套件線性位址記錄也可稱為32位位址記錄和hex386記錄,這個紀錄包含高16(16-31位)位資料位址,這種擴充套件的線性記錄總是有兩個位元組資料。當

乙個擴充套件線性位址記錄被讀到後,擴充套件線性位址記錄的資料區域將被儲存並應用到後面從intel hex檔案中讀出的記錄,這個擴充套件線性記錄一直有效,

hex檔案必須有乙個檔案結束記錄,這個記錄的型別域必須是01,乙個eof記錄總是這樣:

示),ff是效驗和。計算如下01h + not(00h + 00h + 00h + 01h)。

可執行檔案格式的差別

b)      bin檔案格式 對二進位制檔案而言,其實沒有」格式」。檔案只是包括了純粹的二進位制資料。

c)      

hex檔案格式

段位址的記錄。在上面的後2種記錄,都是用來提供位址資訊的。每次碰到這2個記錄的時候,都可以根據記錄計算出乙個「基」位址。對於後面的資料記錄,計算

位址的時候,都是以這些「基」位址為基礎的。

一般來說,可以由elf檔案轉化為其它兩種檔案,hex也可以直接轉換為bin檔案,但是bin要轉

化為hex檔案必須要給定乙個基位址。而hex和bin不能轉化為elf檔案,因為elf的資訊量要大。另外還有一種ads的除錯檔案axf,它可以用以

下命令fromelf -nodebug xx.axf -bin xx.bin轉化為bin檔案。

**:嵌入式系統可執行檔案格式

uboot編譯映像格式(uboot)嵌入式系統可執行檔案的格式

executable and linking format(elf)檔案是linux系統 下的一種常用、可移植目標檔案(object file)格式,它有三種主要型別:

可執行檔案(executable file):包含適合於執行的乙個程式,此檔案規定了exec() 如何建立乙個程式的程序映像。

共享目標檔案(shared object

態鏈結器(dynamic linker)可能將它與某個可執行檔案以及其它共享目標一起組合,建立程序映像。

s-record檔案格式

s-record檔案遵循motorola制定的格式規範,是一種標準的、可列印格式的檔案。s-record檔案是通過對鏈結器生成的目標程式或

時除錯。s-record檔案是由多條記錄組成的,每條記錄都是由5個字段組成的ascii字串,格式如下所示。

l         記錄型別:由兩個字元組成,描述了該條記錄的可能型別(s0, s1, s2, s3, s5, s7, s8, or s9)。

l         資料長度:是對應於2 byte十六進製制數的一對字元,表示該條記錄後續字元對的個數;

l         資料:由每2 byte十六進製制值翻譯得到的成對的字元,大小為0-64,這些十六進製制數值可能是存放在儲存器中的資料,或者是描述資訊;

l         校驗和:它們所對應的十六進製制數值是根據除記錄型別之外的其他字段字元成對累加之和求反所得;

l         換行符:每條記錄都由換行符終止。針對不同的目標器件,可能每條記錄的結束符不盡相同,設計中用傳輸程式來提供一致的換行符。

所有的s-record檔案都是以型別為s0的記錄作為首條記錄,這條記錄在資料字段中給出檔案的資訊,包括路徑、版本號等,這些資訊是供閱讀的,

將不被存放到儲存器中。s-record檔案的中間記錄可能是型別為s1、s2或s3的記錄,其位址字段分別對應2、3、4

byte位址,因而主要區別在於定址空間的不同。s-record檔案以s7、s8或s9型別的記錄作為末條記錄,除了位址字段長度不同外,它們都給出了

程式執行的起始位址,並都不含資料字段。

hex檔案格式

intel

hex檔案是記錄文字行的ascii文字檔案,在intel hex檔案中,每一行是乙個hex記錄,由十六進製制數組成的機器碼或者資料常量。intel

hex檔案經常被用於將程式或資料傳輸 儲存到rom、eprom。大多數程式設計器和模擬器使用intel hex檔案。

乙個intel hex檔案可以包含任意多的十六進製制記錄,每條記錄有五個域,下面是乙個記錄的格式, :llaaaatt[dd...]cc

每一組字母是獨立的一域,每乙個字母是乙個十六進製制數字,每一域至少由兩個十六進製制數字組成,下面是位元組的描述: :冒號:它是每一條intel

如果是資料記錄,這表示將要燒錄的這條記錄中的資料在eprom/flash中的偏移位址,對於不支援擴充套件段位址和擴充套件線性位址的,如89c51,這就是

cc是效驗和域:表示記錄的效驗和,計算方法是將本條記錄冒號開始的所有字母對(不包括本效驗字和冒號)所表示的十六進製制數字都加起來,然後模除256得

到的餘數,最後求出餘數的補碼即是本效驗位元組cc。

intel hex檔案由若干個資料記錄組成,乙個資料記錄以乙個回車和乙個換行結束,(回車為0x0d換行為0x0a)。

擴擴充套件線性位址記錄也可稱為32位位址記錄和hex386記錄,這個紀錄包含高16(16-31位)位資料位址,這種擴充套件的線性記錄總是有兩個位元組資料。當

乙個擴充套件線性位址記錄被讀到後,擴充套件線性位址記錄的資料區域將被儲存並應用到後面從intel hex檔案中讀出的記錄,這個擴充套件線性記錄一直有效,

hex檔案必須有乙個檔案結束記錄,這個記錄的型別域必須是01,乙個eof記錄總是這樣:

示),ff是效驗和。計算如下01h + not(00h + 00h + 00h + 01h)。

可執行檔案格式的差別

b)      bin檔案格式 對二進位制檔案而言,其實沒有」格式」。檔案只是包括了純粹的二進位制資料。

c)      

hex檔案格式

段位址的記錄。在上面的後2種記錄,都是用來提供位址資訊的。每次碰到這2個記錄的時候,都可以根據記錄計算出乙個「基」位址。對於後面的資料記錄,計算

位址的時候,都是以這些「基」位址為基礎的。

一般來說,可以由elf檔案轉化為其它兩種檔案,hex也可以直接轉換為bin檔案,但是bin要轉

化為hex檔案必須要給定乙個基位址。而hex和bin不能轉化為elf檔案,因為elf的資訊量要大。另外還有一種ads的除錯檔案axf,它可以用以

下命令fromelf -nodebug xx.axf -bin xx.bin轉化為bin檔案。

可執行檔案格式

測試平台 在windows下使用gcc編譯c檔案。gcc的幾個用法 每一步單獨處理 gcc e main.c o main.i 將main.c預處理 gcc s main.i o main.s 將預處理的main.i檔案轉換成彙編檔案main.s gcc c main.s o main.o 將彙編檔...

嵌入式檔案格式說明

檔案格式 1 bin檔案 binary檔案,即二進位制檔案。bin目錄用來儲存專案生成後程式集,它有debug和release兩個版本,分別對應的資料夾為bin debug和bin release,這個資料夾是預設的輸出路徑,我們可以通過 專案屬性 配置屬性 輸出路徑來修改。2 hex檔案 hex的...

嵌入式檔案格式說明

8 ro data 代表唯讀資料,程式中所定義的全域性常量資料和字串都位於此處。rw data 代表已初始化的讀寫資料,程式中定義並且初始化的全域性變數和靜態變數位於此處。zi data 代表未初始化的讀寫資料,程式中定義了但沒有初始化的全域性變數和靜態變數位於此處。9 obj目錄是用來儲存每個模組...