我们有这个一个需求:
就是在程序跑飞后,希望设备能自动重启。
平台硬件说明:
我们的硬件是靠一个按键去给LDO的EN脚供电,使LDO输出3.3 v后给主控上电以及上电复位,然后主控有个管脚会维持高电平给LDO的脚,来保证LDO一直供电。
测试过程:
1.测试软件使用了而(1)。等着看门狗复位, 他复位后, 系统掉电不再起来;需要按下按键才能上电;
2.在ldo的en脚前弄一个大电容,让他掉电慢一点。目的是希望主控由看门狗复位后,他能在不掉电的情况下继续从主开始运行。但是测试失败了。他不会重启。
原来做过电信的一个项目,他的芯片支持热启动,即看门狗复位后,只要他不掉电,他就能重新从主要开始运行。
那么问题来了, 我该如何做 才能使主控自动重启呢?
谢谢
设备:
你好,
看门狗触发时,最终会跑到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,