看门狗重启,如何自动重启呢?即热启动

2个职位/ 0个新
最后发表
songsayit
离线
最后看到:3年3个月前
加入:2016-05-31 35
看门狗重启,如何自动重启呢?即热启动

我们有这个一个需求:
就是在程序跑飞后,希望设备能自动重启。

平台硬件说明:
我们的硬件是靠一个按键去给LDO的EN脚供电,使LDO输出3.3 v后给主控上电以及上电复位,然后主控有个管脚会维持高电平给LDO的脚,来保证LDO一直供电。

测试过程:
1.测试软件使用了而(1)。等着看门狗复位, 他复位后, 系统掉电不再起来;需要按下按键才能上电;
2.在ldo的en脚前弄一个大电容,让他掉电慢一点。目的是希望主控由看门狗复位后,他能在不掉电的情况下继续从主开始运行。但是测试失败了。他不会重启。

原来做过电信的一个项目,他的芯片支持热启动,即看门狗复位后,只要他不掉电,他就能重新从主要开始运行。

那么问题来了, 我该如何做 才能使主控自动重启呢?
谢谢

设备:
Qinjiny_Dialog
离线
最后看到:3周2天前
工作人员
加入:2016-11-01 05:47
你好,

你好,

看门狗触发时,最终会跑到NMI处理器里面,由最后一行

//重新映射地址0x00到ROM并强制执行
SetWord16(SYS_CTRL_REG, (GetWord16(SYS_CTRL_REG) & ~REMAP_ADR0) | SW_RESET);

进行重启,其中REMAP_ADR0决定了重启后的起始位置,默认为0x00,也就是ROM的0位。默认会从ROM启动bootloader,从OTP重启。

测试时需要从ram直接启动的话可以尝试:

1,将该行代码改为SetWord16 (SYS_CTRL_REG, (GetWord16 (SYS_CTRL_REG)) | SW_RESET);

2,在该代码运行前令REMAP_ADR0 = 0x02

更多信息可以参考这个帖子:

https://support.dialog-semiconductor.com/testing-watchdog

BR,