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.

[参考译文] TMS320F28377S:堆栈分配的要求是什么?

Guru**** 2454880 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/856236/tms320f28377s-what-is-the-requirement-for-stack-assignment

器件型号:TMS320F28377S

您好!

我的项目中的一个缺省 cmd 文件正在将堆栈分配给大小为0x400的 RAMM1。  

我尝试将堆栈分配给 RAMGS7。 但分配会导致 hw_init()失败。

然后、堆栈被分配给大小为0x800的 RAMD1。 这种分配工作正常。

是否有指定堆栈的特定规则? 为什么无法将栈分配给 RAMGS?

我是否可以使用".stack             :>> RAMM1 | RAMD1      PAGE = 1"将堆栈分配给 RAMM1和 RAMD1?

数据表显示 RAMD1是安全存储器。 什么是安全存储器?

此致

Orient

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

    只要堆栈指针不用于任何其他用途、您就可以将其分配给 RAMGS。 在您的情况下,我假设链接器会在 RAMGS7中放置一些段,这些段与堆栈指针相冲突,导致 HW_init()失败。

    安全存储器的访问受限、您可以参阅 TRM 以了解有关此内容的详细信息。

    此致

    Baskaran

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

    Baskaran、您好!

    是否应在连续空间中分配.stack?

    此致

    Orient

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

    是的、它应该是存储器的单个块(范围)。 中间不能有空穴。

    此致

    Baskaran