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.

[参考译文] CCS/TMS320F28335:适当的堆栈大小

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595410/ccs-tms320f28335-appropriate-stack-size

器件型号:TMS320F28335

工具/软件:Code Composer Studio

 

我们如何了解、我们的程序占用了多少个堆栈大小?

我想确保我分配的堆栈大小足以容纳我的本地函数和变量。我想知道 CCS  在编译项目后是否告知我们有关项目的最小堆栈大小的大小?

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

    您可以在"Memory Browser"窗口下检查"Stack memory"。

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

    我知道我已将项目的堆栈内存从地址0x400分配到0x700、但我不知道这个数量是否足够用于我的项目。如果我运行我的项目、 在处理过程中、每个函数都需要不同的堆栈大小。如果局部函数和变量需要大于0x300字的存储器、则程序将无法正常工作、如何从堆栈存储器中了解程序的用法?
    我正在期待 CCS 在编译和链接后提供的文件,该文件中已写入了我的堆栈项目使用情况。例如,它说我:我的项目的最小堆栈大小为0x230字,然后我将确信0x300足以满足我的要求 项目。


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

    [引用 user="Marjan gh"]、如何从堆栈内存中了解程序的用法?

    这就是我在上面提到的、您可以在调试会话期间在内存浏览器中实时检查堆栈内存。

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

    "检查内存浏览器"是唯一的方法吗?
    例如、用于 ARM 微控制器的 Keil IDE 会生成一个.htm 文件、其中提到了堆栈的最大使用量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Marjan gh"]唯一的方法是"检查内存浏览器"吗?
    例如、用于 ARM 微控制器的 Keil IDE 会生成一个.htm 文件、其中提到了堆栈的最大使用量。

    好的问题、这里有一个称为.map 文件的文件。 成功构建项目后、.map 文件将在项目文件夹的 Debug 文件夹下创建。 您也可以在此处查看堆栈分配。

    此致、

    Gautam

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

    我熟悉.map 文件,因为您知道它只是包含我们为项目分配的堆栈数量,它不包括最大堆栈使用量,
    如您所述、"在调试会话期间在内存浏览器中实时检查堆栈内存"可能是了解堆栈最大使用情况以防止程序运行期间堆栈溢出的最佳方法。

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

    [引用 user="Marjan gh"]正如您提到过的,“在调试会话期间检查内存浏览器中的堆栈内存实时性”可能是了解堆栈最大使用情况以防止程序运行期间堆栈溢出的最佳方法。

    这就是我验证风险的使用方法。

    此致、

    Gautam