欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
深入剖析之通過(guò)IAR MAP文件查看目標(biāo)文件內(nèi)存分配
[打印本頁(yè)]
作者:
liuzhu
時(shí)間:
2015-9-10 00:56
標(biāo)題:
深入剖析之通過(guò)IAR MAP文件查看目標(biāo)文件內(nèi)存分配
又是一年五四青年節(jié),也不知道自己還會(huì)像現(xiàn)在意氣風(fēng)發(fā)多少個(gè)青年節(jié),也不清楚自己對(duì)技術(shù)的執(zhí)著還會(huì)一如既往的堅(jiān)持多久,總之既然現(xiàn)在依舊堅(jiān)定不移的“前進(jìn)”著(前段日子看到奧巴馬的競(jìng)爭(zhēng)口號(hào)就是“前進(jìn)”,說(shuō)不定跟俺一個(gè)境界來(lái),哈哈),未來(lái)不可預(yù)知,但可規(guī)劃和爭(zhēng)取,把握好現(xiàn)在,莫要虛度光陰,我們年輕并不代表我們有浪費(fèi)時(shí)間的理由~比較推崇特權(quán)的那句話(huà),“技術(shù)源于積累,成功源于執(zhí)著”,大家共勉之~
哈哈,感慨發(fā)完了,該回歸正事了......不知道別的地兒方怎么樣,總之濟(jì)南今天天氣是格外的好,綠樹(shù)成蔭,草長(zhǎng)鶯飛的,不寫(xiě)點(diǎn)東西都覺(jué)著不舒坦了,我要是文人墨客的話(huà)估計(jì)早就開(kāi)始吟詩(shī)作對(duì)了,不過(guò)既然俺是工科技術(shù)男,還是寫(xiě)篇技術(shù)博客來(lái)的實(shí)際吧,嘿嘿~
好了,不天氣預(yù)報(bào)了,呵呵,來(lái)說(shuō)說(shuō)正題吧。本篇算是自己的一篇經(jīng)驗(yàn)總結(jié)吧,這里給大家分享一下,同時(shí)也讓自己養(yǎng)成文檔總結(jié)的好習(xí)慣。為了具體化問(wèn)題,我這里還是以IAR開(kāi)發(fā)Kinetis為例深入介紹一下。其實(shí)map文件(內(nèi)存映射文件)可能初手開(kāi)發(fā)的時(shí)候甚少有去關(guān)注它的,甚至好些都不知道它是干嘛的,呵呵,只有一些有經(jīng)驗(yàn)的老手或者搞移植搞深入研究的才會(huì)去查看它,初手往往上來(lái)就是在線(xiàn)調(diào)試、查看內(nèi)存(這個(gè)都很少用)、看寄存器、斷點(diǎn)(這個(gè)用的也少)等等,但是等你了解了map文件,再去完成上述調(diào)試的時(shí)候會(huì)讓你事半功倍,且有一種運(yùn)籌帷幄的感覺(jué)都不夸張。哈哈,說(shuō)的這么多,還是上圖介紹吧(俺還是喜歡圖文并茂的感覺(jué),話(huà)說(shuō)喬布斯以前在每次開(kāi)蘋(píng)果新品展示會(huì)的時(shí)候,你看見(jiàn)的絕對(duì)大多數(shù)是圖片形式的演講稿,因?yàn)閱檀鬆斏钪O這個(gè)道理,估計(jì)這也是為什么iOS,Mac OS都是UI強(qiáng)大的原因吧):
首先當(dāng)然要生成map文件了,注意IAR的默認(rèn)設(shè)置是不生成map文件的,我們需要手動(dòng)設(shè)置一下,如下圖,然后點(diǎn)擊準(zhǔn)備就緒之后編譯即可在PROJDIR\FLASH_256KB_PFLASH\List文件夾下找到:
生成之后,我們?cè)贗AR環(huán)境下打開(kāi)它(當(dāng)然可以以記事本直接打開(kāi),這里為了更直觀(guān)),map文件主要由以下幾部分構(gòu)成:
(1)文件頭中顯示鏈接器版本,輸出文件名,MAP 文件名以及鏈接器命令行等。
(2)
RUNTIME MODEL ATTRIBUTES
部份顯示 Endian等屬性;
(3)
PLACEMENT SUMMARY
部份顯示各sections 在存儲(chǔ)器中的分布;
(4)
INIT TABLE
部份顯示與初始化有關(guān)的section tables;
(5)
MODULE SUMMARY
部份顯示所有被連接的文件信息,包括目標(biāo)文件和庫(kù)文件等;
(6)
ENTRY LIST
部份給出了所有函數(shù)的入口地址及其所在的目標(biāo)文件。
(7)文件尾中顯示了總的代碼和數(shù)據(jù)字節(jié)數(shù)(
想看下最后目標(biāo)代碼占用多少Flash和多少RAM的可以從這里查到
)。
本篇就挑出我們?cè)谡{(diào)試的時(shí)候常常會(huì)考慮到用到的幾個(gè)部分,當(dāng)然有興趣的可以每個(gè)部分都可以看看,會(huì)讓你受益匪淺的,下面就分部分介紹下:
(1)
PLACEMENTSUMMARY
,該部分主要顯示目標(biāo)代碼在芯片內(nèi)部的存儲(chǔ)器映射地址,可能會(huì)有人疑問(wèn)為什么會(huì)分配到這些地址的呢,其實(shí)這些地址分配都是在前文講的Linker文件(*.icf文件)里預(yù)定義好了,IAR根據(jù)所選目標(biāo)芯片就按照該定義分配地址段,然后燒寫(xiě)進(jìn)Flash,具體段定義可以到大前篇博客icf文件說(shuō)明詳細(xì)了解。
(2)
ENTRYLIST
,開(kāi)發(fā)工程內(nèi)所有函數(shù)的入口地址,個(gè)人覺(jué)著這部分很有用,通過(guò)該地址映射再結(jié)合調(diào)試的時(shí)候觀(guān)察內(nèi)存空間可以方便整個(gè)工程執(zhí)行情況,讓你了若指掌,而且也方便你解讀一個(gè)陌生程序的功能(例如參考別人的例程,網(wǎng)上的例程之類(lèi)的),總之個(gè)人覺(jué)著這個(gè)部分用處很大,有心人可以在此處做很大文章。
(3)這是map文件末尾部分,最后給出了整個(gè)工程文件占用的資源情況,即芯片內(nèi)部Flash和RAM的使用情況,便于你對(duì)工程開(kāi)發(fā)規(guī)模上的掌握,最后給出工程編譯鏈接輸出信息。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1