14 内部硬件看门狗(wdt)
作者:陈媛媛 | 最后修改:2026-08-21
一、看门狗电路概述
看门狗(Watch Dog Timer,WDT)是一种用于监控嵌入式系统状态的电路,旨在提高系统的可靠性和稳定性。在看门狗电路的帮助下,当系统出现异常,如程序跑飞或死循环时,能够自动复位并重新启动系统。
1.1 看门狗的工作原理
看门狗电路通常包括一个定时器、一个喂狗信号和一个复位(Reset)输出。在正常的系统运行过程中,主控制器(MCU)会定期向喂狗信号发送一个脉冲,以“喂”看门狗,防止其计时到达预设值。如果 MCU 由于某种原因未能在规定时间内喂狗,看门狗定时器将会计满并输出一个复位信号,将 MCU 复位。
1.2 看门狗的应用架构
在实际应用中,看门狗芯片通常连接到 MCU 的一个 GPIO 端口。MCU 在其正常运行期间会定期向该端口写入一个高电平或低电平信号,以此告诉看门狗它仍然正常工作。如果 MCU 未能按时发出信号,看门狗将触发复位操作。
1.3 看门狗的类型
看门狗可以分为独立看门狗和窗口看门狗。独立看门狗的时间精度要求较低,而窗口看门狗则用于时间精度要求较高的场合。
1.4 软硬件看门狗的区别
1.4.1 内部硬件看门狗(Always-On Watchdog Timer)
- 定义:AON WDT,位于芯片"Always-On"电源域的硬件看门狗,即使主芯片休眠仍能工作
- 特点:开机后硬件层面自动开始计数,独立于软件系统运行
- 控制方式:完全由内核固件自动控制,不需要脚本干预
- 工作原理:硬件定时器持续计数,喂狗操作复位计数,超时(计数溢出)触发系统复位
- 可靠性:理论上能复位大部分系统异常,但在极端硬件故障(如 PSRAM 完全死锁)时可能无法正确重启
1.4.2 软件看门狗
- 定义:基于操作系统任务调度机制的软件层面监控
- 特点:能够检测任务阻塞和软件死锁,依赖操作系统正常运行
- 控制方式:通过 wdt 库函数控制
- 实现原理:基于操作系统定时器机制,FreeRTOS 按 2ms 间隔调用检测函数
- 特殊说明:在 Air8101 中,软件看门狗检测函数同时也会喂硬件看门狗
1.4.3 外部硬件看门狗
- 定义:独立的看门狗芯片,通过 GPIO/I2C 等接口通信
- 特点:完全独立于主系统,具有独立的电源和时钟,可靠性最高
- 控制方式:不通过 wdt 库,需使用 i2c、gpio 等外设驱动库实现喂狗操作
硬件看门狗利用独立的定时器电路来实现监控功能,具有较高的可靠性。软件看门狗则使用处理器内部的定时器或其他机制来实现,虽然在一定程度上可以简化硬件设计,但在可靠性方面通常不如硬件看门狗。
总结而言,看门狗是一种重要的系统保护机制,通过定期“喂狗”来确保系统的正常运行。当系统出现异常时,看门狗能够及时复位系统,防止死循环和程序跑飞等情况的发生,从而提高系统的可靠性和稳定性。在实际应用中,开发者需要根据具体需求选择合适的看门狗解决方案,并设置适当的时间参数,以实现最佳的保护效果。
二、演示功能概述
本文演示主要通过 Ai8000 开发板或者 Air8000 核心板和 LuatOS 系统,介绍内部硬件看门狗、外部 Air153C/Air153D 硬件看门狗两种看门狗在正常与异常情况时的表现。
内部硬件看门狗:
演示分为两个部分:正常运行情况和故障场景模拟。
在正常运行情况下,示例代码会初始化看门狗核心库。然后,创建一个任务,该任务会定期喂狗,以防止看门狗定时器超时。如果看门狗定时器超时,系统将自动重启。
在故障场景模拟部分,我们添加了一个新的任务 fault_task,该任务进入一个死循环,不进行喂狗操作。这样,当看门狗定时器超时后,系统将自动重启,模拟了设备在故障场景下的自动恢复能力。
Air153C/Air153D 外部硬件看门狗:
Air153C/Air153D是合宙推出的SOT23-6封装看门狗芯片,用于保障系统稳定性。
- Air153C:超时时间固定约240秒(3.3V供电时实测283秒)
- Air153D:通过STRAP引脚可配置超时时间(10分钟/60分钟/12小时/24小时)
三种演示模式:
-
auto_feed模式:配置看门狗,内部自动喂狗,系统持续运行
-
force_reset模式:配置看门狗,10秒后手动触发强制复位(3次快速脉冲)
-
no_feed模式:不配置看门狗,等待超时后自动复位模组
通过这个演示,我们可以看到看门狗定时器在嵌入式系统中的重要作用,它能够有效防止系统死机,提高系统的稳定性和可靠性。
三、准备硬件环境
1、Air8000核心板

