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.

[参考译文] TMS320F28067:我们放置堆栈的位置是否有任何限制?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/927587/tms320f28067-are-there-any-restriction-of-the-place-we-put-stack-to

器件型号:TMS320F28067
主题中讨论的其他器件:C2000WARE

您好!

我的客户发现、对于同一个项目、如果他们将 .stack 设置为高于0xFFFF、则该项目将运行到非法陷阱中。

例如.stack:>RAML7,page=1

RAML7的范围为0x10000到0x12000。

但是、如果它们将堆栈放置在低于0xFFFF 的位置、就不会出现这样的问题。

我们在其中放置.stack 是否有任何限制? 什么可能导致问题?

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

    Howard、

    是的、由于堆栈指针范围只有16位、因此存在限制。

    有关更多详细信息、请参阅 C28x 指令集文档。

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

    Karthitheyan、
    但我还在 C2000WARE 中测试了我们的示例项目

    C:\ti\c2000Ware_3_02_00_00\device_support\f2806x\examples\c28\GPIO_toggle

    我尝试将堆栈修改为  

    .stack:>RAML7,page=1

    RAML7的范围为0x10000到0x12000。

    该项目仍然可以正常工作。

    为什么?

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

    我想这正是您的幸运。

    进入 main 后、查找 SP、它将大约为您定义的0x0000 <->栈大小。

    您可以跳过一些函数、查看堆栈在何处增长以及内容在何处弹出、从而真正了解堆栈指针当前指向的位置。

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

    因此、您是说、尽管我将堆栈指定为 RAML7中的堆栈、该堆栈从0x10000开始、

    堆栈仍将位于0x0000和0xFFFF 之间的某个位置、对吧?

    该限制适用于所有现有的 C2000器件、对吧?

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

    是的、你是对的。