【发布时间】:2010-09-28 04:50:25
【问题描述】:
有哪些方法可用于确定嵌入式/内存受限系统的最佳堆栈大小?如果它太大,则浪费了可以在其他地方使用的内存。但是,如果它太小,那么我们得到这个网站的同名......
尝试快速开始:Jack Ganssle 在 The Art of Designing Embedded Systems 中指出,“通过经验,人们可以学习标准、科学的方法来计算堆栈的适当大小:Pick一个随机的尺寸和希望。” 谁能做得比这更好?
要求提供更具体的示例。那么,如何使用IAR Embedded Workbench 工具链在没有操作系统的情况下针对具有 2 kB RAM 的MSP430 MCU 的 C 程序呢?此 IDE 可以在使用 JTAG 调试器时显示堆栈内容和使用情况。
【问题讨论】:
-
取决于您使用的芯片组/操作系统/编程语言。
-
很高兴看到这个问题有一些答案,不像stackoverflow.com/questions/177516/…
-
我在提问时看到了这个问题,但认为嵌入式倾斜将它们分开......
-
Jack Ganssle 不仅如此。我认为那只是他的介绍单。摘自他的书,第 2 版,p。 250:“由于很少有程序员有合理的方法来确定最大堆栈要求,所以总是假设你的估计是不正确的。对于系统中的每个堆栈,确保初始化代码用值 0x55 填充分配给堆栈的全部内存量. 以后调试的时候可以查看堆栈,通过在那个区域看不到0x55的块来检测堆栈溢出..."
-
我知道他说的还不止这些,但我试着用他做的同样的方式来使用:激发对这个话题的兴趣。 ;)
标签: memory embedded stack code-analysis