当程序进入中断看门狗时、我遇到了问题。
如何找出看门狗的触发源? 程序地址、其中程序挂起且看门狗工作?
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.
当程序进入中断看门狗时、我遇到了问题。
如何找出看门狗的触发源? 程序地址、其中程序挂起且看门狗工作?
尊敬的 Igor:
我假设 WDT 发出了中断。 这意味着您的应用程序不调用 WatchdogHandle (watchdogHandle)。
因此、如果您有多个任务、也许其中一个任务在无限运行、不允许负责调用 Watchdog_Clear 的任务执行。
看门狗模块本身无法提供挂起程序的 PC。 但您可以使用 CCS 中的运行时对象视图来确定任务状态、以检查 哪个任务被取代。
请查看我们的调试指南以检查 ROV 的使用情况。
此致、
SID
我找到了一种获取挂起地址的方法、之后调用了 WDT 处理程序。 您认为这是正确的吗?
在偏移量8的寄存器 R13 (SP)中、我始终获得挂起 地址的值。
PS:我的程序中只有一个任务。
volatile uint32_t wdtFaultAddress;
/*
* ======== watchdogCallback ========
*/
void watchdogCallback(uintptr_t watchdogHandle)
{
uint32_t *stack_pointer = (uint32_t *)__get_MSP();
wdtFaultAddress = *(stack_pointer+8);
while (1) {}
}
尊敬的 Igor:
我不是很确定你读的是什么。 您如何验证它是否是程序挂起的程序计数器?
请参阅技术参考手册中的异常进入和退货部分。
此部分描述了进入处理程序时保存的内容。
此致、
SID