BIN/HEX/AXF/ELF文件說明

1.1      BIN/HEX/AXF/ELF文件說明

HEX文件

HEX文件,指的是Intel標準的十六進制文件,也就是機器代碼的十六進制形式,並且是用一定文件格式的ASCII碼來表示:

Intel HEX 文件常用來保存單片機或其他處理器的目標程序代碼。它保存物理程序存儲區中的目標代碼映象。一般的編程器都支持這種格式。 

Intel HEX 文件全部由可打印的ASCII字符組成。

HEX文件是用ASCII來表示二進制的數值。例如一般8-BIT的二進制數值0x3F,用ASCII來表示就需要分別表示字符'3'和字符'F',每個字符需要一個BYTE,所以HEX文件需要 > 2倍的空間。

BIN文件

  BIN文件是最純粹的二進制機器代碼,沒有格式,或者說是"順序格式"按assembly code順序翻譯成BINary machine code. BIN是直接的內存映象的表示。

對一個BIN文件而言,你查看文件的大小就可以知道文件包括的數據的實際大小。而對HEX文件而言,你看到的文件大小並不是實際的數據的大小。一是因爲HEX文件是用ASCII來表示數據,二是因爲HEX文件本身還包括別的附加信息。

HEX和BIN區別

HEX文件是包括地址信息的,而BIN文件格式只包括了數據本身

在燒寫或下載HEX文件的時候,一般都不需要用戶指定地址,因爲HEX文件內部的信息已經包括了地址。而燒寫BIN文件的時候,用戶是一定需要指定地址信息的。

AXF文件

AXF文件是ARM的調試文件,除了包含BIN的內容之外,還附加了其他的調試信息,這些調試信息加在可執行的二進制數據的前面。在調試的時候,這些調試信息是不必下到RAM中去的,真正下到RAM中的信息僅僅是可執行代碼。所以如果ram的大小小於AXF文件的大小,程序是完全有可能可以在ram中調試的,只要AXF除去調試信息後的大小小於ram的大小就行了。

 調試信息包含以下內容:

1.可以將源代碼包括註釋夾在反彙編代碼中,並且我們可以隨時切換到源代碼中調試,

2.我們還可以對程序中的函數調用情況進行跟蹤(用Watch & Call Stack Window查看)。

3.對變量進行跟蹤(用Watch & Call Stack Window查看)。

4.使用編譯命令行選項--no_debug_macros以從調試表中丟棄預處理宏定義。

ELF文件

Linux OS下,ELF通常就是可執行文件,通常gcc-o test test.c,生成的test文件就是ELF格式的,在Linux Shell下輸入./test就可以執行。在Embedded中,上電開始運行,沒有OS系統,如果將ELF格式的文件燒寫進去,包含一些ELF格式的東西,arm運行碰到這些指令,就會導致失敗,如果用BIN文件,程序就可以一步一步運行

1.2      ARM ELF目標文件的主要構成

ARM ELF(Executable and LinkingFormat)目標文件主要由.Text段、.Data段、.BSS段構成,其他段如.debug段、.comment暫不作介紹。

      .Text段由可執行代碼組成,段類型爲Code,屬性爲RO;

      .Data段由已初始化數據組成,段類型爲Data,屬性爲RW;

      .BSS段由未初始化數據組成,段類型爲Zero,屬性爲RW,在應用程序啓動時對該段的數據初始化爲零。如果在分散加載文件中指定了UNINIT屬性,則在應用程序啓動時不初始化該段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章