工具/软件:Code Composer Studio
在我的 RTOS 项目中、我使用与外部实时时钟(RTC)的时序同步。
当我在断点上停止或停止 CPU 时-我失去计时同步。 当我继续调试并且在断点后运行程序时、我必须在固件中检测程序是否在断点停止、并与在代码中为此执行特殊函数的 RTC 重新同步。
问题是如何在我的固件中检测 CPU 在断点或停止后运行的时间?
某些 CPU 寄存器中是否有挂钩函数或某个标志来通知我这一点?
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.
工具/软件: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 变量的检查值。
还有其他更好的解决方案吗?