ARM映像檔案格式

2021-05-24 22:01:11 字數 1264 閱讀 1845

學習ads工具編寫arm程式,整理一些關於檔案格式的說明。

arm中的各種原始檔(包括彙編檔案,c語言程式及c++程式等)經過arm編譯器編譯後生成elf格式的目標檔案。這些目標檔案和相應的c/c++執行時用到的庫經過arm聯結器處理後,生成elf格式的映像檔案,這種格式的elf格式的映像檔案是一種可執行檔案,可被寫入嵌入式裝置的rom中。

利用ads編譯可除錯目標時,會生成兩種格式的可執行檔案:bin檔案和axf檔案。bin檔案是真正的可執行檔案,axf是arm的除錯檔案,它除了包含bin的內容外,還附加其他的可除錯資訊,這些除錯資訊加在可執行的二進位制資料的前面,所以把axf檔案寫到arm的指令執行位址(一般是0x00)將不能執行。如果在ads中設定為"release",則在該目錄下的axf裡面的內容和bin裡面的內容是一樣的。

另外,arm程式執行時包含ro,rw,zi三部分內容,其中zi(未初始化變數)是不會包含在映像檔案的,因為其中資料都為零,程式執行前會將這部分資料初始化為零。

arm映像檔案是乙個層次性結構的檔案,包括了域(region),輸出段(output section)和輸入段(input section)。乙個映像檔案由乙個或者多個域組成,每個域最多由三個輸出段(ro,rw,iz)組成,每個輸出段又包含乙個或者多個輸入段,各個輸入段包含了目標檔案中的**和資料。

域(region):乙個映像檔案由乙個或多個域組成。是組成映象檔案的最大結構。所謂域指的就是整個bin映像檔案所在的區域,又分為載入域和執行域。載入域就是映像檔案被靜態存放的工作區域,一般來說flash裡的整個bin檔案所處在的位址空間就是載入域,當然程式一般不會放在flash裡執行(程式也可以在nor flash裡直接執行),一般會搬到sdram裡執行工作,他們被搬到sdram裡工作所處的位址空間就是執行域。乙個域通常對映到乙個物理儲存器上,如rom和ram等。

段(section):乙個域中包含乙個或多個輸出段,乙個輸出段包含乙個或多個輸入段。我們輸入的**,一般有**和資料部分,這就是所謂的輸入段,每個輸入段有相應的屬性,可以為唯讀(ro),可讀寫(rw)以及初始化為0的(zi)。

ro rw zi:輸入段包含四類內容:**,初始化資料,未經初始化的儲存區域,初始化的儲存區域。每個輸入段都有相應的屬性,arm聯結器根據各輸入段的屬性將這些輸入段分組,再組成對應屬性的輸出段。對於載入域中的輸出段,一般來說ro段後面緊跟著rw段,rw段後面緊跟著zi段。在執行域中這些輸出段並不連續,但rw和zi一定是連著的。

c中的指令以及常量被編譯後ro型別資料

c中的未被初始化或者初始化為0的變數為zi型別資料

c中的已被初始化成非0值的變數編譯後是rw型別資料

arm映像檔案

程式映像檔案的基本概念 2009 02 04 16 30 01 標籤 雜談 分類 arm 一 基本概念 什麼是arm的映像檔案,arm映像檔案其實就是可執行檔案,包括bin或hex兩種格式,可以直接燒到rom裡執行。映像檔案一般由域組成,域最多由三個輸出段組成 ro,rw,zi 組成,輸出段又由輸入...

ARM映像檔案

2010 03 22 13 53 41 分類 arm 字型大小訂閱 arm映像檔案 arm中的各種原始檔 包括彙編檔案,c語言程式及c 程式等 經過arm編譯器編譯後生成elf executable and linking format 格式的目標檔案。這些目標檔案和相應的c c 執行 時用到的庫經...

ARM系統基本檔案格式

這裡所說的arm系統基本檔案格式,都是在基於arm的嵌入式系統開發中常會碰到的檔案格式。arm系統基本檔案格式有三種 1 bin,平板式二進位制格式,一般用於直接燒寫到flash中,也可以用於載入到monitor程式中。2 elf,executable and linkable format,一種通...