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.

[参考译文] TMS320F28388D:访问 C 代码中的堆栈指针。

Guru**** 2614265 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/977769/tms320f28388d-access-to-stack-pointer-in-c-code

器件型号:TMS320F28388D

我们将收到一个 PIE 中断、我希望能够从 C 代码转储堆栈。 这在 CPU1/CPU2上。

我读取的所有内容都表明我无法访问 SP 寄存器。 如何从 C 代码执行此操作。

我们在0x400定义了一个.stack、我们可以访问该存储器空间、但我需要知道最后知道的位置是转储实际堆栈。

根据文档 spru430f.pdf 表3-5显示了调用 ISR 异常时如何将寄存器压入堆栈、如何将它们从堆栈中弹出、以便我们可以将它们转储到控制台?

具体来说、我们需要推入中的第7个字节、因为这是最后一个已知的 PC。


Dorion

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

    Dorion、

    根据我的理解、您有兴趣了解从何处跳转到该特定中断、并在每次中断发生时转储相同的中断。

    您需要编写汇编代码来访问/获取栈指针、并通过偏移该位置来读取相应存储器位置的内容。

    这需要在一开始就完成、以便它可靠地工作。

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

    Karthitheyan、

     因此、我们将接收和异常中断、SP 指向堆栈上的最后一个条目。 我同意您的意见、我需要编写一些汇编代码、但我不确定如何编写。

     您有任何示例代码吗?

     空 ISRExceptionFunct ()

       int16_t stackP
     asm (" MOV #stackP、SP")



     这不起作用、我遇到编译错误、但在汇编代码中它找不到 C 变量 stackP。 我还在 stackP 前面添加了下划线。

     示例会更好。

    Dorion

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

    您好!  

    对于返回 SP 内容的 C-Callable 汇编例程、请参阅此线程的最后一个响应:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/592314?CCS-TMS320F28069F-get-stack-pointer-postion

    此致

    Lori