<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > KEIL MDK輸出map文件分析01

KEIL MDK輸出map文件分析01

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
前言

前面寫(xiě)了一篇文章對__main函數的執行過(guò)程做了一個(gè)粗略的跟蹤描敘,對一個(gè)燒錄了程序的STM32開(kāi)發(fā)板從啟動(dòng)復位到進(jìn)入用戶(hù)main函數的過(guò)程有了一個(gè)大概的了解,但是有很多問(wèn)題感覺(jué)還是模模糊糊,因此,今天又把KEIL MDK編譯、鏈接后生成的map文件簡(jiǎn)單分析一下,加深對鏈接器、嵌入式系統可執行映像特點(diǎn)的了解。、

本文引用地址:http://dyxdggzs.com/article/201611/322727.htm

一、文件分析流程


1、第一部分:Section Cross References

主要是各個(gè)源文件生成的模塊之間相互引用的關(guān)系。

stm32f10x.o(STACK) refers (Special) to stkheap2.o(.text) for __use_two_region_memory

比如上面這句話(huà),stm32f10x.o是stm32f10x.s生成的目標文件模塊,(STACK)是文件內定義的一個(gè)段,鏈接器把它視為一個(gè)Section,輸入節。它引用了模塊stkheap2.o輸入節(.text)里面的一個(gè)全局符號__use_two_region_memory(可能是一個(gè)函數或變量)。這個(gè)(Special)不知道是什么含義。

剩下的基本都是這用的意思。

stm32f10x_vector.o(.text) refers to __main.o(!!!main) for __main

__main.o(!!!main) refers to kernel.o(.text) for __rt_entry

kernel.o(.text) refers to usertask.o(.text) for main

上面這幾個(gè)對于程序意義比較重大用戶(hù)在啟動(dòng)代碼中調用了__main.o模塊中的__main函數,__main又調用了kernel.o中的__rt_entry函數,最后kernel.o又調用了用戶(hù)定義的main主函數。

2、第二部分:Removing Unused input sections from the image.

就是將庫中沒(méi)有用到的函數從可執行映像中刪除掉,減小程序的體積。

Removing os_mbox.o(.text), (1094 bytes).

Removing os_mutex.o(.text), (1744 bytes).

Removing os_sem.o(.text), (1016 bytes).

3、第三部分:Image Symbol Table

Local Symbols


符號表里的局部符號。


../../angel/boardlib.s0x00000000Number0boardinit1.o ABSOLUTE


../../angel/handlers.s0x00000000Number0__scatter_copy.o ABSOLUTE


../../angel/kernel.s0x00000000Number0kernel.o ABSOLUTE


../../angel/rt.s0x00000000Number0rt_raise.o ABSOLUTE


../../angel/scatter.s0x00000000Number0__scatter.o ABSOLUTE


../../angel/startup.s0x00000000Number0__main.o ABSOLUTE


../../angel/sys.s0x00000000Number0sys_exit.o ABSOLUTE


../../angel/sysapp.c0x00000000Number0sys_wrch.o ABSOLUTE


../../armsys.c0x00000000Number0_get_argv.o ABSOLUTE


../../division_7m.s0x00000000Number0rtudiv10.o ABSOLUTE


../../fpinit.s0x00000000Number0fpinit.o ABSOLUTE


../../heapalloc.c0x00000000Number0hrguard.o ABSOLUTE


../../printf.c0x00000000Number0_printf_outstr_char.o ABSOLUTE


../../signal.c0x00000000Number0defsig_exit.o ABSOLUTE


../../stdlib.c0x00000000Number0exit.o ABSOLUTE


../../stkheap.s0x00000000Number0heapext.o ABSOLUTE


以上是一些系統內部的局部符號,還有用戶(hù)的一些局部符號



4、第四部分:Global Symbols


全局符號


_terminate_user_alloc- Undefined Weak Reference


_terminateio- Undefined Weak Reference


__Vectors0x08000000Data4stm32f10x_vector.o(RESET)


__main0x08000131Thumb Code8__main.o(!!!main)


__scatterload0x08000139Thumb Code0__scatter.o(!!!scatter)


__scatterload_rt20x08000139Thumb Code44__scatter.o(!!!scatter)


這些是一些系統的全局符號


Font8x160x08001a82Data2048tft018.o(.constdata)


Font8x80x08002282Data2056tft018.o(.constdata)


codeGB_160x08002a8aData770tft018.o(.constdata)


Region

Table
Base0x08002dc0Number0anon
obj.o(Region
Table)

Region

Table
Limit0x08002de0Number0anon
obj.o(Region
Table)

后面這兩個(gè)符號我認為很重要,在運行庫代碼將可執行映像從加載視圖轉變?yōu)榭蓤绦幸晥D的過(guò)程中起到了關(guān)鍵作用。Number是指它并不占據程序空間,而只是一個(gè)具有一定數值的符號,類(lèi)似于程序中用define和EQU定義的。所以這里,我先放下map文件的分析,先通過(guò)仿真調試,看這兩個(gè)數值在程序中怎么用。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: KEILMDKmap文

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>