0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式bin文件和elf文件重點(diǎn)

Q4MP_gh_c472c21 ? 來源:未知 ? 作者:李倩 ? 2018-05-15 11:04 ? 次閱讀

文件格式

(1)BIN文件:binary文件,即二進(jìn)制文件。

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

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

(4)bin文件和elf文件重點(diǎn)摘要:

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

a)通過gcc編譯出來的是elf文件

b)通過objcpy可以把elf文件轉(zhuǎn)換為bin文件

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

(6)map文件:map文件是程序的全局符號(hào)、源文件和代碼行號(hào)信息的唯一的文本表示方法,是整個(gè)程序工程信息的靜態(tài)文本,通常由linker生成。 map文件保存整個(gè)工程的靜態(tài)文本信息,里面有所有函數(shù)的入口地址。

通過查看map文件,我們可以找到代碼段(.text),全局未初始化區(qū)(.bss),數(shù)據(jù)段(.data)。

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

(7)symbol文件:目標(biāo)文件的值、類型、名字,例如: 00000024 T cleanup_before_linux

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

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

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

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

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

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

二、程序運(yùn)行是要在RAM中運(yùn)行的大小是:(RW Data + ZI Data) 單片機(jī)的兩個(gè)重要參數(shù),一個(gè)是上面的FLASH大小,一個(gè)是RAM大小。看了第一條,就知道這條的重要性。

剛?cè)腴T的,看程序的大小,會(huì)看HEX文件在WINDOWS中的占用大小來確定占用FLASH的大小,是不對(duì)的。

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18817

    瀏覽量

    298492
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    761

    瀏覽量

    41476
  • bin
    bin
    +關(guān)注

    關(guān)注

    1

    文章

    33

    瀏覽量

    13326

