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.

[参考译文] CCS/TMS320F280049:如何读取 RPC?

Guru**** 2613335 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/693819/ccs-tms320f280049-how-to-read-rpc

器件型号:TMS320F280049

工具/软件:Code Composer Studio

我的客户问:

我想在产生看门狗中断时读取运行时 RPC 寄存器(返回程序计数器),并在执行相应的复位之前将其存储在非易失性存储器中。 是否有办法执行此操作?

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

    这应该是可以执行的、但我认为需要组装。 您可以从看门狗函数将 RPC 推送到堆栈、然后有许多汇编指令可以对堆栈进行操作、以将其放入可由 C 访问的寄存器中或直接插入闪存中。

    例如、您可以在 C 代码中使用内联汇编指令

    asm ("推送 RPC");

    您可以在此处查看完整的汇编指令集:

    www.ti.com/.../spru430f.pdf

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

    弗兰克、

    正如 Kris 所说、这可以通过一个简短的汇编函数来完成。 这样做:

    ;汇编存根以获取 RPC

    全局_getRPC

    getRPC:
    推送  RPC
    弹出   ACC
    LRETR

    将其放置在汇编文件中并将其添加到您的工程中。 然后、您只需在 C 代码中"extern "函数、如下所示:
    extern unsigned int getRPC (void);

    如果遇到任何问题、请重新发布。

    此致、

    Richard

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

    弗兰克、

    很抱歉,我意识到我回答了问题的 RPC 部分,但非易失性存储部分没有回答。  在 C2000上、将少量数据写入内部闪存并不是那么简单。  通过此 Wiki 页面可查看一些详细信息:

    我询问是否有人对您的设备有更最新的信息。

    此致、

    Richard