H110T-CM-A主板 看门狗使用

一、安装并加载驱动

1、拷贝驱动文件

拷贝 nuvwdt.zip/home/用户名 下,解压得到 nuvwdt.ko 驱动文件

1
zip nuvwdt.zip

2、永久安装模块(重启后生效)
为了让驱动在系统重启后自动加载,需要将nuvwdt.ko文件复制到系统模块目录,并更新依赖:

1
2
3
4
5
6
7
8
# 创建模块目录(若不存在)
sudo mkdir -p /lib/modules/$(uname -r)/extra/

# 复制模块到系统目录
sudo cp nuvwdt.ko /lib/modules/$(uname -r)/extra/

# 更新模块依赖
sudo depmod -a

二、通过 systemd 服务加载驱动(可指定参数)

1、创建服务文件

1
sudo vim /etc/systemd/system/nuvoton-wdt.service

内容如下:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Nuvoton NCT6793 Watchdog Driver
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/sbin/modprobe nuvwdt timeout=60 wdt_sel=1 # 可指定参数
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

模块参数

  • timeout:看门狗超时时间(1-255 秒,默认 60 秒)
  • nowayout:默认0:允许通过关闭设备停止看门狗 1:一旦启动是否无法停止 (配置为1,服务启动后自动倒计时,建议最终环境使用时配置,并搭配喂狗服务使用)
  • early_disable:启动时是否禁用看门狗
  • debug:调试信息开关
  • wdt_sel:选择看门狗通道(1 对应 WDT1,3 对应 WDT3,默认 1)

2、启动并设置开机自启

1
2
3
4
5
6
7
8
# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动服务(立即加载模块)
sudo systemctl start nuvoton-wdt

# 设置开机自启
sudo systemctl enable nuvoton-wdt

三、验证安装结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看模块是否加载
lsmod | grep nuvwdt

# 查看驱动日志(确认识别到NCT6793芯片)
dmesg | grep -i "wdt"
# 成功日志示例:
# "WDT driver init..."
# "WDT driver for NCT6793 (port:0x2E Super I/O chip initialising"
# "initialized. timeout=60 sec (nowayout=0)"

#检查设备节点:驱动加载成功后会创建/dev/watchdog1
ls -l /dev/watchdog1
# 输出应为:crw------- 1 root root 250, 1 ... /dev/watchdog1


#测试看门狗功能:测试 “喂狗操作”,执行一次喂狗命令:(root下执行)
echo " " > /dev/watchdog1 # 无报错则说明驱动工作正常,等待超时会自动重启

四、查看看门狗基本信息(可选)

通过 wdctl 工具(需安装 watchdog 包)查看看门狗的超时时间、支持的功能等(帮助后续测试判断超时周期):

1
2
3
4
5
# 先安装 watchdog 工具包(包含 wdctl 和用户空间喂狗程序)
sudo yum install -y watchdog

# 查看看门狗信息
sudo wdctl /dev/watchdog1

预期结果:输出包含超时时间(如 Timeout: 60 seconds,表示默认超时 60 秒,即 60 秒不喂狗会触发重启)、驱动名称(确认是 NUVOTON)等,示例:

1
2
3
4
5
Device:        /dev/watchdog1
Driver: NUVOTON Watchdog
Timeout: 60 seconds
Pre-timeout: 0 seconds
Timeleft: 59 seconds

五、配置自动喂狗服务

1、创建喂狗脚本

1
sudo vim /usr/local/bin/watchdog_keepalive.sh

脚本内容:

1
2
3
4
5
6
#!/bin/bash
# 每隔30秒向看门狗设备写入数据(喂狗)
while true; do
echo " " > /dev/watchdog1
sleep 30 # 间隔需小于驱动timeout参数(默认60秒)
done

赋予执行权限:

1
sudo chmod +x /usr/local/bin/watchdog_keepalive.sh

2、创建 systemd 服务

1
sudo vim /etc/systemd/system/watchdog.service

服务内容:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Nuvoton NCT6793 Watchdog Keepalive
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/bin/watchdog_keepalive.sh
Restart=always # 脚本异常退出时自动重启

[Install]
WantedBy=multi-user.target

3、启动并设置开机自启

1
2
3
4
5
6
7
8
# 重新加载systemd配置
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start watchdog

# 设置开机自启
sudo systemctl enable watchdog

4、验证服务状态

1
sudo systemctl status watchdog