对于做 4G-Cat.1、MCU 等物联网终端开发的开发者而言LuatOS 是一款值得了解的开发工具。它是面向物联网设备的轻量级嵌入式 Lua 脚本运行框架和实时系统基于 Lua 5.3 完成深度优化开发层面采用 Lua 脚本模式核心为协程多任务设计且拥有 70 余个核心库、20 余个扩展库和 1000 多个应用 demo 示例可适配物联网开发的各类基础应用场景。一、概述air153C_wtd 库是用于控制外部硬件看门狗的 Lua 库通过 GPIO 引脚控制外部看门狗芯片提高系统的可靠性和稳定性。在 air153C_wtd 库的帮助下当系统出现异常时能够通过外部看门狗芯片自动复位并重新启动系统。1.1 各类看门狗的区别1.1.1. 内部硬件看门狗Always-On Watchdog Timer定义AON WDT位于芯片Always-On电源域的硬件看门狗特点开机后硬件层面自动开始计数独立于软件系统运行控制方式完全由内核固件自动控制不需要脚本干预硬件定时器持续计数喂狗操作复位计数超时计数溢出触发系统复位可靠性理论上能复位大部分系统异常但在极端硬件故障如 PSRAM 完全死锁时可能无法正确重启1.1.2. 软件看门狗定义基于操作系统任务调度机制的软件层面监控特点能够检测任务阻塞和软件死锁依赖操作系统正常运行控制方式通过 wdt 库函数控制实现原理基于操作系统定时器机制FreeRTOS 按 2ms 间隔调用检测函数特殊说明在 Air8101 中软件看门狗检测函数同时也会喂硬件看门狗1.1.3. 外部硬件看门狗定义独立的看门狗芯片通过 GPIO 接口通信特点完全独立于主系统具有独立的电源和时钟可靠性最高控制方式通过 air153C_wtd 库控制使用 GPIO 引脚实现喂狗操作.1.2 air153C_wtd 库专门用于控制芯片外部的看门狗外部硬件看门狗通过 GPIO 引脚控制的外部看门狗芯片脉冲喂狗机制通过产生特定宽度的脉冲信号来喂狗1.3 Air153C 外部看门狗芯片规格说明外部硬件看门狗芯片为 Air153C。Air153C 看门狗超时时长默认为 240 秒并且不允许修改。看门狗芯片采用标准 SOT23-6 封装,2.8x2.72mm小尺寸适用于Air780系列/Air8000系列/Air8101系列。二、核心示例1、核心示例是指使用本库文件提供的扩展 API开发的基础业务逻辑的演示代码2、核心示例的作用是帮助开发者快速理解如何使用本库所以核心示例的逻辑都比较简单3、更加完整和详细的 demo请参考 LuatOS 仓库 中的 demo/air153C_wtdPROJECTair153C_wtd_demoVERSION00.000.001log.info(main,PROJECT,VERSION)localair153C_wtdrequire(air153C_wtd)-- 看门狗喂狗任务functionwdt_task()-- 初始化看门狗引脚28air153C_wtd.init(28)-- 主循环中定期喂狗whiletruedo-- 每10秒喂一次狗air153C_wtd.feed_dog(28)log.info(wdt,Watchdog fed)-- 执行其他业务逻辑sys.wait(10000)-- 等待10秒endend-- 模拟正常业务任务functionbusiness_task()localcount0whiletruedocountcount1log.info(business,Normal operation,count)sys.wait(2000)-- 每2秒执行一次endend-- 启动任务sys.taskInit(wdt_task)sys.taskInit(business_task)sys.run()三、常量详解air153C_wtd 核心库没有常量。四、函数详解4.1 air153C_wtd.init(watchdogPin)功能初始化看门狗控制引脚。参数参数含义看门狗控制引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项调用此函数后在此函数内部会执行以下动作 设置GPIO为输出模式并且初始化输出低电平初始低电平。 参数示例air153C_wtd.init(28)注意事项调用此函数后在此函数内部会执行以下动作 设置 GPIO 为输出模式并且初始化输出低电平。返回值无返回值示例-- 初始化看门狗使用引脚28air153C_wtd.init(28)4.2 air153C_wtd.feed_dog(watchdogPin)功能执行喂狗操作通过产生脉冲信号喂外部看门狗。参数参数含义看门狗引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项必须与初始化时使用的GPIO ID编号一致 参数示例air153C_wtd.feed_dog(28)返回值无返回值注意事项需要定期调用此函数防止看门狗超时.Air153C 看门狗超时时长默认为 240S不允许更改。示例-- 喂狗操作air153C_wtd.feed_dog(28)-- 在定时器中定期喂狗localfunctionfeed_watchdog()air153C_wtd.feed_dog(28)end-- 立即喂狗一次feed_watchdog()-- 在定时器中定期喂狗每10秒sys.timerLoopStart(feed_watchdog,10000)4.3 air153C_wtd.close_watch_dog(watchdogPin)功能关闭看门狗功能参数参数含义看门狗看门狗引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项必须与初始化时使用的引脚一致 参数示例air153C_wtd.close_watch_dog(28)注意事项正常运行过程中不要调用此接口关闭看门狗功能否则会导致看门狗重启主控模组的异常现象。返回值无返回值示例-- 在特殊情况下关闭看门狗--正常运行过程中不要调用此接口关闭看门狗功能否则会导致看门狗重启主控模组的异常现象air153C_wtd.close_watch_dog(28)五、产品支持说明支持 LuatOS 开发的产品都支持 air153C_wtd 扩展库。今天就分享到这里啦~
LuatOS扩展库API——【air153C_wtd】外部硬件看门狗
对于做 4G-Cat.1、MCU 等物联网终端开发的开发者而言LuatOS 是一款值得了解的开发工具。它是面向物联网设备的轻量级嵌入式 Lua 脚本运行框架和实时系统基于 Lua 5.3 完成深度优化开发层面采用 Lua 脚本模式核心为协程多任务设计且拥有 70 余个核心库、20 余个扩展库和 1000 多个应用 demo 示例可适配物联网开发的各类基础应用场景。一、概述air153C_wtd 库是用于控制外部硬件看门狗的 Lua 库通过 GPIO 引脚控制外部看门狗芯片提高系统的可靠性和稳定性。在 air153C_wtd 库的帮助下当系统出现异常时能够通过外部看门狗芯片自动复位并重新启动系统。1.1 各类看门狗的区别1.1.1. 内部硬件看门狗Always-On Watchdog Timer定义AON WDT位于芯片Always-On电源域的硬件看门狗特点开机后硬件层面自动开始计数独立于软件系统运行控制方式完全由内核固件自动控制不需要脚本干预硬件定时器持续计数喂狗操作复位计数超时计数溢出触发系统复位可靠性理论上能复位大部分系统异常但在极端硬件故障如 PSRAM 完全死锁时可能无法正确重启1.1.2. 软件看门狗定义基于操作系统任务调度机制的软件层面监控特点能够检测任务阻塞和软件死锁依赖操作系统正常运行控制方式通过 wdt 库函数控制实现原理基于操作系统定时器机制FreeRTOS 按 2ms 间隔调用检测函数特殊说明在 Air8101 中软件看门狗检测函数同时也会喂硬件看门狗1.1.3. 外部硬件看门狗定义独立的看门狗芯片通过 GPIO 接口通信特点完全独立于主系统具有独立的电源和时钟可靠性最高控制方式通过 air153C_wtd 库控制使用 GPIO 引脚实现喂狗操作.1.2 air153C_wtd 库专门用于控制芯片外部的看门狗外部硬件看门狗通过 GPIO 引脚控制的外部看门狗芯片脉冲喂狗机制通过产生特定宽度的脉冲信号来喂狗1.3 Air153C 外部看门狗芯片规格说明外部硬件看门狗芯片为 Air153C。Air153C 看门狗超时时长默认为 240 秒并且不允许修改。看门狗芯片采用标准 SOT23-6 封装,2.8x2.72mm小尺寸适用于Air780系列/Air8000系列/Air8101系列。二、核心示例1、核心示例是指使用本库文件提供的扩展 API开发的基础业务逻辑的演示代码2、核心示例的作用是帮助开发者快速理解如何使用本库所以核心示例的逻辑都比较简单3、更加完整和详细的 demo请参考 LuatOS 仓库 中的 demo/air153C_wtdPROJECTair153C_wtd_demoVERSION00.000.001log.info(main,PROJECT,VERSION)localair153C_wtdrequire(air153C_wtd)-- 看门狗喂狗任务functionwdt_task()-- 初始化看门狗引脚28air153C_wtd.init(28)-- 主循环中定期喂狗whiletruedo-- 每10秒喂一次狗air153C_wtd.feed_dog(28)log.info(wdt,Watchdog fed)-- 执行其他业务逻辑sys.wait(10000)-- 等待10秒endend-- 模拟正常业务任务functionbusiness_task()localcount0whiletruedocountcount1log.info(business,Normal operation,count)sys.wait(2000)-- 每2秒执行一次endend-- 启动任务sys.taskInit(wdt_task)sys.taskInit(business_task)sys.run()三、常量详解air153C_wtd 核心库没有常量。四、函数详解4.1 air153C_wtd.init(watchdogPin)功能初始化看门狗控制引脚。参数参数含义看门狗控制引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项调用此函数后在此函数内部会执行以下动作 设置GPIO为输出模式并且初始化输出低电平初始低电平。 参数示例air153C_wtd.init(28)注意事项调用此函数后在此函数内部会执行以下动作 设置 GPIO 为输出模式并且初始化输出低电平。返回值无返回值示例-- 初始化看门狗使用引脚28air153C_wtd.init(28)4.2 air153C_wtd.feed_dog(watchdogPin)功能执行喂狗操作通过产生脉冲信号喂外部看门狗。参数参数含义看门狗引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项必须与初始化时使用的GPIO ID编号一致 参数示例air153C_wtd.feed_dog(28)返回值无返回值注意事项需要定期调用此函数防止看门狗超时.Air153C 看门狗超时时长默认为 240S不允许更改。示例-- 喂狗操作air153C_wtd.feed_dog(28)-- 在定时器中定期喂狗localfunctionfeed_watchdog()air153C_wtd.feed_dog(28)end-- 立即喂狗一次feed_watchdog()-- 在定时器中定期喂狗每10秒sys.timerLoopStart(feed_watchdog,10000)4.3 air153C_wtd.close_watch_dog(watchdogPin)功能关闭看门狗功能参数参数含义看门狗看门狗引脚对应的GPIO ID编号 数据类型number 取值范围整数具体的GPIO ID编号取决于硬件 是否必选是 注意事项必须与初始化时使用的引脚一致 参数示例air153C_wtd.close_watch_dog(28)注意事项正常运行过程中不要调用此接口关闭看门狗功能否则会导致看门狗重启主控模组的异常现象。返回值无返回值示例-- 在特殊情况下关闭看门狗--正常运行过程中不要调用此接口关闭看门狗功能否则会导致看门狗重启主控模组的异常现象air153C_wtd.close_watch_dog(28)五、产品支持说明支持 LuatOS 开发的产品都支持 air153C_wtd 扩展库。今天就分享到这里啦~