原文標(biāo)題:嵌入式各種文件掃盲BIN,hex.....

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式Linux根文件系統(tǒng)構(gòu)建指南

    嵌入式 Linux 根文件系統(tǒng)布局,建議還是按照FHS標(biāo)準(zhǔn)來安排,事實(shí)上大多數(shù)嵌入式Linux都是這樣做的。但是,嵌入式系統(tǒng)可能并不需要桌面/服務(wù)器那樣龐大系統(tǒng)的全部目錄,可以酌情對(duì)系
    發(fā)表于 02-22 09:41 ?525次閱讀

    2016嵌入式賽項(xiàng)文件

    2016年全國(guó)職業(yè)技能大賽嵌入式應(yīng)用開發(fā)比賽的比賽文件及樣題。
    發(fā)表于 05-13 16:40 ?6次下載

    詳解嵌入式linux文件類型

    學(xué)習(xí)嵌入式linux系統(tǒng)開發(fā),對(duì)于linux文件類型需要有很深的理解。Linux文件類型常見的有普通文件、目錄文件、符號(hào)鏈接
    發(fā)表于 06-11 16:29 ?960次閱讀
    詳解<b class='flag-5'>嵌入式</b>linux<b class='flag-5'>文件</b>類型

    嵌入式文件系統(tǒng)及特點(diǎn)

      近年來,計(jì)算機(jī)嵌入式逐漸被人們所追捧,想要學(xué)習(xí)嵌入式當(dāng)然離不開嵌入式系統(tǒng)啦,下面尚觀教育小編帶同學(xué)們了解嵌入式文件系統(tǒng)及其特點(diǎn)。  
    發(fā)表于 09-06 14:29 ?1078次閱讀

    如何在MDk生成bin格式的文件

    習(xí)慣于使用*.bin格式的文件,甚至有些嵌入式軟件開發(fā)者已經(jīng)擁有了*.bin格式文件的調(diào)試或燒寫工具。為了充分地利用現(xiàn)有的工具,同時(shí)發(fā)揮Re
    發(fā)表于 05-16 17:22 ?4次下載
    如何在MDk生成<b class='flag-5'>bin</b>格式的<b class='flag-5'>文件</b>

    ELF相比Hex、Bin文件格式有哪些不同?

    素材來源:綜合CSDN 編輯整理:strongerHuang 關(guān)于計(jì)算機(jī)的文件有很多種,今天分享一種用于二進(jìn)制文件、可執(zhí)行文件、目標(biāo)代碼、共享庫和核心轉(zhuǎn)儲(chǔ)格式文件。 一、
    的頭像 發(fā)表于 10-16 09:54 ?5379次閱讀
    <b class='flag-5'>ELF</b>相比Hex、<b class='flag-5'>Bin</b><b class='flag-5'>文件</b>格式有哪些不同?

    嵌入式C語言-文件操用

    嵌入式C語言-文件操用(嵌入式開發(fā)需要什么證書)-嵌入式C語言-文件操用,有需要的可以參考!
    發(fā)表于 07-30 11:56 ?15次下載
    <b class='flag-5'>嵌入式</b>C語言-<b class='flag-5'>文件</b>操用

    嵌入式文件操作

    嵌入式】串口間的通信1. 操作內(nèi)容2. 操作步驟3. 操作結(jié)果1. 操作內(nèi)容通過編寫文件讀寫及上鎖的程序,熟悉Linux中文件I/O相關(guān)的應(yīng)用開發(fā);掌握fopen()、fread()、fwrite
    發(fā)表于 10-20 15:21 ?1次下載
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>文件</b>操作

    嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))

    嵌入式Linux系統(tǒng)移植-(Linux文件系統(tǒng))嵌入式文件系統(tǒng)概述·文件是有組織、有次序地存儲(chǔ)在某種介質(zhì)上的一組信息的集合,是用來存儲(chǔ)信息的
    發(fā)表于 11-02 12:51 ?16次下載
    <b class='flag-5'>嵌入式</b>Linux系統(tǒng)移植-(Linux<b class='flag-5'>文件</b>系統(tǒng))

    視頻教程-嵌入式Linux文件與串口編程-嵌入式

    嵌入式Linux文件與串口編程 嵌入式工程師、嵌入式講師、10多年
    發(fā)表于 11-02 15:06 ?15次下載
    視頻教程-<b class='flag-5'>嵌入式</b>Linux<b class='flag-5'>文件</b>與串口編程-<b class='flag-5'>嵌入式</b>

    在MDK中如何生成bin格式的文件

    習(xí)慣于使用*.bin格式的文件,甚至有些嵌入式軟件開發(fā)者已經(jīng)擁有了*.bin格式文件的調(diào)試或燒寫工具。為了充分地利用現(xiàn)有的工具,同時(shí)發(fā)揮Re
    發(fā)表于 09-29 16:29 ?0次下載

    一文弄懂BIN、HEX、AXF、ELF文件格式的區(qū)別

    bin文件是純粹的機(jī)器碼,沒有地址信息,不能使用記事本直接打開,要使用bin文件閱讀器才能打開,如果使用bin
    的頭像 發(fā)表于 11-21 14:39 ?3836次閱讀

    常用的BIN文件操作總結(jié)

    BIN文件,即二進(jìn)制文件,廣泛應(yīng)用于嵌入式,我們常用的Firmware通常會(huì)以BIN文件或者HE
    的頭像 發(fā)表于 02-28 14:34 ?4.2w次閱讀
    常用的<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>操作總結(jié)

    淺析HEX和BIN文件

    BIN文件是單純的二進(jìn)制程序文件,內(nèi)部沒有地址信息。如果使用BIN文件燒錄程序時(shí),需要指定下載地址。
    的頭像 發(fā)表于 04-24 17:32 ?4762次閱讀
    淺析HEX和<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    keil如何生成bin文件

    Keil是一種集成開發(fā)環(huán)境(IDE),專為ARM架構(gòu)的嵌入式系統(tǒng)開發(fā)而設(shè)計(jì)。在Keil中生成bin文件是將代碼編譯并轉(zhuǎn)換為可執(zhí)行文件的過程。本文將詳細(xì)介紹Keil生成
    的頭像 發(fā)表于 12-15 13:43 ?9731次閱讀