問題
IAR中默認(rèn)的入口函數(shù)是__iar_program_start,使能stack usage analysis之后:
生成的map文件中STACK USAGE章節(jié)里面會(huì)包含Program entry的stack使用相關(guān)信息:
如果對應(yīng)啟動(dòng)代碼沒有使用默認(rèn)的入口函數(shù)__iar_program_start,需要使用--entry鏈接器選項(xiàng)指定對應(yīng)的入口函數(shù)(以使用入口函數(shù)Reset_Handler為例):
但是使能stack usage analysis之后,生成的map文件中STACK USAGE章節(jié)里面沒有包含Program entry的stack使用相關(guān)信息:
原因
正常來說,編譯器可以生成每個(gè)函數(shù)的調(diào)用和stack使用信息,鏈接器可以計(jì)算出每個(gè)根函數(shù)的最大stack使用。但是如果源代碼是用匯編寫的,那么對應(yīng)函數(shù)的調(diào)用和stack使用信息需要用戶指定(如果用戶不指定,鏈接器沒有辦法知道對應(yīng)的信息,從而沒有辦法計(jì)算出對應(yīng)的最大stack使用)。
解決辦法
需要在對應(yīng)的stack usage control file (suc)里面指定對應(yīng)的函數(shù)調(diào)用和stack使用信息:
對應(yīng).suc文件中指定對應(yīng)的信息:
/* Specify Reset_Handler as the Program entry */ call graph root ["Program entry"]: Reset_Handler; /* Specify Reset_Handler will call SystemInit and __iar_program_start */ function Reset_Handler: 0, a calls SystemInit, calls __iar_program_start;生成的map文件中STACK USAGE章節(jié)里面會(huì)包含Program entry的stack使用相關(guān)信息:
注意:上面的情況是基于如下的啟動(dòng)代碼:
Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =__iar_program_start BX R0如果對應(yīng)的啟動(dòng)代碼沒有調(diào)用__iar_program_start,那么suc文件里面需要指定入口函數(shù)調(diào)用的所有函數(shù):
/* Specify Reset_Handler will call init_data_bss, SystemInit, startup_go_to_user_mode and main */ function Reset_Handler: 0, calls init_data_bss, calls SystemInit, calls startup_go_to_user_mode, calls main;生成的map文件中STACK USAGE章節(jié)里面會(huì)包含Program entry的stack使用相關(guān)信息:
參考文獻(xiàn):
1.IAR C/C++ Development Guide (Stack usage analysis)
-
IAR
+關(guān)注
關(guān)注
5文章
381瀏覽量
37461 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64865
原文標(biāo)題:如何獲取入口函數(shù)不是__iar_program_start的Program entry的stack使用情況
文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
UVC+MSC實(shí)現(xiàn)中MSC線程未運(yùn)行的原因?
中興通訊憑借其在非洲大陸實(shí)施的“Signal Reach Program”榮獲WSIS 2025冠軍獎(jiǎng)

OBC/DC-DC/BMS/熱管理/智能座艙磁性元件使用情況與要求

在IAR Arm開發(fā)工具鏈中--function_sections編譯選項(xiàng)的使用

S32G3有沒有辦法從.map文件確定SRAM使用情況?
使用DLPC230-Q1 Control Program Lite調(diào)試時(shí),點(diǎn)擊連接時(shí)報(bào)錯(cuò)x80040154是怎么回事?
通過DLPC230 control program上位機(jī)可以投影png格式的圖片,我想請問一下系統(tǒng)是否支持投影動(dòng)畫?
安裝完Control Program 2.0.0.0,點(diǎn)擊Connect時(shí)候就會(huì)報(bào)錯(cuò),是哪里出了問題?
DLP230 control program是否支持一主多從模式?
Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見問題
LMX2592正常使用情況下溫度大概有多少?
TMS320C64x在高性能DSP應(yīng)用中的高速緩存使用情況

評論