從微控制器工程檔案中的map檔案可以了解到哪些資訊

2021-09-24 21:03:59 字數 1253 閱讀 1823

未完待續.........

首先乙個問題,iar工程中如何生成map檔案?

首先選中專案檔名,然後按這個路徑project/option/linker/list/在generlate linker listing前打勾,然後你就看到module map 這個選項選上了,然後編譯鏈結源**,就可以看到生成乙個副檔名是map的檔案,開啟這個檔案就看到**大小。

第二個問題,map 檔案包含哪些資訊?

我們一般去找map檔案的時候,是想看一下微控制器的code區和ram區已被占用的空間,但空間不多的時候,可以看看哪些檔案占用的ram空間較大,對應檔案的哪些變數和函式占用的ram空間較大,一般定義的較大的全域性變數緩衝區會占用較大的ram空間。如果需要減少空間占用的話,可以考慮是否可以減小緩衝區或是否可以將全域性變數修改為區域性變數等等。

由最開始部分的資訊,我們可以看到heap和stack分別的空間大小,這裡由下圖可以知道heap空間大小為0x100,stack的空間大小也是0x100.

檔案較靠前的位置可以看到message資訊,這裡的資訊是你編譯工程的時候,提示的一些警告warning資訊和error資訊.

可以從下圖的module sumary位置看到各個檔案所占用rom和ram空間大小,以及累加之後,總的占用的空間大小。ro code和ro data在rom區,rw data在ram區。

通過下面的entry list可以看到哪乙個檔案的哪乙個函式或者變數占用的ram空間較大

map檔案的最後,會列出乙個rom和ram的總共的使用情況列表:

檔案 微控制器 如何檢視你寫的微控制器程式有多大?

如下圖所示,就是乙個編譯好的hex檔案 ro data 表示唯讀資料,程式中所定義的全域性常量資料和字串都位於此處。rw data 表示已初始化的讀寫資料,程式中定義並且初始化的全域性變數和靜態變數位於此處。zi data 表示未初始化的讀寫資料,程式中定義了但沒有初始化的全域性變數和靜態變數位於此...

基於Xmodem協議的PC與微控制器檔案傳遞

在我們的xp系統中有乙個超級終端,他是系統中自帶的串列埠程式,在許多時候我們可以使用它來除錯嵌入式裝置的程式,另外這個程式還有另外一種功能就是檔案傳遞。在超級終端中支援多種傳送協議,本文以xmodem為例來實現pc機與微控制器完成檔案傳遞。首先先介紹一下xmodem協議,xmodem協議是一種使用撥...

QT工程中的檔案介紹(1) pro檔案

我也才開始學習qt的菜鳥。但是前幾天有同學叫我給他講一下qt的基本的程式設計。在過程中我發現了自己的不足,這個要改進。因為我相信我會變成老鳥的。當然我發現同學對qt的工程檔案不是很了解,又恰好我以前研究過,看過一些資料,但又想到可以也有和我一樣的菜鳥的同志們。所以我打算share一下我對qt中一些檔...