WDT

[English]

1 功能概述

看门狗定时器通常用来监测和处理系统或软件故障。当系统或软件发生某些错误事件时,如不能定时清除看门狗定时器的计数值,将造成看门狗超时,从而触发系统复位。

备注

  • 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.c
  • WDT相关的api介绍参考: WDT的api介绍

3 cli命令简介

demo运行依赖的宏配置:

NAME

Description

File

value

CONFIG_INT_WDT

support hardware wdt

ap\middleware\soc\bk7258\bk7258.defconfig

y

CONFIG_INT_WDT_PERIOD_MS

Interrupt Watchdog Period(ms)

ap\middleware\soc\bk7258\bk7258.defconfig

8000

CONFIG_TASK_WDT_PERIOD_MS

support software wdt

ap\middleware\soc\bk7258\bk7258.defconfig

y

CONFIG_TASK_WDT_PERIOD_MS

Task Watchdog Period(ms)

ap\middleware\soc\bk7258\bk7258.defconfig

16000

CONFIG_NMI_WDT_EN

support NMI wdt

ap\middleware\soc\bk7258\bk7258.defconfig

y

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`