嵌入式檔案格式說明

2021-09-01 11:28:53 字數 1522 閱讀 5919

檔案格式

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

(2)hex檔案:hex的全稱是intel hex,此類檔案通常用於傳輸將被存於rom或者eprom中的程式和資料。是由一行行符合intel hex檔案格式的文字所構成的ascii文字檔案。大多數eprom程式設計器或模擬器使用intel hex檔案。 hex檔案記錄由對應機器語言碼和/或常量資料的十六進製制編碼數字組成。

(3)elf檔案: 是linux的主要可執行檔案格式。 elf檔案除了機器碼外,還包含其它額外的資訊,如段的載入位址,執行位址,重定位表,符號表等。

(4)bin檔案和elf檔案的區別見:

重點摘要:

執行raw binary很簡單,只需要將程式載入到其起始位址,就可以執行; 執行elf程式則需要乙個elf loader。 現在知道了吧,uboot和linux kernel啟動的時候是沒有elf loader的,所以燒在flash上的檔案只能是raw binary格式的,即映象檔案image。

a)通過gcc編譯出來的是elf檔案

b)通過objcpy可以把elf檔案轉換為bin檔案

(5)lds檔案:它定義了整個程式編譯之後的連線過程,決定了乙個可執行程式的各個段的儲存位置。指定連線檔案的儲存位址、執行位址,儲存位址和執行位址可以相同也可以不同。**:

(6)map檔案:map檔案是程式的全域性符號、原始檔和**行號資訊的唯一的文字表示方法,是整個程式工程資訊的靜態文字,通常由linker生成。 map檔案儲存整個工程的靜態文字資訊,裡面有所有函式的入口位址。

通過檢視map檔案,我們可以找到**段(.text),全域性未初始化區(.bss),資料段(.data)。

map檔案的作用是,我們可以根據程式產生錯誤位址在map檔案中找到相應的函式、變數位址。

摘自:

(7)symbol檔案:目標檔案的值、型別、名字,例如: 00000024 t cleanup_before_linux

00000024是以16進製制顯示的其值,t為型別表示此函式位於**區,而cleanup_before_linux是其名字。可以看出,上面顯示的cleanup_before_linux這個symbol的值實際上是該函式在text section中的偏移。但是,每個符號的值的具體含義依其型別而異(型別見原文)。當然,對於每個符號的值,其型別、其值以及它們所屬的section是密切相關的。

摘自:(8)(9)obj目錄是用來儲存每個模組的編譯結果,在.net中,編譯是分模組進行的,編譯整個完成後會合併為乙個.dll或.exe儲存到bin目錄下。因為每次編譯時預設都是採用增量編譯,即只重新編譯改變了的模組,obj儲存每個模組的編譯結果,用來加快編譯速度。是否採用增量編譯,可以通過:專案屬性—>配置屬性—>高階—>增量編譯來設定

引自:

嵌入式檔案格式說明

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

嵌入式軟體開發中檔案格式

intel hex 檔案常用來儲存微控制器或其他處理器的目標程式 它儲存物理程式儲存區中的目標 映象。一般的程式設計器都支援這種格式。就是機器 的十六進製制形式,並且是用一定檔案格式的ascii碼來表示。hex檔案由記錄 record 組成。在hex檔案裡面,每一行代表乙個記錄。每條記錄都由乙個冒號...

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

嵌入式系統可執行檔案格式 uboot編譯映像格式 uboot 嵌入式系統可執行檔案的格式 executable and linking format elf 檔案是linux系統 下的一種常用 可移植目標檔案 object file 格式,它有三種主要型別 可執行檔案 executable file...