嗨,对话框中,
现在我需要知道复位是否由看门狗引起,可以吗?我能做什么?
嗨,李阳,
您可以通过用一个自定义空函数替换jump_table.c文件中的platform_reset_func来检查是否存在平台重置问题,并尝试在调试中使用断点捕获该函数的调用。
由于MT_dialog
也许是我的问题还不清楚。你看DA14580的复位有很多种,我只关心看门狗复位的SW。当DA14580reset,然后它再次运行,我的应用程序需要知道重置是由看门狗或不是。
由于李阳
对不起,我不能。我误解了你的问题。
如果复位是由看门狗定时器引起的,则转到NMI_Handler。你能调试你的程序并试着在那里捕获它吗?
我知道如果复位是由看门狗定时器引起的,它将转到NMI_Handler。它会重启MCU。只有当系统启动时,我的应用程序才会判断复位是否由看门狗引起。但是当MCU重启时,我找不到任何东西来证明MCU是被看门狗重启的。
没有特定的方法来知道复位是由看门狗定时器发出的。我能想到的一种方法是,在外部存储器中存储一个值(如果您的系统有)或者在一个保留的空间中,从NMI处理器读取这个特定的内存,看看是否有重置。
嗨,MT_dialog,
谢谢你的建议!我想你已经解决了我的问题。另一个问题是如何处理保留的空间?它可用吗?
您可以在大多数SDK示例和参考设计中找到如何在保留内存空间中存储变量的示例,例如键盘ref设计。
为了在保留空间中存储一个变量,你可以使用这个例子int extended_timer_cnt __attribute__((section("retention_mem_area0"), zero_init));
问题是,当系统重新启动时,保留ram被system_ARMCM0.c中的SystemInit()初始化为零,所以我不确定这是否可以帮助你,即使你删除的部分,在那里初始化为零发生。外部内存场景更加确定。
谢谢你的场景!我想我会选择外存来处理。
嗨,,
我设置变量不像这样int extended_timer_cnt __attribute__(((section(“retention_mem_area0”),zero_init));我设置变量是这样:int extended_timer_cnt;extended_timer_cnt保存在retention_mem_area0或retention_mem_area1中?
谢谢
哥们,你到底想问什么问题?那个变量放哪有什么关系吗?你不这样定义int extended_timer_cnt __attribute__(((“retention_mem_area0”)部分,zero_init));区,是不会存在保留的。
嗨YuanhangWu,
如果你声明一个没有__attribute__的变量,那么你的变量不会位于保留空间。
由于太
嗨,李阳,
您可以通过用一个自定义空函数替换jump_table.c文件中的platform_reset_func来检查是否存在平台重置问题,并尝试在调试中使用断点捕获该函数的调用。
由于MT_dialog
嗨,对话框中,
也许是我的问题还不清楚。你看DA14580的复位有很多种,我只关心看门狗复位的SW。当DA14580reset,然后它再次运行,我的应用程序需要知道重置是由看门狗或不是。
由于李阳
嗨,李阳,
对不起,我不能。我误解了你的问题。
如果复位是由看门狗定时器引起的,则转到NMI_Handler。你能调试你的程序并试着在那里捕获它吗?
由于MT_dialog
嗨,对话框中,
我知道如果复位是由看门狗定时器引起的,它将转到NMI_Handler。它会重启MCU。
只有当系统启动时,我的应用程序才会判断复位是否由看门狗引起。
但是当MCU重启时,我找不到任何东西来证明MCU是被看门狗重启的。
由于李阳
嗨,李阳,
没有特定的方法来知道复位是由看门狗定时器发出的。我能想到的一种方法是,在外部存储器中存储一个值(如果您的系统有)或者在一个保留的空间中,从NMI处理器读取这个特定的内存,看看是否有重置。
由于MT_dialog
嗨,MT_dialog,
谢谢你的建议!我想你已经解决了我的问题。另一个问题是如何处理保留的空间?它可用吗?
由于李阳
嗨,李阳,
您可以在大多数SDK示例和参考设计中找到如何在保留内存空间中存储变量的示例,例如键盘ref设计。
为了在保留空间中存储一个变量,你可以使用这个例子int extended_timer_cnt __attribute__((section("retention_mem_area0"), zero_init));
问题是,当系统重新启动时,保留ram被system_ARMCM0.c中的SystemInit()初始化为零,所以我不确定这是否可以帮助你,即使你删除的部分,在那里初始化为零发生。外部内存场景更加确定。
由于MT_dialog
嗨,MT_dialog,
谢谢你的场景!我想我会选择外存来处理。
由于李阳
嗨,,
我设置变量不像这样int extended_timer_cnt __attribute__(((section(“retention_mem_area0”),zero_init));
我设置变量是这样:int extended_timer_cnt;
extended_timer_cnt保存在retention_mem_area0或retention_mem_area1中?
谢谢
哥们,你到底想问什么问题?那个变量放哪有什么关系吗?你不这样定义int extended_timer_cnt __attribute__(((“retention_mem_area0”)部分,zero_init));区,是不会存在保留的。
嗨YuanhangWu,
如果你声明一个没有__attribute__的变量,那么你的变量不会位于保留空间。
由于太