嗨
我们想把看门狗作为一种安全机制。我们的固件是基于演示simple_beacon。我们的董事会只有XTAL16M,没有XTAL32K。我们使用内部时钟RC32K。
在使用KEIL进行调试时,看门狗运行良好。如果我们不重新加载看门狗,固件就会重启。但是当我们烧制固件(。在板上,看门狗不能重启固件,即使我们不重新加载看门狗。
我们以前遇到过这个问题,我们通过在da1458x_config_basic.h中禁用CFG_DEVELOPMENT_DEBUG来解决这个问题。但这次我们解决不了。
这里是固件的一些配置。
在da1458x_config_basic.h
#定义CFG_WDOG
/ / #定义CFG_DEVELOPMENT_DEBUG
在da1458x_config_advanced.h
#定义CFG_LP_CLK LP_CLK_RCX20
# undef CFG_XTAL16M_ADAPTIVE_SETTLING
在user_config.h
static const sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;
在函数中初始化看门狗system_init(空白)通过wdg_init (1);
很抱歉我的英语不好,希望我的问题很清楚。
谢谢。
亲切的问候,
他用
设备:
嗨,李冰
感谢您的在线问题,以及您对我们的BLE解决方案的兴趣。您能解释一下为什么注释掉CFG_DEVELOPMENT_DEBUG宏吗?能否请你收回评论,重新构建项目并在调试模式下运行?代码冻结的地方?这是因为WDOG过期吗?
恢复开发调试机制并提供额外的调试信息将非常有帮助,这样我就可以理解问题了。
谢谢,PM_Dialog
嗨PM_Dialog
谢谢你的回复。
1.宏CFG_DEVELOPMENT_DEBUG被注释掉的原因是宏CFG_DEVELOPMENT_DEBUG的注释说“对于生产模式构建,必须禁用它”。
2.当我拿回注释并在调试模式下运行时,代码不会冻结。但是固件重启并在flash中运行固件。
附件是这个过程的屏幕记录。希望它是有帮助的。
谢谢
他用
嗨,李冰
谢谢你的反馈。我看到了你附上的视频,如果我没有弄错的话,你已经修改了主()。强烈建议不要修改SDK文件,能否使用SDK提供的main(),在调试模式下再次运行?
可能是设备重置…,你可以看一下DA14531: RESET机制的不同处理方式这样你就能检测到重置的来源。
是的,生产必须禁用,但在开发阶段应该定义它,以便调试项目。
谢谢,PM_Dialog
嗨PM_Dialog
谢谢你的帮助
我已经修改了main()。但是在重新加载看门狗之前,我只添加了一行“if(tick > 10)”。那就是只在前10秒重新加载看门狗。单板启动10秒后,看门狗不会重新加载。所以,固件应该重启,但没有。这是我的问题。
然而,当我在10秒后添加一个无限循环时,固件就会重启。所以,这意味着看门狗起作用了。我的问题刚才已经解决了。
非常感谢你的热心帮助。
最好的问候,
他用
嗨,李冰
很高兴你把问题解决了。
谢谢,PM_Dialog