RTOS_WDT使用参考
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | Initial release | 01/31/2024 |
1. 概述¶
Hardware watchdog 提供超时复位系统的功能,其功能由定时器和复位功能组成,用户可以设定一个超时时间,并在超时时间以内对它进行“喂狗”的操作,重置其内部计数,如果其内部计算达到了设定的超时时间,watchdog 就会对系统进行复位,重启系统。
2. RTOS用法介绍¶
目前 Watchdog 模块只提供 api 调用,需要用户在自己的业务逻辑中对 watchdog 进行管理。
2.1 DRIVER PATH¶
sc/driver/sysdriver/watchdog/drv/mdrv_wdt_api.h sc/driver/sysdriver/watchdog/drv/mdrv_wdt_reg.h sc/driver/sysdriver/watchdog/drv/mdrv_wdt.c
2.2 CONFIG配置¶
#make menuconfig BSP Driver Options ---> [*] Support WatchDog driver
2.3 API说明¶
头文件位于sc/driver/sysdriver/watchdog/drv/mdrv_wdt_api.h
2.3.1. wdt_probe¶
-
功能
用于注册 watchdog 驱动, 目前主要的操作为初始化 watchdog 设置默认的超时时间,系统在启动时会调用此 api,用户可以不再调用
-
语法
int infinity_wdt_probe(void)
-
返回值
返回值 描述 0 成功 非0 失败
2.3.2. wdt_remove¶
-
功能
用于注销 watchdog 驱动,目前主要的操作为停止 watchdog
-
语法
int infinity_wdt_remove(void)
-
返回值
返回值 描述 0 成功 非0 失败
2.3.3. wdt_start¶
-
功能
用于启动 watchdog 模块计数,在启动前需要先设置超时时间,如果没有设置超时时间,默认的超时时间为10秒
-
语法
int infinity_wdt_start(void)
-
返回值
返回值 描述 0 成功 非0 失败
2.3.4. wdt_stop¶
-
功能
用于停止 watchdog 模块计数
-
语法
int infinity_wdt_stop(void)
-
返回值
返回值 描述 0 成功 非0 失败
2.3.5. wdt_ping¶
-
功能
用于重置 watchdog 模块的计数值(喂狗)
-
语法
int infinity_wdt_ping(void)
-
返回值
返回值 描述 0 成功 非0 失败
2.3.6. wdt_set_timeout¶
-
功能
用于设置 watchdog 的超时时间并启动 watchdog 计数,时间单位为秒,目前可以支持的最大时间为:1/12MHz * 0xFFFFFFFF = 357913941us = 357.9s,API 中会限制输入的超时时间必须大于5秒,如果用户需要更短的超时时间可以自行移除
-
语法
int infinity_wdt_set_timeout(unsigned int timeout)
-
参数
参数名称 描述 timeout 超时时间(unit:s) 5 <= timeout <= 357 -
返回值
返回值 描述 0 成功 非0 失败
2.4 DEMO¶
watchdog 模块的时候范例如下:
infinity_wdt_set_timeout(10); // 设置超时时间为10秒并启动计数 /* * watchdog 的喂狗线程,以函数来表示,具体代码位置参考客户自己的实现 */ void watchdog_ping_thread(void) { infinity_wdt_ping(); // 复位 watchdog 计数(喂狗) msleep(5000); // 定时5秒喂狗 }