11个帖子/ 0新
最后一篇
Drnick1.
离线
最后一次露面:4年8个月前
加入:2014年7月1日11:55
测试看门狗

如何我可以检查正确的操作,我的代码使用看门狗从凯尔。
我可以一步一步地把所有事情都交给NMI处理程序,但是当它到达例程的末尾时,它会执行软件重置
SetWord16(SYS_CTRL_REG,(GetWord16(SYS_CTRL_REG)〜REMAP_ADR0)| SW_RESET);
然后将它报告说,它无法启动的核心。我认为已经发生软件复位,但我没有得到控制权交还给无需断开开发板的方式。

如果我尝试运行在调试器外部的程序(通过停止调试它得到这一点之前)仍不能正常复位。

所以我如何运行我的程序与WDOG启用重置设备和检查它的工作ok没有燃烧的OTP。是可能的吗?

我跑beacon3.40.6作为基础。

它是直接使用的WDOG强制器件复位?

设备:
Drnick1.
离线
最后一次露面:4年8个月前
加入:2014年7月1日11:55
当看门狗火灾,它

当看门狗火灾,它最终获得在NMI处理程序以下行(Beacon3.40.6)
SetWord16(SYS_CTRL_REG,(GetWord16(SYS_CTRL_REG)〜REMAP_ADR0)| SW_RESET);
这是重置系统的指令。该代码执行后没有任何反应。
是什么〜REMAP_ADR0实际上意味着。有此规格表中给出4个可能值 - 默认值是00(ROM),这意味着它会从ROM位置0开始执行。
我有限的了解说我应该从系统RAM重新启动,因为这是我的程序驻留(假设我没有带掉电或者已经进入深度睡眠模式。)
有谁能够确认我需要改变REMAP_ADR0默认设置的路程,我什么时候不需要做到这一点?

Drnick1.
离线
最后一次露面:4年8个月前
加入:2014年7月1日11:55
SetWord16(SYS_CTRL_REG,

SetWord16(SYS_CTRL_REG,(GetWord16(SYS_CTRL_REG)〜REMAP_ADR0)| SW_RESET);
所以这行的目的是为了有效地使对应REMAP_ADR0位是零,也就是说,它会强制默认值。
如果我改变行
SetWord16(SYS_CTRL_REG, (GetWord16(SYS_CTRL_REG)) | SW_RESET);
和使REMAP_ADR0 = 0×02(SysRAM)在此之前被调用,那么看门狗定时器到期导致“正确的”复位和代码再次从开始运行。
我仍然可以设置断点的工作,所以一切似乎都很好!

我真不知道,当我去到OTP与看门狗会发生什么。是默认为情节设置好吗?

mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨DrNick1,

嗨DrNick1,

是的,这权REMAP_ADR0是确保该REMAP_ADR0设置为默认地址。默认设置应该强制引导程序运行,并eventualy将从OTP读取。

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年4个月前
加入:2015年6月2日12:48
你好。

你好。
我已经使用sdk_driver看门狗API用于初始化看门狗尝试。
1.我已经启用看门狗//#民主基金CFG_WDOG
2.我已经试过wdg_init(1)wdg_init(0)
我的软件似乎并没有重新启动,即使我不复位看门狗:
1.它不再次点亮发光二极管(我的LED闪烁在启动时)
2.我的Keil IDE调试会话不打NMI_HandlerC
添加代码来测试看门狗计数器,声明其卡在0x00FF

mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨kobyfr_mag,

嗨kobyfr_mag,

你模仿的条件,最终会崩溃软件和触发看门狗(意思是停留在例如无限循环)?使用看门狗当你在睡眠模式下,看门狗每次你从睡梦中醒来时复位。你没有明确地启用它,只是把它定义和SDK将采取初始化的照顾。此外,除了一个事实,即在睡眠模式中唤醒每一个看门狗重装了也重新加载在main_func()函数的底部arch_main.c文件,你可以注释掉下面的代码片段并对其进行测试:

如果(USE_WDOG)
wdg_reload (WATCHDOG_DEFAULT_PERIOD);

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年4个月前
加入:2015年6月2日12:48
1.是的,我想引起

1.是的,我想引起看门狗,火,以测试它是否正常工作。我不知道如果我这样做,是为了激活它所需的所有。
2.我注释掉arch_main.cwdg_reload(WATCHDOG_DEFAULT_PERIOD)
3.我初始化序列是3个快LED闪烁。(600毫秒总的持续时间)
4.LED闪烁(应该导致看门狗在~2秒后起火)
5.我装我的程序从uVision RAM,通过JLINK调试器。
6.我让它自由奔跑
7.我观察到的快速LED闪光灯序列一次,然后缓慢LED闪光序列中断。==>没有SW复位==>没有发生看门狗

看是否有更多我需要为了使看门狗火做,并产生一个复位?

mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨kobyfr_mag,

嗨kobyfr_mag,

我刚注意到,在后5号,你注释掉看门狗定义是什么?尝试#定义CFG_WDG不要评论它,如果你注释掉的SDK将无法启用它。

请尝试禁用休眠模式,并留下评论的wdg_reload(WATCHDOG_DEFAULT_PERIOD),通过在新的模板,用KEIL环境中运行它。如果你这样做,你的代码会去NMI_Handler()。

谢谢mt_dialog.

Kobyfr_mag.
离线
最后一次露面:5年4个月前
加入:2015年6月2日12:48
谢谢你。

谢谢你。
添加#定义CGF_WDOG没有的伎俩。
因为而(1)我插入,我击中NMI_Handler,看门狗继续每2.5秒发射一次。

chen123
离线
最后一次露面:5个月1个星期前
加入:2021年1月7日1点43
你能告诉我怎么样
  • 请问DA14580的软件复位操作是怎么做的
PM_DIALOG.
离线
最后一次露面:1天19小时之前
职员
加入:2018-02-08 11:03
嗨chen123,

嗨chen123,

谢谢你的评论。本次论坛主题是很老和关闭,所以请大家提出一个新的?

谢谢,PM_DIALOG.