问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在IAR Embedded Workbench中分析和监控堆栈使用

发布网友 发布时间:2024-10-03 15:27

我来回答

1个回答

热心网友 时间:2024-10-03 15:41

堆栈在嵌入式系统中扮演着核心角色,正确设定堆栈大小是确保系统稳定与可靠的关键。过小的堆栈可能导致堆栈溢出,引起系统异常;而过大的堆栈则浪费宝贵的RAM资源。由于堆栈由开发者指定,因此,了解堆栈使用情况对于正确设定堆栈大小至关重要。

本文旨在介绍如何使用IAR Embedded Workbench进行堆栈分析与监控。它不仅帮助开发者设定适当的堆栈大小,提升系统稳定性和可靠性,同时优化RAM使用。若需详细了解堆栈基础知识,请参考过往推荐文章。

静态堆栈使用分析涉及链接器计算根函数(不被其他函数调用的函数,包括启动函数、中断函数与RTOS任务函数等)的最大堆栈使用量。通过在IAR Embedded Workbench中启用堆栈使用分析,链接器生成的map文件将列出每个根函数的最大堆栈深度。在Project>Options>Linker>Advanced中,选择Enable stack usage analysis开启该功能。

请确保在Project>Options>Linker> List选项卡中勾选Generate Linker map file以使map文件生成。举例来说,程序入口根函数(__iar_program_start)的最大堆栈深度为288字节,中断根函数(__interrupt_170和_default_handler)的最大堆栈深度为120字节。

注意:1. 计算的最大堆栈深度需基于准确的函数堆栈使用信息,编译器通常为每个函数生成此信息。但若涉及函数指针的间接调用,开发者需提供相应的调用信息。2. map文件中的最大堆栈深度不包含中断/任务抢占所需的额外堆栈空间,需由开发者手动计算。更多详情请参阅Arm Cortex-M专家Joseph Yiu的文章。

运行时堆栈使用监控是通过C-SPY调试器实现的。调试器在程序启动前用特殊数值模式(例如0xCD)填充堆栈区域。运行一段时间后,堆栈内存从末端向上检查,直至找到与0xCD不同的值,即SP曾经到达的最大位置。由此计算出堆栈大小并减去未被覆盖的部分,确保保留额外空间以防测试不充分或未反映所有可能的运行情况。

在IDE Options> Stack选项中勾选Enable graphical stack display and stack usage tracking以启用此功能。调试时,通过View>Stack打开Stack窗口,执行停止操作时,C-SPY会更新堆栈使用情况。

图形显示的堆栈条,左端代表堆栈底部,即SP空时的位置,右端代表堆栈内存的末端。深灰色区域表示已使用的堆栈内存,浅灰色区域表示未使用的堆栈内存。当堆栈使用超过预设阈值时,图形堆栈条会变为红色。

注意:1. 该功能无法在堆栈溢出时立即检测,只能检测留下的痕迹。尽管这是一项可靠的堆栈使用监控方法,但并不能保证总是检测到堆栈溢出。例如,堆栈溢出时可能未正确增长到范围外,甚至改变了堆栈区域以外的内存,但堆栈内的数据未被修改。2. 该功能仅监控系统的主堆栈,无法监控RTOS中的任务堆栈。为此,IAR Embedded Workbench提供了对应RTOS的调试插件,用于监控运行时RTOS的任务堆栈。

总结:正确设定堆栈大小对于嵌入式系统至关重要,本文介绍了如何使用IAR Embedded Workbench进行静态堆栈分析与运行时监控,以帮助开发者了解应用程序堆栈使用情况,提升系统稳定性和可靠性。

参考文献:

1. IAR C/C++ Development Guide (Stack usage analysis)

2. How much stack memory do I need for my Arm Cortex-M applications? : community.arm.com/arm-c...

3. C-SPY® Debugging Guide (Monitoring stack usage)

4. IAR Embedded Workbench Integrated software and RTOS: iar.com/products/integr...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
红米手机怎么设置仅在wifi下载 映泰A770L3 6.x详细参数 映泰A770L3 6.x重要参数 问心诗集电子书txt全集下载 《第26局世界大学生运动会诗歌集》txt全集下载 自由体诗的欣赏txt全集下载 徐志摩诗全集txt全集下载 站立的近义词有哪些 站立的近义词是什么 小学语文教师工作评价1000字 吉林电气工程学院什么样 iar软件是用来干嘛的 铃木羚羊简介 天正建筑的设置栏去哪儿了? 大原丽子大原丽子-作品 ...一个男人背着我走,路上遇到很多狗,但是没攻击我们,这个梦是什么意思... 现在音乐学院声乐专业美声的都唱什么歌啊!~~~女高女中男高男低都要... 减肥期间吃什么水果能保持身材?减肥期间千万不能吃什么食物? skn智能门锁电池可以用多久啊? skn的智能门锁是用电池还是充电的 ...着不同的数字的卡片(-3)(-5)(0)(+3)(+4)请按要求抽出卡片,完成... skn智能门锁的哪一款具有联网功能? 华为荣耀6黑屏怎么办? ...有线联机顶合,有线联路由器(新买)有线联光猫,红结果看电视mo糊不... 路由器是光猫吗? 电视节目光猫只有30赫兹吗 信息化专业有哪些 ps怎么让图片的边框发光ps怎么让图片的边框发光 ps如何把框架某一样颜色去掉ps如何把框架某一样颜色去掉图片 ps中图框工具有什么用ps中图框工具有什么用处 做ps框架大小怎么选做ps框架大小怎么选 ...但硬盘属性显示空间被占用了.要怎么把文件显示 文件夹打开是空的 ...下忙吧,硬盘进行碎片整理后,很多文件夹不见了,但可用空间大小没变... 竹胶板的寿命怎样 河南建筑工程竹胶板附近厂家 生产厂家 竹胶板使用次数 竹胶板正常情况下能周转多少次?想找一批能周转12次以上的竹胶板? 桥梁工程竹胶板一般能周转几次? 淘宝买东西收到打开一看是坏的(点读笔打开不出声音)和卖家联系,说叫我... 在淘宝上<汇兴数码专营店>买了清华紫光的点读笔,承诺全国联保,不到半年... 162适合多少斤 惠而浦智能吸尘器怎样使用 微信朋友圈灰色定位 ...想睁开眼睛但很用力也睁不开。连续好几天了。 空调1.5匹耗电量一小时多少电。 一级能效1.5匹空调耗电量 玩虐杀原型2画面相当不流畅 看看我电脑咋办 丽台P2000工作站建模卡怎么解决 六分之五加四分之一加三分之二脱式计算? 脱式计算来计算的要简算,六分之五减四分之一乘以三分之二,括号除以六分...