<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          嵌入式各種文件掃盲BIN、hex、ELF~

          共 1924字,需瀏覽 4分鐘

           ·

          2022-01-01 15:41

          關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容
          文章來(lái)源:網(wǎng)路素材

          文件格式

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


          (2)HEX文件:hex的全稱(chēng)是Intel HEX,此類(lèi)文件通常用于傳輸將被存于ROM或者EPROM中的程序和數(shù)據(jù)。是由一行行符合Intel HEX文件格式的文本所構(gòu)成的ASCII文本文件。大多數(shù)EPROM編程器或模擬器使用Intel HEX文件。HEX文件記錄由對(duì)應(yīng)機(jī)器語(yǔ)言碼和/或常量數(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?,F(xiàn)在知道了吧,uboot和Linux kernel啟動(dòng)的時(shí)候是沒(méi)有ELF Loader的,所以燒在flash上的文件只能是raw binary格式的,即鏡像文件image。


          a)通過(guò)gcc編譯出來(lái)的是elf文件

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


          (5)LDS文件:它定義了整個(gè)程序編譯之后的連接過(guò)程,決定了一個(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ù)的入口地址。

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


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

           

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


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


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


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


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


          ZI-data:代表未初始化的讀寫(xiě)數(shù)據(jù),程序中定義了但沒(méi)有初始化的全局變量和靜態(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了,但是工程還需要寫(xiě)很多程序,那就可以考慮換個(gè)FLASH大點(diǎn)的單片機(jī)了。


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


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


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

           

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

          版權(quán)聲明:本文轉(zhuǎn)自網(wǎng)絡(luò)。版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們刪除!

          ????????????????  END  ????????????????
          關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。
          歡迎關(guān)注我的視頻號(hào):

          點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。
          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天做天天爱夜夜爽 | 日本亚洲黄色视频 | 丝袜足交视频网站 | 99在线视频免费观看 | 18禁成人在线网站 |