日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式文件格式说明

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式文件格式说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文件格式 (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文件的區別見:http://blog.chinaunix.net/uid-24148050-id-362928.html 重點摘要: 執行raw binary很簡單,只需要將程序加載到其起始地址,就可以執行; 執行ELF程序則需要一個ELF Loader。 現在知道了吧,uboot和Linux kernel啟動的時候是沒有ELF Loader的,所以燒在flash上的文件只能是raw binary格式的,即鏡像文件image。 a)通過gcc編譯出來的是elf文件 b)通過objcpy可以把elf文件轉換為bin文件 (5)LDS文件:它定義了整個程序編譯之后的連接過程,決定了一個可執行程序的各個段的存儲位置。指定連接文件的存儲地址、運行地址,存儲地址和運行地址可以相同也可以不同。轉自:https://wenku.baidu.com/view/9a8beb125f0e7cd18425369a.html (6)map文件:map文件是程序的全局符號、源文件和代碼行號信息的唯一的文本表示方法,是整個程序工程信息的靜態文本,通常由linker生成。 map文件保存整個工程的靜態文本信息,里面有所有函數的入口地址。 通過查看map文件,我們可以找到代碼段(.text),全局未初始化區(.bss),數據段(.data)。 map文件的作用是,我們可以根據程序產生錯誤地址在map文件中找到相應的函數、變量地址。 摘自:http://blog.csdn.net/since20140504/article/details/40822565 (7)symbol文件:目標文件的值、類型、名字,例如:?00000024 T cleanup_before_linux 00000024是以16進制顯示的其值,T為類型表示此函數位于代碼區,而cleanup_before_linux是其名字。可以看出,上面顯示的cleanup_before_linux這個symbol的值實際上是該函數在text section中的偏移。但是,每個符號的值的具體含義依其類型而異(類型見原文)。當然,對于每個符號的值,其類型、其值以及它們所屬的section是密切相關的。 摘自:http://blog.csdn.net/trochiluses/article/details/9445531

(8)
  • Code:代表執行的代碼,程序中所有的函數都位于此處。
  • RO-data: 代表只讀數據,程序中所定義的全局常量數據和字符串都位于此處。
  • RW-data:代表已初始化的讀寫數據,程序中定義并且初始化的全局變量和靜態變量位于此處。
  • ZI-data:代表未初始化的讀寫數據,程序中定義了但沒有初始化的全局變量和靜態變量位于此處。

(9)obj目錄是用來保存每個模塊的編譯結果,在.NET中,編譯是分模塊進行的,編譯整個完成后會合并為一個.DLL或.EXE保存到bin目錄下。因為每次編譯時默認都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結果,用來加快編譯速度。是否采用增量編譯,可以通過:項目屬性—>配置屬性—>高級—>增量編譯來設置

一、下載到FLASH中的數據大小是:(Code + RO Data + RW Data)這個數據關系到占用了多少單片機的FLASH,關系到是否可以再添加程序。比如你的單片機FLASH是8K,編譯程序后,發現程序已經7K了,但是工程還需要寫很多程序,那就可以考慮換個FLASH大點的單片機了。
二、程序運行是要在RAM中運行的大小是:(RW Data + ZI Data)?單片機的兩個重要參數,一個是上面的FLASH大小,一個是RAM大小。看了第一條,就知道這條的重要性。

剛入門的,看程序的大小,會看HEX文件在WINDOWS中的占用大小來確定占用FLASH的大小,是不對的。
這個HEX文件在電腦上的大小是4.46KB,但是它只會占用單片機FLSAH的1.57KB,如下圖所示:

(提示:在你生成的工程中的Listings文件夾里面,有一個.map后綴的文件,拉到最后面,就有算好的大小) 引自:https://blog.csdn.net/eleanoryss/article/details/69568450

轉載于:https://www.cnblogs.com/zzdbullet/p/9641726.html

總結

以上是生活随笔為你收集整理的嵌入式文件格式说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。