問題
IAR中默認(rèn)的入口函數(shù)是__iar_program_start,使能stack usage analysis之后:
生成的map文件中STACK USAGE章節(jié)里面會包含Program entry的stack使用相關(guān)信息:
如果對應(yī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)信息:
原因
正常來說,編譯器可以生成每個函數(shù)的調(diào)用和stack使用信息,鏈接器可以計(jì)算出每個根函數(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é)里面會包含Program entry的stack使用相關(guān)信息:
注意:上面的情況是基于如下的啟動代碼:
Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =__iar_program_start BX R0如果對應(yī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é)里面會包含Program entry的stack使用相關(guān)信息:
參考文獻(xiàn):
1.IAR C/C++ Development Guide (Stack usage analysis)
-
IAR
+關(guān)注
關(guān)注
5文章
354瀏覽量
36781 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
62979
原文標(biāo)題:如何獲取入口函數(shù)不是__iar_program_start的Program entry的stack使用情況
文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
LMX2592正常使用情況下溫度大概有多少?
TMS320C64x在高性能DSP應(yīng)用中的高速緩存使用情況
![TMS320C64x在高性能DSP應(yīng)用中的高速緩存<b class='flag-5'>使用情況</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
tc377燒錄時連接正常,但Program失敗了,為什么?
Banana Pi BPI-M7 RK3588開發(fā)板在 Linux 上檢查 Rockchip NPU 使用情況
![Banana Pi BPI-M7 RK3588開發(fā)板在 Linux 上檢查 Rockchip NPU <b class='flag-5'>使用情況</b>](https://file1.elecfans.com//web2/M00/FB/29/wKgZomaPnDiAOGuJAALT5qEdEtI669.jpg)
在IAR中生成庫文件并被應(yīng)用工程調(diào)用的參考流程(下)
![在<b class='flag-5'>IAR</b>中生成庫文件并被應(yīng)用工程調(diào)用的參考流程(下)](https://file1.elecfans.com/web2/M00/E7/F3/wKgZomZNk4eAdyIyAAAyqiodeDg710.png)
評論