Linux的WDT子系统简析

一、概述

  1. 看门狗是基于定时器的复位机制,需要定时喂狗,不能咬狗触发复位
  2. Linux的看门狗驱动框架分为设备驱动层、核心层以及统一设备驱动层,分解负责与硬件交互、逻辑处理和APP交互

二、设备驱动层做了什么?

  1. 分配一个watchdog_device结构体并初始化
  2. 设置watchdog_device结构体的成员info、ops、timeout、min_timeout、max_timeout等等属性
  3. 调用watchdog_init_timeoutwatchdog_set_nowayoutwatchdog_set_drvdata,最后调用devm_watchdog_register_device注册wdt设备
  4. ops中包含start函数、stop函数和ping函数、set_timeout函数,硬件层面实现启动看门狗、停止看门狗、喂狗、设置超时时间
  5. info中包含option和name等成员

三、看门狗核心层如何注册watchdog_device

  1. watchdog_register_device调用__watchdog_register_device注册看门狗设备
  2. 获得一个独有的id
  3. watchdog_dev_register注册wdt设备
  4. 注册reboot和restart的通知回调函数
  5. 初始化设备节点、并定义一个高精度定时器,初始化心跳工作队列,最后注册字符设备
  6. 工作队列中,定时执行喂狗函数

四、喂狗相关的ops

  1. open函数,启动看门狗硬件,watchdog_start
  2. write函数,写入函数
  3. ioctl函数,WDIOC_SETTIMEOUT设置超时时间、WDIOC_KEEPALIVE手动触发心跳
posted @ 2025-12-24 21:49  gramming  阅读(0)  评论(0)    收藏  举报