WTD(看门狗)
# 简介
>名词解释(后文所指英文缩写含义)
PMU - Power Management Unit,电源管理单元,为单片机提供所需的稳定电源。
BB - BaseBand,基带。合成即将发射的基带信号,或对接收到的基带信号进行解码。近似于过去的猫(modem,调制解调器)。
WDI,外围硬件喂狗管脚--实现喂狗监控,低脉冲有效
# 基本概念
看门狗分为软件看门狗和硬件看门狗,硬件看门狗直接利用一个定时器电路实现看门狗逻辑,正常情况下会定时喂狗,当规定周期内没有接收到喂狗会使定时器溢出,看门狗会重启芯片。软件看门狗的原理也是一样,只是把硬件电路的定时器用软件来实现。
# 模块看门狗分类
1. 模块内部硬件看门狗(PMU)
4G模块内部自带硬件看门狗PMU(PMU内置看门狗),主芯片可以通过PMU看门狗来实现看门狗逻辑,如果主芯片异常死机,自带的看门狗15秒左右会硬件复位主芯片,PMU看门狗原理为模块的开机键是挂在PMU上的,所以开机键检测由PMU硬件实现——当PMU检测到开机键接地一定时间(开机键接地时间通过PMU寄存器记录)后即开机,当检测到开机键接地超过一定时间后则断开所有电源输出重新上电开机;
当开机键一直接地时,BB过一段时间就通过I2C去清掉PMU寄存器里的开机键接地的时间记录,类似于一次喂狗(清掉开机时间寄存器)。当BB死机后无法清掉该寄存器。所以,PMU会将BB复位;
**一般来说,使用Cat.1模块设计产品时,因模块内部有PMU充当硬件看门狗,Cat.1模块外部不需要再外挂其他硬件看门狗;如果产品的使用场景是野外、高空等人力不容易操作的环境,可以参考第2步增加外围硬件看门狗**
2. 外围硬件看门狗
**如果产品的使用场景是野外、高空等人力不容易操作的环境,设备需要更高的稳定性,也可以外加看门狗:**
可以自主设计外围硬件看门狗方案,也可以直接使用合宙的一款外围外围硬件看门狗方案:
通过WDI进行喂狗双相控制,每隔一个固定周期都会定时喂狗,当喂狗时看门狗芯片计时器被重置,WDI首先被模块拉低,之后再被看门狗继续拉低,如果在看门狗计时器内没有检测到WDI低电平,模块会被看门狗重启,如果WDI被模块拉低后看门狗没有拉低WDI,模块会重启看门狗。
详细参考:[cat.1模块硬件设计指南-看门狗](https://doc.openluat.com/wiki/21?wiki_page_id=2431 "cat.1模块硬件设计指南-看门狗")
3. 软件看门狗
LuatOS-Air底层core封装了看门狗API,使用软件看门狗在程序跑飞,死循环时可以重启模块,让模块重新正常运行;如果是本身代码逻辑问题导致死循环,软件看门狗也会重启,这种情况就应该排查自己的代码逻辑。
详细使用示例在:[LuatOS-Air示例-看门狗](https://doc.openluat.com/wiki/21?wiki_page_id=2196 "LuatOS-Air示例-看门狗")
4. 网络业务逻辑看门狗
监控网络状态的软件看门狗,当SIM卡识别异常、网络异常注册异常、PDP激活异常、socket连接异常、socket发送数据异常、socket接收数据异常都可以通过网络业务逻辑看门狗重启。
详细使用示例在:[LuatOS-Air示例-看门狗](https://doc.openluat.com/wiki/21?wiki_page_id=2196 "LuatOS-Air示例-看门狗")
## API说明
> 详细的API介绍见[softdog API章节](https://doc.openluat.com/wiki/21?wiki_page_id=2247#rtosopenSoftDogtimeout_556 "softdog API章节")
# 实现流程
1. 模块内部硬件看门狗(PMU)
开机自动执行
2. 外围硬件看门狗
参考:[Luat Air153B看门狗模块](https://doc.openluat.com/wiki/21?wiki_page_id=2712 "Luat Air153B看门狗模块")
3. 软件看门狗
参考:[LuatOS-Air示例-软件看门狗](https://doc.openluat.com/wiki/21?wiki_page_id=2196#_45 "LuatOS-Air示例-软件看门狗")
4. 网络业务逻辑看门狗
参考:[LuatOS-Air示例-网络业务逻辑看门狗](https://doc.openluat.com/wiki/21?wiki_page_id=2196#_82 "LuatOS-Air示例-网络业务逻辑看门狗")