2、Air8781 P1 工业模组(外挂 Air153C 看门狗芯片)
Air8781 P系列模组资料请看:Air8781P系列工业模组

3、TYPE-C USB数据线一根
- Air8000开发板/核心板通过 TYPE-C USB 口供电;
- TYPE-C USB 数据线直接插到核心板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。
Air8000购买链接:Air8000_4G/WiFi/以太网-上海合宙LuatOS官方企业店-淘宝网
Air8781P1 购买链接:Air8781P1板载看门狗SIM卡座IPEX天线座子LED灯插针二开UART
四、软件环境
在开始实践本示例之前,先筹备一下软件环境:
1. Luatools 工具;
2. 内核固件文件(底层 core 固件文件):
本demo开发测试时使用的固件为LuatOS-SoC_V2016_Air8000,本demo对固件版本没有什么特殊要求,所以你如果要测试本demo时,可以直接使用最新版本的内核固件;如果发现最新版本的内核固件测试有问题,可以使用我们开发本demo时使用的内核固件版本来对比测试;
3. luatos 需要的脚本和资源文件
- 脚本和资源文件点击此处查看与下载
- lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;
4. 准备好软件环境之后,接下来查看如何烧录项目文件到 Air8000 核心板中,将本篇文章中演示使用的项目文件烧录到 Air8000 核心板/开发板中。
五、wdt 核心库介绍
该库提供了一系列用于管理和操作看门狗定时器的 API 函数,使得开发者可以方便地在 LuatOS 系统中管理看门狗定时器,从而提高设备的稳定性。
wdt 核心库 API 接口参考:wdt 核心库
wdt 核心库 专门用于控制芯片内部的看门狗:
- 内部硬件看门狗:芯片内部集成的硬件看门狗单元,如 AON WDT(Always-On Watchdog Timer)。
- 软件看门狗:基于操作系统任务调度机制的软件层面看门狗,
六、exair153x_wdt 扩展库介绍
exair153x_wdt 库是用于控制 Air153C/Air153D 外置硬件看门狗的 Lua 扩展库,通过 GPIO 引脚控制外部看门狗芯片,旨在提高系统的可靠性和稳定性。在 exair153x_wdt 库的帮助下,当系统出现异常时,能够通过外部看门狗芯片自动复位并重新启动系统;同时也支持手动触发强制复位,满足特定业务场景需求。
API 接口参考:exair153x_wdt 扩展库
exair153x_wdt 库专门用于控制芯片外部的看门狗:
- 外部硬件看门狗:通过 GPIO 引脚控制 Air153C/Air153D 外部看门狗芯片
- 脉冲喂狗机制:通过产生特定宽度(250ms)的脉冲信号来喂狗
- 自动喂狗任务:初始化后自动启动周期性喂狗任务(默认180秒)
- 强制复位功能:支持发送3次快速脉冲触发芯片硬件复位
- 防误触发机制:手动喂狗有1秒冷却时间,避免误触发强制复位
七、功能验证
7.1 内部看门狗示例代码介绍
本模块演示了内部看门狗的两种工作场景:正常喂狗模式和异常故障模式。
-
通过修改
DEMO_MODE变量,来选择演示模式:-
"normal": 正常喂狗模式
-
"fault": 异常故障模式
-
-
正常场景:定期喂狗,系统正常运行
-
系统启动后,通过
sys.timerLoopStart创建一个循环定时器 -
定时器每 3 秒执行一次
feed_watchdog函数 -
由于定期喂狗,看门狗不会超时,系统保持稳定运行
-
-
异常场景:模拟故障导致无法喂狗,触发看门狗复位
-
系统启动后,正常喂狗约 5 秒钟
-
随后进入模拟故障状态,创建死循环阻塞系统
-
死循环导致喂狗定时器无法执行
-
看门狗计数器持续累加,最终超时触发系统复位
-
7.2 完整代码展示
-- internal_wdt.lua
--[[
@summary 内部看门狗演示模块
@version 1.0
@date 2025.10.25
@author 陈媛媛
@usage
本模块演示内部看门狗的正常和异常场景:
1、正常场景:定期喂狗,系统正常运行
2、异常场景:模拟故障导致无法喂狗,触发看门狗复位
3、通过修改 DEMO_MODE 变量来选择演示模式:
- "normal": 正常喂狗模式
- "fault": 异常故障模式
注意:在异常模式下,设备会在运行一段时间后重启
]]
-- 演示模式选择: "normal" 或 "fault"
local DEMO_MODE = "fault" -- 修改这个变量来切换演示模式
-- 喂狗函数
function feed_watchdog()
wdt.feed()
log.info("wdt", "喂狗完成")
end
-- 故障模拟函数
function simulate_fault()
sys.wait(5000) -- 等待5秒,让系统先正常运行一会
-- 在进入死循环前尝试喂狗一次,并检查返回值
local success = wdt.feed()
log.info("wdt", "故障前最后一次喂狗,成功 =", success)
log.info("fault_task", "进入死循环模拟故障")
log.info("fault_task", "看门狗喂狗任务被阻塞,系统将在约20秒后重启")
while true do
-- 模拟故障场景,真的进入死循环
-- 这将导致无法喂狗,最终触发系统重启
end
end
-- 内部看门狗演示函数
function internal_wdt_demo()
-- 检查wdt库是否存在
if wdt == nil then
log.error("wdt", "wdt库不存在")
return
end
log.info("wdt", "硬件看门狗已由底层固件启用")
-- 检查开机原因
local reason1, reason2, reason3 = pm.lastReson()
log.info("reset_reason", "重启原因1:", reason1, "原因2:", reason2, "原因3:", reason3)
-- 定期喂狗,防止系统重启
-- 设置喂狗间隔为3秒,确保在20秒超时前完成喂狗
sys.timerLoopStart(feed_watchdog, 3000) -- 每3秒喂一次狗
end
if DEMO_MODE == "fault" then
-- 创建一个新的任务来模拟故障场景
sys.taskInit(simulate_fault)
end
-- 启动演示
sys.taskInit(internal_wdt_demo)
return internal_wdt_demo
7.3 运行结果展示
通过 Luatools 工具查看日志
正常场景:

添加死循环模拟故障场景

7.2 Air153C/Air153D 外部硬件看门狗
7.2.1 简要说明
本模块演示了 Air153C/Air153D 外部硬件看门狗的三种工作场景:自动喂狗模式、强制复位模式和超时复位模式。
-
通过修改
DEMO_MODE变量,来选择演示模式:-
"auto_feed": 自动喂狗模式
-
"force_reset": 强制复位模式
-
"no_feed": 超时复位模式
-
-
自动喂狗模式:配置看门狗,内部自动喂狗,系统持续运行
-
系统启动后,调用
exair153x_wdt.init()初始化看门狗并启动自动喂狗任务 -
库内部按默认 180 秒周期自动执行喂狗操作
-
由于定期喂狗,看门狗不会超时,系统保持稳定运行
-
-
强制复位模式:配置看门狗,10 秒后手动触发强制复位
-
系统启动后,正常初始化看门狗并等待 10 秒
-
随后调用
exair153x_wdt.trigger_reset()触发强制复位 -
库内部发送 3 次快速脉冲(1 秒内),触发芯片硬件复位
-
-
超时复位模式:不配置看门狗,等待超时后自动复位
-
系统启动后,不调用
exair153x_wdt.init(),不执行喂狗操作 -
看门狗芯片持续计时,超过超时时间后自动触发复位
-
超时时间取决于芯片型号:Air153C 约 240 秒,Air153D 由 STRAP 引脚配置决定
-
7.2.2 完整代码展示
-- air153x_wdt.lua
--[[
@summary Air153C/Air153D外部看门狗演示模块
@version 1.0
@date 2026.08.21
@author 陈媛媛
@usage
硬件介绍:
Air153C/Air153D是合宙推出的SOT23-6封装看门狗芯片,用于保障系统稳定性。
- Air153C:超时时间固定约240秒(3.3V供电时实测283秒)
- Air153D:通过STRAP引脚可配置超时时间(10分钟/60分钟/12小时/24小时)
核心信号:
- WTDOG(PIN3):喂狗输入,常态低电平,高脉冲喂狗(>200ms)
- PWR_OFF(PIN4):复位输出,喂狗异常时输出高电平触发主控复位
复位触发条件:
1. 超时复位:超过T_timeout未收到喂狗信号,PWR_OFF输出500ms高电平
2. 强制复位:1秒内连续收到3个喂狗信号,PWR_OFF立即输出500ms高电平
本示例演示三种使用场景:
1、auto_feed模式:配置看门狗,内部自动喂狗,系统持续运行
2、force_reset模式:配置看门狗,10秒后手动触发强制复位(3次快速脉冲)
3、no_feed模式:不配置看门狗,等待超时后自动复位模组
通过修改 DEMO_MODE 变量来选择演示模式
注意:
- force_reset模式下,设备会在10秒后触发硬件复位
- no_feed模式下,设备会在看门狗超时后自动复位(Air153C约240秒,Air153D取决于STRAP配置)
]]
local exair153x_wdt = require("exair153x_wdt")
-- 演示模式选择: "auto_feed"、 "force_reset" 或 "no_feed"
local DEMO_MODE = "auto_feed" -- 修改这个变量来切换演示模式
local wdt_pin = 24 -- 看门狗喂狗引脚
-- 模式1:配置看门狗,内部自动喂狗
local function auto_feed_mode()
log.info("wdt_demo", "模式1:自动喂狗模式启动")
-- 初始化看门狗,启动自动喂狗任务
-- 默认180秒自动喂狗一次
exair153x_wdt.init({ wdt_pin = wdt_pin })
log.info("wdt_demo", "看门狗已初始化,自动喂狗任务已启动")
log.info("wdt_demo", "系统将自动维持看门狗,设备持续运行")
-- 模拟业务逻辑运行
local count = 0
while true do
count = count + 1
log.info("wdt_demo", "业务逻辑运行中... 第" .. count .. "次循环")
-- 可选:手动喂狗(有防误触发机制)
-- exair153x_wdt.feed()
sys.wait(30000) -- 每30秒打印一次状态
end
end
-- 模式2:10秒后手动执行强制复位
local function force_reset_mode()
log.info("wdt_demo", "模式2:强制复位模式启动")
-- 初始化看门狗
exair153x_wdt.init({ wdt_pin = wdt_pin })
log.info("wdt_demo", "看门狗已初始化")
log.info("wdt_demo", "等待10秒后触发强制复位...")
-- 等待10秒
sys.wait(10000)
-- 触发强制复位(3次快速脉冲触发芯片硬件复位)
log.info("wdt_demo", "触发强制复位!")
exair153x_wdt.trigger_reset()
-- 芯片检测到3次快速脉冲后会触发硬件复位
-- 以下代码不会执行(设备将复位)
sys.wait(5000)
log.info("wdt_demo", "如果看到这条日志,说明复位未成功")
end
-- 模式3:不配置看门狗,等待超时后自动复位
local function no_feed_mode()
log.info("wdt_demo", "模式3:无喂狗模式启动")
log.info("wdt_demo", "不初始化看门狗,等待看门狗超时自动复位")
log.info("wdt_demo", "超时时间取决于Air153C/Air153D芯片的硬件配置")
-- 不调用exair153x_wdt.init(),不喂狗
-- 看门狗芯片会在超时后触发复位
local count = 0
while true do
count = count + 1
log.info("wdt_demo", "运行中... 第" .. count .. "次循环(无喂狗)")
sys.wait(10000) -- 每10秒打印一次
end
end
-- 根据选择的模式执行对应函数
sys.taskInit(function()
log.info("wdt_demo", "Air153C/Air153D外部看门狗演示 v" .. exair153x_wdt.version())
log.info("wdt_demo", "当前模式: " .. DEMO_MODE)
if DEMO_MODE == "auto_feed" then
auto_feed_mode()
elseif DEMO_MODE == "force_reset" then
force_reset_mode()
elseif DEMO_MODE == "no_feed" then
no_feed_mode()
else
log.error("wdt_demo", "未知模式: " .. DEMO_MODE .. ",请选择 auto_feed、force_reset 或 no_feed")
end
end)
7.2.3 运行结果展示
通过 Luatools 工具查看日志
auto_feed模式演示
设置 DEMO_MODE = "auto_feed",烧录并运行脚本,程序运行后会显示以下典型日志:
[2026-08-21 15:52:13.160][000000000.319] I/user.main wdt_DEMO 001.999.000
[2026-08-21 15:52:13.161][000000000.332] D/user.exair153x_wdt version -> 202608030000
[2026-08-21 15:52:13.162][000000000.334] I/user.wdt_demo Air153C/Air153D外部看门狗演示 v202608030000
[2026-08-21 15:52:13.163][000000000.334] I/user.wdt_demo 当前模式: auto_feed
[2026-08-21 15:52:13.164][000000000.334] I/user.wdt_demo 模式1:自动喂狗模式启动
[2026-08-21 15:52:13.164][000000000.334] I/user.exair153x_wdt GPIO24 初始化为空闲态 1
[2026-08-21 15:52:13.165][000000000.335] I/user.exair153x_wdt 首次喂狗
[2026-08-21 15:52:13.166][000000000.335] I/user.exair153x_wdt 初始化成功: GPIO24, 脉冲=250ms, 周期=180s
[2026-08-21 15:52:13.167][000000000.336] I/user.wdt_demo 看门狗已初始化,自动喂狗任务已启动
[2026-08-21 15:52:13.167][000000000.336] I/user.wdt_demo 系统将自动维持看门狗,设备持续运行
[2026-08-21 15:52:13.168][000000000.336] I/user.wdt_demo 业务逻辑运行中... 第1次循环
[2026-08-21 15:52:42.820][000000030.336] I/user.wdt_demo 业务逻辑运行中... 第2次循环
[2026-08-21 15:53:12.823][000000060.336] I/user.wdt_demo 业务逻辑运行中... 第3次循环
[2026-08-21 15:53:42.829][000000090.336] I/user.wdt_demo 业务逻辑运行中... 第4次循环
[2026-08-21 15:54:12.823][000000120.336] I/user.wdt_demo 业务逻辑运行中... 第5次循环
[2026-08-21 15:54:42.820][000000150.336] I/user.wdt_demo 业务逻辑运行中... 第6次循环
[2026-08-21 15:55:12.828][000000180.336] I/user.wdt_demo 业务逻辑运行中... 第7次循环
[2026-08-21 15:55:13.315][000000180.835] D/user.exair153x_wdt 喂狗完成
[2026-08-21 15:55:42.826][000000210.336] I/user.wdt_demo 业务逻辑运行中... 第8次循环
[2026-08-21 15:56:12.819][000000240.336] I/user.wdt_demo 业务逻辑运行中... 第9次循环
force_reset模式演示
设置 DEMO_MODE = "force_reset",烧录并运行脚本,程序运行后会显示以下典型日志:
[2026-08-21 15:58:59.551][000000000.316] I/user.main wdt_DEMO 001.999.000
[2026-08-21 15:58:59.560][000000000.329] D/user.exair153x_wdt version -> 202608030000
[2026-08-21 15:58:59.569][000000000.330] I/user.wdt_demo Air153C/Air153D外部看门狗演示 v202608030000
[2026-08-21 15:58:59.577][000000000.331] I/user.wdt_demo 当前模式: force_reset
[2026-08-21 15:58:59.584][000000000.331] I/user.wdt_demo 模式2:强制复位模式启动
[2026-08-21 15:58:59.592][000000000.331] I/user.exair153x_wdt GPIO24 初始化为空闲态 1
[2026-08-21 15:58:59.600][000000000.332] I/user.exair153x_wdt 首次喂狗
[2026-08-21 15:58:59.608][000000000.332] I/user.exair153x_wdt 初始化成功: GPIO24, 脉冲=250ms, 周期=180s
[2026-08-21 15:58:59.618][000000000.332] I/user.wdt_demo 看门狗已初始化
[2026-08-21 15:58:59.626][000000000.332] I/user.wdt_demo 等待10秒后触发强制复位...
[2026-08-21 15:59:08.911][000000010.333] I/user.wdt_demo 触发强制复位!
[2026-08-21 15:59:08.914][000000010.334] W/user.exair153x_wdt 开始 3 次快速脉冲,触发芯片强制硬件复位
[2026-08-21 15:59:09.697] 工具提示: diag com USB 断开连接 COM6 CommError,[WinError 22] 设备不识别此命令。
[2026-08-21 15:59:10.980] 工具提示: soc log port COM4打开成功
[2026-08-21 15:59:11.075] 工具提示: ap log port COM6打开成功
[2026-08-21 15:59:11.078] 工具提示: 用户虚拟串口 COM5
[2026-08-21 15:59:12.022][000000000.000] main_entry 708:SDK base line V017_p001.026
[2026-08-21 15:59:12.026][000000000.007] am_service_init 1374:Air780EPM_A11
[2026-08-21 15:59:12.032][000000000.007] am_get_chip_type 870:6bef6,8,4,11,8,EC718PM
[2026-08-21 15:59:12.036][000000000.007] am_service_init 1382:APB MP 102400000
[2026-08-21 15:59:12.044][000000000.048] bsp_user_init_io 400:io volt 3.3v
[2026-08-21 15:59:12.074][000000000.049] BSP_CustomInit 558:hardfault mode init 4
[2026-08-21 15:59:12.088][000000000.049] Uart_ChangeBR 1461:uart0, 6000000 6028985 26000000 69
[2026-08-21 15:59:12.101][000000000.070] I/pm poweron: Power/Reset
[2026-08-21 15:59:12.110][000000000.070] luat_pm_get_poweron_reason 332:ap 2, cp 2
[2026-08-21 15:59:12.114][000000000.070] I/pm poweron reason: 0 0 5
[2026-08-21 15:59:12.121][000000000.186] self_info 125:model Air780EPM_A11 imei 864317085627837 dbversion 0x74e6478d
[2026-08-21 15:59:12.128][000000000.186] self_info 127:firmware[1] BASIC fs 168kbyte script 256kbyte
[2026-08-21 15:59:12.135][000000000.186] I/main LuatOS@Air780EPM base 26.04 bsp V2048 64bit
[2026-08-21 15:59:12.144][000000000.186] I/main ROM Build: Aug 3 2026 20:26:39
[2026-08-21 15:59:12.151][000000000.188] W/pins /luadb/pins_air780epm.json not exist!!
[2026-08-21 15:59:12.156][000000000.190] D/main loadlibs luavm 1048568 15712 16776
[2026-08-21 15:59:12.167][000000000.191] D/main loadlibs sys 2369808 82836 89356
[2026-08-21 15:59:12.176][000000000.191] D/main loadlibs psram 2369808 82836 89356
[2026-08-21 15:59:12.184][000000000.208] I/user.main wdt_DEMO 001.999.000
[2026-08-21 15:59:12.191][000000000.220] D/user.exair153x_wdt version -> 202608030000
[2026-08-21 15:59:12.199][000000000.221] I/user.wdt_demo Air153C/Air153D外部看门狗演示 v202608030000
[2026-08-21 15:59:12.218][000000000.222] I/user.wdt_demo 当前模式: force_reset
[2026-08-21 15:59:12.235][000000000.222] I/user.wdt_demo 模式2:强制复位模式启动
[2026-08-21 15:59:12.245][000000000.222] I/user.exair153x_wdt GPIO24 初始化为空闲态 1
[2026-08-21 15:59:12.256][000000000.223] I/user.exair153x_wdt 首次喂狗
[2026-08-21 15:59:12.265][000000000.223] I/user.exair153x_wdt 初始化成功: GPIO24, 脉冲=250ms, 周期=180s
[2026-08-21 15:59:12.283][000000000.223] I/user.wdt_demo 看门狗已初始化
[2026-08-21 15:59:12.294][000000000.224] I/user.wdt_demo 等待10秒后触发强制复位...
no_feed模式演示
设置 DEMO_MODE = "no_feed",烧录并运行脚本,程序运行后会显示以下典型日志:
[2026-08-21 16:08:35.041][000000000.209] I/user.main wdt_DEMO 001.999.000
[2026-08-21 16:08:35.046][000000000.222] D/user.exair153x_wdt version -> 202608030000
[2026-08-21 16:08:35.052][000000000.223] I/user.wdt_demo Air153C/Air153D外部看门狗演示 v202608030000
[2026-08-21 16:08:35.059][000000000.223] I/user.wdt_demo 当前模式: no_feed
[2026-08-21 16:08:35.064][000000000.223] I/user.wdt_demo 模式3:无喂狗模式启动
[2026-08-21 16:08:35.071][000000000.224] I/user.wdt_demo 不初始化看门狗,等待看门狗超时自动复位
[2026-08-21 16:08:35.080][000000000.224] I/user.wdt_demo 超时时间取决于Air153C/Air153D芯片的硬件配置
[2026-08-21 16:08:35.087][000000000.224] I/user.wdt_demo 运行中... 第1次循环(无喂狗)
[2026-08-21 16:08:43.635][000000010.225] I/user.wdt_demo 运行中... 第2次循环(无喂狗)
[2026-08-21 16:08:53.634][000000020.226] I/user.wdt_demo 运行中... 第3次循环(无喂狗)
[2026-08-21 16:09:03.627][000000030.226] I/user.wdt_demo 运行中... 第4次循环(无喂狗)
[2026-08-21 16:09:13.629][000000040.226] I/user.wdt_demo 运行中... 第5次循环(无喂狗)
[2026-08-21 16:09:23.628][000000050.226] I/user.wdt_demo 运行中... 第6次循环(无喂狗)
[2026-08-21 16:09:33.630][000000060.226] I/user.wdt_demo 运行中... 第7次循环(无喂狗)
[2026-08-21 16:09:43.626][000000070.226] I/user.wdt_demo 运行中... 第8次循环(无喂狗)
[2026-08-21 16:09:53.633][000000080.226] I/user.wdt_demo 运行中... 第9次循环(无喂狗)
[2026-08-21 16:10:03.632][000000090.226] I/user.wdt_demo 运行中... 第10次循环(无喂狗)
[2026-08-21 16:10:13.638][000000100.226] I/user.wdt_demo 运行中... 第11次循环(无喂狗)
[2026-08-21 16:10:23.628][000000110.226] I/user.wdt_demo 运行中... 第12次循环(无喂狗)
[2026-08-21 16:10:33.629][000000120.226] I/user.wdt_demo 运行中... 第13次循环(无喂狗)
[2026-08-21 16:10:43.630][000000130.226] I/user.wdt_demo 运行中... 第14次循环(无喂狗)
[2026-08-21 16:10:53.633][000000140.226] I/user.wdt_demo 运行中... 第15次循环(无喂狗)
[2026-08-21 16:11:03.631][000000150.226] I/user.wdt_demo 运行中... 第16次循环(无喂狗)
[2026-08-21 16:11:13.627][000000160.226] I/user.wdt_demo 运行中... 第17次循环(无喂狗)
[2026-08-21 16:11:23.630][000000170.226] I/user.wdt_demo 运行中... 第18次循环(无喂狗)
[2026-08-21 16:11:33.633][000000180.226] I/user.wdt_demo 运行中... 第19次循环(无喂狗)
[2026-08-21 16:11:43.637][000000190.226] I/user.wdt_demo 运行中... 第20次循环(无喂狗)
[2026-08-21 16:11:53.635][000000200.226] I/user.wdt_demo 运行中... 第21次循环(无喂狗)
[2026-08-21 16:12:03.634][000000210.226] I/user.wdt_demo 运行中... 第22次循环(无喂狗)
[2026-08-21 16:12:10.737] 工具提示: print com USB 断开连接 COM4 CommError,[WinError 22] 设备不识别此命令。
[2026-08-21 16:12:11.988] 工具提示: soc log port COM4打开成功
[2026-08-21 16:12:12.087] 工具提示: ap log port COM6打开成功
[2026-08-21 16:12:12.099] 工具提示: 用户虚拟串口 COM5
[2026-08-21 16:12:13.039][000000000.000] main_entry 708:SDK base line V017_p001.026
[2026-08-21 16:12:13.054][000000000.007] am_service_init 1374:Air780EPM_A11
[2026-08-21 16:12:13.069][000000000.007] am_get_chip_type 870:6bef6,8,4,11,8,EC718PM
[2026-08-21 16:12:13.080][000000000.007] am_service_init 1382:APB MP 102400000
[2026-08-21 16:12:13.088][000000000.048] bsp_user_init_io 400:io volt 3.3v
[2026-08-21 16:12:13.097][000000000.049] BSP_CustomInit 558:hardfault mode init 4
[2026-08-21 16:12:13.101][000000000.049] Uart_ChangeBR 1461:uart0, 6000000 6028985 26000000 69
[2026-08-21 16:12:13.106][000000000.070] I/pm poweron: Power/Reset
[2026-08-21 16:12:13.111][000000000.070] luat_pm_get_poweron_reason 332:ap 2, cp 2
[2026-08-21 16:12:13.114][000000000.070] I/pm poweron reason: 0 0 5
[2026-08-21 16:12:13.117][000000000.186] self_info 125:model Air780EPM_A11 imei 864317085627837 dbversion 0x74e6478d
[2026-08-21 16:12:13.119][000000000.186] self_info 127:firmware[1] BASIC fs 168kbyte script 256kbyte
[2026-08-21 16:12:13.122][000000000.186] I/main LuatOS@Air780EPM base 26.04 bsp V2048 64bit
[2026-08-21 16:12:13.124][000000000.186] I/main ROM Build: Aug 3 2026 20:26:39
[2026-08-21 16:12:13.126][000000000.188] W/pins /luadb/pins_air780epm.json not exist!!
[2026-08-21 16:12:13.128][000000000.190] D/main loadlibs luavm 1048568 15712 16776
[2026-08-21 16:12:13.131][000000000.190] D/main loadlibs sys 2369808 82836 89356
[2026-08-21 16:12:13.134][000000000.191] D/main loadlibs psram 2369808 82836 89356
[2026-08-21 16:12:13.139][000000000.208] I/user.main wdt_DEMO 001.999.000
[2026-08-21 16:12:13.142][000000000.220] D/user.exair153x_wdt version -> 202608030000
[2026-08-21 16:12:13.145][000000000.221] I/user.wdt_demo Air153C/Air153D外部看门狗演示 v202608030000
[2026-08-21 16:12:13.148][000000000.222] I/user.wdt_demo 当前模式: no_feed
[2026-08-21 16:12:13.152][000000000.222] I/user.wdt_demo 模式3:无喂狗模式启动
[2026-08-21 16:12:13.156][000000000.222] I/user.wdt_demo 不初始化看门狗,等待看门狗超时自动复位
[2026-08-21 16:12:13.160][000000000.222] I/user.wdt_demo 超时时间取决于Air153C/Air153D芯片的硬件配置
[2026-08-21 16:12:13.163][000000000.222] I/user.wdt_demo 运行中... 第1次循环(无喂狗)
八、总结
本次演示通过 Air8000 开发板/核心板、Air8781P 工业模组和 LuatOS 系统,详细介绍了如何使用看门狗定时器(wdt)库来防止嵌入式设备死机。
通过本次演示,我们深入理解了看门狗定时器在嵌入式系统中的工作原理和应用价值,以及在实际项目中如何有效地利用看门狗库来提高系统的稳定性和可靠性。这对于嵌入式系统开发者来说,是一个具有重要意义的技能。