查看: 2711|回復: 0
打印 上一主題 下一主題

嵌入式各種文件掃盲BIN,hex.....

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2018-5-15 15:05:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 嵌入式、arm、linux
文件格式
(1)BIN文件:binary文件,即二進(jìn)制文件。

(2)HEX文件:hex的全稱(chēng)是Intel HEX,此類(lèi)文件通常用于傳輸將被存于ROM或者EPROM中的程序和數據。是由一行行符合Intel HEX文件格式的文本所構成的ASCII文本文件。大多數EPROM編程器或模擬器使用Intel HEX文件。 HEX文件記錄由對應機器語(yǔ)言碼和/或常量數據的十六進(jìn)制編碼數字組成。

(3)ELF文件: 是Linux的主要可執行文件格式。 ELF文件除了機器碼外,還包含其它額外的信息,如段的加載地址,運行地址,重定位表,符號表等。

(4)bin文件和elf文件重點(diǎn)摘要:
執行raw binary很簡(jiǎn)單,只需要將程序加載到其起始地址,就可以執行; 執行ELF程序則需要一個(gè)ELF Loader。 現在知道了吧,uboot和Linux kernel啟動(dòng)的時(shí)候是沒(méi)有ELF Loader的,所以燒在flash上的文件只能是raw binary格式的,即鏡像文件image。

a)通過(guò)gcc編譯出來(lái)的是elf文件
b)通過(guò)objcpy可以把elf文件轉換為bin文件

(5)LDS文件:它定義了整個(gè)程序編譯之后的連接過(guò)程,決定了一個(gè)可執行程序的各個(gè)段的存儲位置。指定連接文件的存儲地址、運行地址,存儲地址和運行地址可以相同也可以不同。轉自:https://wenku.baidu.com/view/9a8beb125f0e7cd18425369a.html

(6)map文件:map文件是程序的全局符號、源文件和代碼行號信息的唯一的文本表示方法,是整個(gè)程序工程信息的靜態(tài)文本,通常由linker生成。 map文件保存整個(gè)工程的靜態(tài)文本信息,里面有所有函數的入口地址。
通過(guò)查看map文件,我們可以找到代碼段(.text),全局未初始化區(.bss),數據段(.data)。

map文件的作用是,我們可以根據程序產(chǎn)生錯誤地址在map文件中找到相應的函數、變量地址。

(7)symbol文件:目標文件的值、類(lèi)型、名字,例如: 00000024 T cleanup_before_linux

00000024是以16進(jìn)制顯示的其值,T為類(lèi)型表示此函數位于代碼區,而cleanup_before_linux是其名字?梢钥闯,上面顯示的cleanup_before_linux這個(gè)symbol的值實(shí)際上是該函數在text section中的偏移。但是,每個(gè)符號的值的具體含義依其類(lèi)型而異(類(lèi)型見(jiàn)原文)。當然,對于每個(gè)符號的值,其類(lèi)型、其值以及它們所屬的section是密切相關(guān)的。

(8)Code:代表執行的代碼,程序中所有的函數都位于此處。

RO-data: 代表只讀數據,程序中所定義的全局常量數據和字符串都位于此處。

RW-data:代表已初始化的讀寫(xiě)數據,程序中定義并且初始化的全局變量和靜態(tài)變量位于此處。

ZI-data:代表未初始化的讀寫(xiě)數據,程序中定義了但沒(méi)有初始化的全局變量和靜態(tài)變量位于此處。

一、下載到FLASH中的數據大小是:(Code + RO Data + RW Data)這個(gè)數據關(guān)系到占用了多少單片機的FLASH,關(guān)系到是否可以再添加程序。比如你的單片機FLASH是8K,編譯程序后,發(fā)現程序已經(jīng)7K了,但是工程還需要寫(xiě)很多程序,那就可以考慮換個(gè)FLASH大點(diǎn)的單片機了。

二、程序運行是要在RAM中運行的大小是:(RW Data + ZI Data) 單片機的兩個(gè)重要參數,一個(gè)是上面的FLASH大小,一個(gè)是RAM大小?戳说谝粭l,就知道這條的重要性。

剛入門(mén)的,看程序的大小,會(huì )看HEX文件在WINDOWS中的占用大小來(lái)確定占用FLASH的大小,是不對的。

這個(gè)HEX文件在電腦上的大小是4.46KB,但是它只會(huì )占用單片機FLSAH的1.57KB,如下圖所示:

(提示:在你生成的工程中的Listings文件夾里面,有一個(gè).map后綴的文件,拉到最后面,就有算好的大小)

以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、Python、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。宋工Q35--24-65--90-88   Tel/WX:173--17--95--19--08


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页