我怎么知道复位是不是看门狗引起的??

12个职位/ 0个新职位
最后发表
李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
我怎么知道复位是不是看门狗引起的??

嗨,对话框中,

现在我需要知道复位是否由看门狗引起,可以吗?我能做什么?

设备:
MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨,李阳,

嗨,李阳,

您可以通过用一个自定义空函数替换jump_table.c文件中的platform_reset_func来检查是否存在平台重置问题,并尝试在调试中使用断点捕获该函数的调用。

由于MT_dialog

李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
嗨,对话框中,

嗨,对话框中,

也许是我的问题还不清楚。你看DA14580的复位有很多种,我只关心看门狗复位的SW。当DA14580reset,然后它再次运行,我的应用程序需要知道重置是由看门狗或不是。

由于李阳

MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨,李阳,

嗨,李阳,

对不起,我不能。我误解了你的问题。

如果复位是由看门狗定时器引起的,则转到NMI_Handler。你能调试你的程序并试着在那里捕获它吗?

由于MT_dialog

李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
嗨,对话框中,

嗨,对话框中,

我知道如果复位是由看门狗定时器引起的,它将转到NMI_Handler。它会重启MCU。
只有当系统启动时,我的应用程序才会判断复位是否由看门狗引起。
但是当MCU重启时,我找不到任何东西来证明MCU是被看门狗重启的。

由于李阳

MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨,李阳,

嗨,李阳,

没有特定的方法来知道复位是由看门狗定时器发出的。我能想到的一种方法是,在外部存储器中存储一个值(如果您的系统有)或者在一个保留的空间中,从NMI处理器读取这个特定的内存,看看是否有重置。

由于MT_dialog

李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
嗨,MT_dialog,

嗨,MT_dialog,

谢谢你的建议!我想你已经解决了我的问题。另一个问题是如何处理保留的空间?它可用吗?

由于李阳

MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨,李阳,

嗨,李阳,

您可以在大多数SDK示例和参考设计中找到如何在保留内存空间中存储变量的示例,例如键盘ref设计。

为了在保留空间中存储一个变量,你可以使用这个例子int extended_timer_cnt __attribute__((section("retention_mem_area0"), zero_init));

问题是,当系统重新启动时,保留ram被system_ARMCM0.c中的SystemInit()初始化为零,所以我不确定这是否可以帮助你,即使你删除的部分,在那里初始化为零发生。外部内存场景更加确定。

由于MT_dialog

李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
嗨,MT_dialog,

嗨,MT_dialog,

谢谢你的场景!我想我会选择外存来处理。

由于李阳

YuanhangWu
离线
最后看到:5年2周以前
专家
加入:2015-03-25 08:19
嗨,,

嗨,,

我设置变量不像这样int extended_timer_cnt __attribute__(((section(“retention_mem_area0”),zero_init));
我设置变量是这样:int extended_timer_cnt;
extended_timer_cnt保存在retention_mem_area0或retention_mem_area1中?

谢谢

李阳
离线
最后看到:7个月6天前
专家
加入:2014-09-24 11:51
哥们,你到底想问什么问题?那个变量放哪有什么关系吗

哥们,你到底想问什么问题?那个变量放哪有什么关系吗?你不这样定义int extended_timer_cnt __attribute__(((“retention_mem_area0”)部分,zero_init));区,是不会存在保留的。

MT_dialog
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 34
嗨YuanhangWu,

嗨YuanhangWu,

如果你声明一个没有__attribute__的变量,那么你的变量不会位于保留空间。

由于太