1、 文檔目標
通過Arm DS生成的Map文件,查看工程的堆棧使用情況。
2、 問題場景
在對于工程進行調試和測試的時候,工程師通常需要了解目前工程的堆棧使用情況,是否有函數或者變量占用了過多的堆棧空間。或者在對于一些錯誤進行排查的時候也需要查看堆棧的使用情況。除了可以查看callgraph文件外,也可以通過Map文件進行查看。
3、軟硬件環境
1)、軟件版本:Arm DS 2023.0
2)、電腦環境:Windows 11
3)、外設硬件:無
4、解決方法
1)、Arm DS要生成Map文件需要在Properties窗口中,C/C++ Build->Setting->Arm Linker 6->Additional Information配置中,勾選Generate image map(--map)。并且在最下面的Redirect diagnostics output to file(--list)后面的輸入框中輸入map文件的文件名(如圖4-1)。
如果需要查看全局變量的堆棧使用情況,需要勾選上List stack usage of global symbols這個選項。

圖4-1
2)、重新構建工程后,就可以在工程目錄下面看到map文件的生成了。(如圖4-2)

圖4-2
3)、在Map文件的Image Stack Usage Information.部分就可以看全局變量的堆棧情況了(如圖4-3)
Maximum stack usage for Image.(Image部分的最大堆棧使用量)
Maximum Stack Usage for svcRtxKernelStart 0xe8 bytes.(svcRtxKernelStart的最大堆棧使用率0xe8字節)
Call chain for maximum stack usage(最大堆棧使用的調用鏈:):
svcRtxKernelStart => osRtxThreadStartup => svcRtxThreadNew => osRtxMemoryAlloc => MemBlockPtr(最大調用鏈)
........
Maximum Stack Usage for LED_Initialize 0x70 bytes.(LED_Initialize的最大堆棧使用率為0x70字節。)
Call chain for maximum stack usage(最大堆棧使用的調用鏈):
LED_Initialize => HAL_GPIO_Init(最大調用鏈)

圖4-3

首頁 > 資源中心 > FAQ
