This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F280049C:堆栈大小有问题

Guru**** 2563960 points
Other Parts Discussed in Thread: TMS320F280049C

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/866405/compiler-tms320f280049c-problem-with-stack-size

器件型号:TMS320F280049C
主题中讨论的其他器件: 冲击

工具/软件:TI C/C++编译器

我正在从事 TMS320F280049C DSP 工作。 我使用堆栈使用视图分析了不同函数的堆栈大小。 我要附上它的屏幕截图。 ADCAISR 已占用最大40字节的存储空间。 如何增加该大小以避免堆栈溢出。 为什么所有函数都固定40字节?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chirag、

    堆栈使用视图是对每个函数堆栈使用情况的静态分析。  我认为专用大小是特定函数本身使用的大小、而包含大小是特定函数及其调用的任何嵌套函数使用的大小。  中断不包含在包含的大小中、因为静态分析不知道何时可能发生中断。  对于 C2000器件、显示的大小为16位字、而不是字节。

    在本例中、ADCA1ISR 静态使用40个字。  黄色应该表示其用途接近堆栈大小、但我发现无论堆栈大小如何、图形始终以黄色显示最大的条。  您的堆栈可能远大于40个字。  栈大小在项目属性-> C2000链接 器->基本选项中指定。  一个空白框将堆栈默认为0x400字。

    此致、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="David M. Alter"]专用大小是特定函数本身使用的大小,而包含大小是特定函数加上它调用的任何嵌套函数使用的大小。

    没错。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它以字节为单位显示堆栈大小。 我已附上 SC。 它被限制在40字节。 在使用 JTAG 进行调试或独立运行时、是否有任何工具可查看动态内存分配。

    此致

    Chirag

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chirag、

    堆栈图上的悬停文本可能表示字节、但显示的值以16位字表示。  下面是一个显示了26个字的 adcA1ISR 专用堆栈用法的示例:

    在我在 adcA1ISR()中声明了一个100 16位字局部数组之后,这里是同一个项目。  本地变量位于栈上。

    您可以看到,adcA1ISR()堆栈使用增加了100个16位字。

    此外、悬停文本不显示最大堆栈使用率的百分比。  我不确定它到底显示了什么。  它似乎采用最大的堆栈用户并将其用作最大堆栈大小、然后显示其使用百分比。  这不是最大堆栈大小。  在 C2000连接器->基本选项的项目属性中指定了堆栈大小。

    在上面、我的项目的堆栈大小为0x200 16位字。

    工具中没有动态堆栈使用查看器。  您可以在初始化期间使用已知值(例如0xdead)填充堆栈、然后运行代码一段时间。  停止它、然后检查堆栈使用情况。

    此致、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、

    没错、我增加了函数的大小、它增加了以字表示的大小、而不是以字节表示的大小。

    谢谢。