深入剖析之通過IAR MAP文件查看目標文件內存分配
http://blog.chinaaet.com/detail/27117.html
又是一年五四青年節,也不知道自己還會像現在意氣風發多少個青年節,也不清楚自己對技術的執着還會一如既往的堅持多久,總之既然現在依舊堅定不移的“前進”着(前段日子看到奧巴馬的競爭口號就是“前進”,說不定跟俺一個境界來,哈哈),未來不可預知,但可規划和爭取,把握好現在,莫要虛度光陰,我們年輕並不代表我們有浪費時間的理由~比較推崇特權的那句話,“技術源於積累,成功源於執着”,大家共勉之~
哈哈,感慨發完了,該回歸正事了... ...不知道別的地兒方怎么樣,總之濟南今天天氣是格外的好,綠樹成蔭,草長鶯飛的,不寫點東西都覺着不舒坦了,我要是文人墨客的話估計早就開始吟詩作對了,不過既然俺是工科技術男,還是寫篇技術博客來的實際吧,嘿嘿~
好了,不天氣預報了,呵呵,來說說正題吧。本篇算是自己的一篇經驗總結吧,這里給大家分享一下,同時也讓自己養成文檔總結的好習慣。為了具體化問題,我這里還是以IAR開發Kinetis為例深入介紹一下。其實map文件(內存映射文件)可能初手開發的時候甚少有去關注它的,甚至好些都不知道它是干嘛的,呵呵,只有一些有經驗的老手或者搞移植搞深入研究的才會去查看它,初手往往上來就是在線調試、查看內存(這個都很少用)、看寄存器、斷點(這個用的也少)等等,但是等你了解了map文件,再去完成上述調試的時候會讓你事半功倍,且有一種運籌帷幄的感覺都不誇張。哈哈,說的這么多,還是上圖介紹吧(俺還是喜歡圖文並茂的感覺,話說喬布斯以前在每次開蘋果新品展示會的時候,你看見的絕對大多數是圖片形式的演講稿,因為喬大爺深諳這個道理,估計這也是為什么iOS,Mac OS都是UI強大的原因吧):
首先當然要生成map文件了,注意IAR的默認設置是不生成map文件的,我們需要手動設置一下,如下圖,然后點擊准備就緒之后編譯即可在$PROJ_DIR$\FLASH_256KB_PFLASH\List文件夾下找到:
生成之后,我們在IAR環境下打開它(當然可以以記事本直接打開,這里為了更直觀),map文件主要由以下幾部分構成:
(1)文件頭中顯示鏈接器版本,輸出文件名,MAP 文件名以及鏈接器命令行等。
(2)RUNTIME MODEL ATTRIBUTES 部份顯示 Endian 等屬性;
(3) PLACEMENT SUMMARY 部份顯示各sections 在存儲器中的分布;
(4)INIT TABLE 部份顯示與初始化有關的section tables;


