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.

[FAQ] [参考译文] [常见问题解答] TMS570LC4357:我要在 SW 中读取堆栈指针

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1275847/faq-tms570lc4357-i-want-to-read-stack-pointer-in-sw

器件型号:TMS570LC4357

如何在源文件中读取堆栈指针?

我是否需要编写汇编代码来读取堆栈指针?

此致、

M·塞尔瓦拉伊  

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

    你是否有用于读取  TMS570LC4357堆栈指针的汇编代码?

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

    尊敬的 Manoraj:

    实际上内核寄存器的 R13将作为一个堆栈指针。

    但问题是、TI CGT 编译器不支持将内核寄存器值直接复制到变量。 我过去也没有发现任何与此相关的代码。

    所以、我自己做了一种方法来做到这一点。 它是:

    我现在所做的是、我刚刚声明了一个寄存器变量、我直接将 R13寄存器值复制到该寄存器变量。 在我将值移动到该寄存器变量后、我可以再次将其复制到任何所需的变量。

    您可能会在这里感到困惑、因为我怎么知道寄存器对应于寄存器变量、实际上我最初并不知道这一点。 我刚刚进行了一次调试、在调试窗口中看到了变量 Stack_Pointer_Temp 的寄存器、然后我停止了调试、之后我在下面添加了指令

    __ASM__易失性(" MOV R0、R13 \n");

    因此、在您的情况下、这可能是、也可能不是同一个寄存器、您还应该执行虚拟调试以找出分配给 Stack_Pointer_Temp 的寄存器。

    我附加的代码供您参考:
    e2e.ti.com/.../Stack_5F00_Pointer_5F00_Value_5F00_Copying_5F00_to_5F00_Variable_5F00_LC4357.zip

    --

    谢谢。此致、
    Jagadish。