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.

[参考译文] TMS320F28035:我可以分配更大的堆栈吗?

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/625292/tms320f28035-can-i-allocate-stack-bigger

器件型号:TMS320F28035

您好!  

在 F2803x 的示例代码(与所有其他 C2000产品相同)中、我们将堆栈分配给 RAMM1、即0x400到0x800。

RAMM1   :origin = 0x000400、length = 0x000400  //片上 RAM 块 M1 *

堆栈        :> RAMM1,         PAGE = 1.

1.我想知道我们是否可以将堆栈分配给更大的 RAM、例如 RAMM1&L0SARAM?

否则、堆栈将限制为0x400。

如果是、我想知道堆栈是否会占据 RAMM1和 L0SARAM 之间的位置。 堆栈指针(SP)能否从0x7FF (RAMM1的末尾)跳到0x8000 (L0SARAM 的起始)?

堆栈指针只能访问0xFFFF、所以我们不能将.stack 分配给地址高于0xFFFF 的 RAM 空间、对吧?

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

    Howard、

    [引用用户="Howard Zou"]

    1.我想知道我们是否可以将堆栈分配给更大的 RAM、例如 RAMM1&L0SARAM?

    否则、堆栈将限制为0x400。

    如果是、我想知道堆栈是否会占据 RAMM1和 L0SARAM 之间的位置。 堆栈指针(SP)是否可以从0x7FF (RAMM1的末尾)跳到0x8000 (L0SARAM 的起始)?2. 堆栈指针只能访问0xFFFF、因此我们不能将.stack 分配给地址高于0xFFFF 的 RAM 空间、对吧?

    [/报价]

    您可以将堆栈分配到低64Kw (0x0000至0xFFFF)中的任何位置、但它必须是连续的存储器块。  不能执行 RAMM1&L0SARAM。  例如、您可以执行 L0SARAM_L1SARAM。

    此致、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    复位时、SP 指向地址0x400。 那么、如果我将堆栈分配给 L0SARAM_L1SARAM、我必须在代码中指向0x8000? 我该怎么做? 在 main()函数的开头编写一行代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    编译器引导例程_c_int00将负责分配栈指针。  用户无需执行任何操作。

    此致、

    David