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/CC1312R:如何在断点后检测程序何时在固件中运行

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/953526/ccs-cc1312r-how-to-detect-in-the-firmware-when-the-program-run-after-breakpoint

器件型号:CC1312R

工具/软件:Code Composer Studio

在我的 RTOS 项目中、我使用与外部实时时钟(RTC)的时序同步。

当我在断点上停止或停止 CPU 时-我失去计时同步。 当我继续调试并且在断点后运行程序时、我必须在固件中检测程序是否在断点停止、并与在代码中为此执行特殊函数的 RTC 重新同步。

问题是如何在我的固件中检测 CPU 在断点或停止后运行的时间?

某些 CPU 寄存器中是否有挂钩函数或某个标志来通知我这一点?  

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

    您好、Emil、

    一个选项是使用 GEL OnHalt 回调:

    https://software-dl.ti.com/ccs/esd/documents/users_guide/gel/OnHalt.html

    每次停止目标时都会调用此回调函数。 您可以使用它、以便此 GEL 函数将写入某些未使用的存储器位置。 然后、您的应用程序可以检查此存储器位置以查看是否发生了暂停(并在读取后清除该值)。

    希望这对您有所帮助

    Ki

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

    感谢 Ki 快速回答问题。

    在我阅读 GEL 函数之后、按照您的想法、我解决了问题。

    OnHalt()
    {
       //使用0z01在地址0x20003137上设置 RunAfterBreakpoint_flg unsigned char 变量
       GEL_MemoryFill (0x20003137、0、0x1、0x1、0x0D);
    }


    这个想法的缺点是、在程序运行后、固件与未同步的时钟一起工作、直到 RunAfterBreakpoint_flg 变量的检查值。

    还有其他更好的解决方案吗?

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

    [引用 user="Emil Tchobanov"]是否还有其他更好的解决方案?

    这是我们(我和工程师)目前能想到的最好的。 如果我们提出更好的内容、我们将更新此主题。

    谢谢

    Ki

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

    谢谢你 Ki!