RTD 驱动程序版本(R23-11 v1.0.0)
我们来自 Quantum rfp 团队,为 SAF9000 芯片工作。我们正在尝试使用 RTD 的 Wdg(看门狗)驱动程序,发现了一些问题,例如 wdg 调用试图挂起所有中断,然后又恢复中断。因此希望得到一些支持,以帮助确定 wdg 的根本原因/正确使用方法,并解决我们面临的问题。请支持一下。
我们尝试使用的当前 RTD 配置(wdg 和平台 xdm 文件)附后:
wdg- 启用直接服务模式。
使用以下调用:
用于初始化:
请告诉我在直接服务模式下,用于初始化和喂养看门狗的调用是否正确?
这些调用是否会干扰其他中断,从而导致其他功能问题?
谢谢 Cuong。
首先,我们开始使用间接服务,但是由于我们已经将 gptChannelConfiguration_0 用于其他计时器目的,因此我们无法在 " Wdg 外部触发计数器 " 的 wdg 配置中使用同样的间接服务。我们还尝试在 wdg tresos 配置中定义 gptChannelConfiguration_1,并尝试将其用于 wdg tresos 配置中的 " Wdg 外部触发信号计数器 ",但由于某些原因(出现了红十字标记)它不允许这样做。就在那时,我们改用了直接模式。
根据您的建议,我将尝试使用 Wdg_43_Instance0_Service 函数。如果问题仍然存在,我将再次尝试使用间接服务,至于配置问题,我将与您联系。
你好@renukasc
我发现你使用 SetMode 喂养看门狗是错误的。
使用直接服务:使用 Wdg_43_Instance0_Service
函数使用间接服务:使用 WDG_43_instance0_setTriggerCondition 函数。
请在 Wdg 模块中查看我们的示例,以了解我们如何使用 wdg_43_instance0_setTriggerCondition
路径:
此外:Wdg_43_Instance0_Instance0_Instance0_NULL_PTR)-> 与预编译一起使用,而不是后期版本
我可以尝试使用 Wdg_43_Instance0_Service。如前所述,监视程序功能很好。如果不馈电,看门狗 isr 将按预期触发信号。但是问题是当使用监视程序 API 时,我可以看到它会影响我们所有其他功能。看起来它正在影响中断。
正如之前在我们的应用程序中使用 wachdog 调用时指出的那样,再进行一次更新,看起来计时器 (gpt) 等其他中断没有得到服务,我们再也不会因此触发 isrs 了。
尝试改变中断的优先级,但无济于事。
还尝试在 /RTD/eclipse/plugins/Rte_TS_T40D94M10I0R0/src/SchM_Wdg.c 中注释OsIf_SuspendAllInterrupts()、OsIf_ResumeAllInterrupts() 。这也无济于事。
@renukasc
当启用"开发错误检测" 时,Wdg API 会使用 Wdg_ChannelValidateGlobalCall 和 Wdg_ChannelEndValidateGlobalCall。
这些函数使用 SchM_Enter/Exit_Wdg_WDG_EXCLUSIVE_AREA_06 和 SchM_Enter/Exit_Wdg_WDG_EXCLUSIVE_AREA_07。
请在您的 SchM 实现中验证 SuspendAllInterrupts 和 ResumeAllInterrupts 的行为方式。特别是:调用 ResumeAllInterrupts 后,所有中断是否都恢复到正常状态?
在调试过程中,我们最终观察到,如果Wdg_43_Instance0_Init 和 Wdg_43_Instance0_Service 调用 tresos 配置"Development Error Detection" 被设置,正常的定时器中断将停止,并且不会恢复。
当我们禁用 tresos 中的 "开发错误检测 "时,我们发现在使用 wdg 调用时,其他中断都正常。