目录
0. 前言
2. 设备树
3. 拓展试验
0. 前言
这次的内部看门狗驱动也比较顺利,重点看了 原理图和4.19.x 内核的配置。
内部看门狗设备名叫做 /dev/watchdog 。
1. menuconfig
我们在 linux-menuconfig 里面如下设置:进入 Device Drivers ---> WatchdogTimer Support
选择 IMX2+ Watchdog即可。
2. 设备树
在设备树里面,笔者做的最大的改动,是把 wdog2节点去掉,因为结合IMX6芯片手册上来看,一般都是用内部看门狗1;看门狗2则是用在安全区(Secure World),并无法做到开机时候可用。
所以我们应该使能看门狗1:
如此保存设备树,编译内核,把zImage放入设备运行,内核打印没有明显的跟 watchdog 有关的信息。但进入rootfs以后,输入命令“reboot”,Linux确实就重启了,而Linux重启就是通过 内部看门狗(饿它)来实现的。
3. 拓展试验
我们已经知道 内部看门狗的设备名是 /dev/watchdog(n)。在内核态读写这个设备,可以更好的测试看门狗的功能。其基本原理:
看门狗(watchdog)实际是一个定时器,启动之后会开始计时,系统或者软件需要在规定时间内与看门狗通信(俗称喂狗)重置计时,如此反复下去,以此来确定系统和软件正常运行。
如果规定时间内没有喂狗,看门狗超时,说明系统或应用陷入循环、卡死,此时看门狗会发出复位信号让主控复位,脱离卡死。
我们可以写C语言小程序来打开狗、喂狗和关闭狗。
参考资料:12. Watchdog 使用 — Firefly Wiki