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.

[参考译文] LAUNCHXL-CC1310:如何查找看门狗触发源、程序地址?

Guru**** 2482475 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1205111/launchxl-cc1310-how-to-find-out-watchdog-trigger-source-program-address

器件型号:LAUNCHXL-CC1310

当程序进入中断看门狗时、我遇到了问题。

如何找出看门狗的触发源? 程序地址、其中程序挂起且看门狗工作?

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

    尊敬的 Igor:  

    我假设 WDT 发出了中断。 这意味着您的应用程序不调用 WatchdogHandle (watchdogHandle)。  

    因此、如果您有多个任务、也许其中一个任务在无限运行、不允许负责调用  Watchdog_Clear 的任务执行。

    看门狗模块本身无法提供挂起程序的 PC。 但您可以使用 CCS 中的运行时对象视图来确定任务状态、以检查 哪个任务被取代。

     请查看我们的调试指南以检查 ROV 的使用情况。  

    https://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_4_20_02_07/docs/proprietary-rf/proprietary-rf-users-guide/proprietary-rf-guide/debugging-index.html

    此致、

    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:  

    我不是很确定你读的是什么。 您如何验证它是否是程序挂起的程序计数器?  

    请参阅技术参考手册中的异常进入和退货部分。  

    https://dev.ti.com/tirex/explore/node?node=A__ALx-C.dropGrNLdBPVoAWQ__cc13x0_devices__coGQ502__LATEST

    此部分描述了进入处理程序时保存的内容。

    此致、

    SID