WDT
1 功能概述
看门狗定时器通常用来监测和处理系统或软件故障。当系统或软件发生某些错误事件时,如不能定时清除看门狗定时器的计数值,将造成看门狗超时,从而触发系统复位。
WDT相关的理论介绍参考: WDT的驱动
备注
1、由于看门狗硬件资源只有一份,所以将其放在了cp上进行管理,若想配置看门狗,需要到CP侧进行
cp/middleware/soc/bk7258/bk7258.defconfig配置;2、喂狗的操作在CP上进行,如果超过配置的时间没有喂狗,会触发系统重启;
3、AP侧没有看门狗,通过核间心跳机制来检测ap是否正常运行;
4、AP侧上层应用主动调用bk_reboot接口也可进行复位;
2 代码路径
- demo路径:
components\bk_cli\cli_wdt.c
- 驱动源码路径:
ap\middleware\driver\wdt\wdt_driver.cWDT相关的api介绍参考: WDT的api介绍
3 cli命令简介
demo运行依赖的宏配置:
NAME
Description
File
value
CONFIG_INT_WDT
support hardware wdt
ap\middleware\soc\bk7258\bk7258.defconfigy
CONFIG_INT_WDT_PERIOD_MS
Interrupt Watchdog Period(ms)
ap\middleware\soc\bk7258\bk7258.defconfig8000
CONFIG_TASK_WDT_PERIOD_MS
support software wdt
ap\middleware\soc\bk7258\bk7258.defconfigy
CONFIG_TASK_WDT_PERIOD_MS
Task Watchdog Period(ms)
ap\middleware\soc\bk7258\bk7258.defconfig16000
CONFIG_NMI_WDT_EN
support NMI wdt
ap\middleware\soc\bk7258\bk7258.defconfigy
demo支持的命令如下表:
Command
Param
Description
wdt_driver init
none
init wdt driver control memory
wdt_driver deinit
none
free all resource related to wdt
wdt {start|stop|feed|enable|disable|while}
start:start wdt
start wdt and feed wdt
stop:stop wdt
feed: feed wdt
enable: enable wdt
disable: disable wdt
while: wdt while
4 演示介绍
demo1执行的步骤如下:
1、顺序发送以下命令
- wdt start 1000
[15:51:06.104]发→◇wdt start 1000 [15:51:06.108]收←◆wdt start 1000 os:I(127743):create shell_handle, tcb=28086ff0, stack=[280853c8-28086fc8:7168], prio=5 $cli:I(127744):wdt start, timeout=1000- wdt feed
[15:51:07.778]发→◇wdt feed [15:51:07.783]收←◆wdt feed os:I(129418):create shell_handle, tcb=28086ff0, stack=[280853c8-28086fc8:7168], prio=5 $cli:I(129419):wdt feed- wdt stop
[15:51:27.077]发→◇wdt stop [15:51:27.081]收←◆wdt stop os:I(148715):create shell_handle, tcb=28086ff0, stack=[280853c8-28086fc8:7168], prio=5 $cli:I(148716):wdt stop- wdt enable
[15:51:56.072]发→◇wdt enable [15:51:56.076]收←◆wdt enable os:I(177710):create shell_handle, tcb=28086ff0, stack=[280853c8-28086fc8:7168], prio=5 $cli:I(177711):wdt debug enabled- wdt disable
[15:51:57.418]发→◇ wdt disable [15:51:57.423]收←◆ wdt disable os:I(179056):create shell_handle, tcb=28086ff0, stack=[280853c8-28086fc8:7168], prio=5 $cli:I(179057):wdt debug disabled`