弄清楚如何为嵌入式应用程序和其中的任务确定堆栈的大小可能具有挑战性。在许多情况下,开发人员会选择一个他们认为应该足够的值,这些估计有时有点短,大部分时间是粗略估计,很少出现。虽然嵌入式开发人员在整个开发周期中应该监控他们的堆栈使用情况,但有时开发人员应该执行最坏情况的堆栈分析,例如:
它们在 RAM 上运行得非常危险
需要提交新的代码版本
他们正在最终确定用于生产的固件
在这篇文章中,我将讨论开发人员可以执行最坏情况堆栈分析的三种不同方式。
技巧 1 – 手工计算
在过去,嵌入式软件开发人员过去不得不手动计算他们的堆栈使用情况,这可能是一项棘手的工作。为了手动计算堆栈使用量,开发人员需要知道:
他们要进行多少次函数调用
在每个函数中将存储在堆栈中的局部变量
将存储在堆栈中的返回地址的大小
将存储在堆栈中的局部变量的大小
如果在执行期间发生中断,中断帧将有多大
可能发生的嵌套中断数
正如你可以想象的那样,找到所有这些值并在进行更改时继续跟踪它们可能非常耗时且容易出错,这就是为什么不再推荐这种方法的原因,但嵌入式开发人员尝试一次以更深入地了解其他技术正在做什么仍然很有用。
技巧 2 – 使用静态代码分析器
许多静态代码分析器可用于估计最坏情况下的堆栈使用情况。在代码分析期间,该工具将