1、openharmony3.1Beta启动喂狗服务解读
watchdog的实现用于监视系统的运行,包括内核态watchdog模块和用户态watchdog服务程序。内核态watchdog 模块通过 /dev/watchdog这个字符设备与用户态
通信。用户态程序一旦打开/dev/watchdog 设备,就会在内核中启动N秒的喂狗定时器,此后,用户态程序需要保证在N秒之内向这个设备写入数据),每次写操作会导致重新设定定时器。如果用户态程序在N秒之内没有写操作,喂狗定时器到期会导致一次系统CPU复位重启。通过这种机制可以保证系统核心进程大部分时间都处于运行状态,即使特定情形下进程崩溃,因无法正常定时“喂狗”,CPU硬件复位,系统重启;重新恢复系统的正常运行。
2、OpenHarmony3.1Beta喂狗内核源码解读
一、喂狗的芯片手册资料
1.概述
看门狗 WatchDog 用于系统异常情况下,一定时间内发出复位信号,以复位整个系统。系统提供 2 个 WatchDog 模块。
2.特点
WatchDog 具备以下特点:
内部具有一个 32bit 减法计数器。
支持超时时间间隔(即计数初值)可配置。
支持寄存器锁定,防止寄存器被误改。
支持超时中断产生。
支持复位信号产生。
支持调试模式
3、OpenHarmony3.1Beta喂狗用户态源码解读
喂狗流程
加载喂狗KO ——> 创建/dev/watchdog
——> 注册内核函数接口open,ioctl,release
——> 创建内核喂狗线程hidog,并以30.01s喂狗
——> 用户态等待/dev/watchdog创建
——> 设置和获取超时时间,并计算用户态喂狗时间间隔
——> 以计算的喂狗时间间隔喂狗
如果用户态设置的喂狗时间超过30s,那么用户态喂狗程序退出不会影响内核线程喂狗,系统不会重启。
4、OpenHarmony3.1Beta喂狗Linux原生喂狗配置解读
一、内核编译选项
二、内核DTS配置
三、用户态喂狗代码