Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c1bc1d99
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
c1bc1d99
编写于
6月 28, 2022
作者:
K
king_he
提交者:
Gitee
6月 28, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/device-dev/driver/driver-platform-watchdog-des.md.
Signed-off-by:
N
king_he
<
6384784@qq.com
>
上级
a233294b
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
183 addition
and
374 deletion
+183
-374
zh-cn/device-dev/driver/driver-platform-watchdog-des.md
zh-cn/device-dev/driver/driver-platform-watchdog-des.md
+183
-374
未找到文件。
zh-cn/device-dev/driver/driver-platform-watchdog-des.md
浏览文件 @
c1bc1d99
# Watchdog<a name="ZH-CN_TOPIC_0000001206372825"></a>
# Watchdog
## 概述
## 概述<a name="section14918241977"></a>
看门狗(Watchdog),又叫看门狗计时器(Watchdog timer),是一种硬件的计时设备。当系统主程序发生错误导致未及时清除看门狗计时器的计时值时,看门狗计时器就会对系统发出复位信号,使系统从悬停状态恢复到正常运作状态。
看门狗(Watchdog),又叫看门狗计时器(Watchdog Timer),是一种硬件的计时设备,当系统的主程序发生某些错误时,导致未及时清除看门狗计时器的计时值,这时看门狗计时器就会对系统发出复位信号,使系统从悬停状态恢复到正常运作状态。
## 接口说明<a name="section1180575010271"></a>
## 接口说明
**表 1**
看门狗 API接口功能介绍
**表1**
看门狗API接口功能介绍
<a
name=
"table1731550155318"
></a>
| 接口 | 接口描述 |
<table><thead
align=
"left"
><tr
id=
"row4419501537"
><th
class=
"cellrowborder"
valign=
"top"
width=
"26.619999999999997%"
id=
"mcps1.2.4.1.1"
><p
id=
"p641050105320"
><a
name=
"p641050105320"
></a><a
name=
"p641050105320"
></a>
功能分类
</p>
| -------- | -------- |
</th>
| WatchdogOpen | 打开看门狗 |
<th
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
id=
"mcps1.2.4.1.2"
><p
id=
"p54150165315"
><a
name=
"p54150165315"
></a><a
name=
"p54150165315"
></a>
接口名
</p>
| WatchdogClose | 关闭看门狗 |
</th>
| WatchdogStart | 启动看门狗 |
<th
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
id=
"mcps1.2.4.1.3"
><p
id=
"p941150145313"
><a
name=
"p941150145313"
></a><a
name=
"p941150145313"
></a>
描述
</p>
| WatchdogStop | 停止看门狗 |
</th>
| WatchdogSetTimeout | 设置看门狗超时时间 |
</tr>
| WatchdogGetTimeout | 获取看门狗超时时间 |
</thead>
| WatchdogGetStatus | 获取看门狗状态 |
<tbody><tr
id=
"row837081981712"
><td
class=
"cellrowborder"
rowspan=
"2"
valign=
"top"
width=
"26.619999999999997%"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p681292481718"
><a
name=
"p681292481718"
></a><a
name=
"p681292481718"
></a>
打开/关闭看门狗
</p>
| WatchdogFeed | 清除看门狗定时器(喂狗) |
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p183701419141710"
><a
name=
"p183701419141710"
></a><a
name=
"p183701419141710"
></a>
WatchdogOpen
</p>
> **说明:**<br>
</td>
> 本文涉及的看门狗的所有接口,仅限内核态使用,不支持在用户态使用。
<td
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
headers=
"mcps1.2.4.1.3 "
><p
id=
"p17370161911710"
><a
name=
"p17370161911710"
></a><a
name=
"p17370161911710"
></a>
打开看门狗设备
</p>
</td>
</tr>
## 使用指导
<tr
id=
"row5610415171719"
><td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p661171510173"
><a
name=
"p661171510173"
></a><a
name=
"p661171510173"
></a>
WatchdogClose
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p11611715161713"
><a
name=
"p11611715161713"
></a><a
name=
"p11611715161713"
></a>
关闭看门狗设备
</p>
### 使用流程
</td>
</tr>
使用看门狗的一般流程如下图所示。
<tr
id=
"row337105133315"
><td
class=
"cellrowborder"
rowspan=
"2"
valign=
"top"
width=
"26.619999999999997%"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p07631557153319"
><a
name=
"p07631557153319"
></a><a
name=
"p07631557153319"
></a>
启动/停止看门狗
</p>
</td>
**图1**
看门狗使用流程图
<td
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p163765113337"
><a
name=
"p163765113337"
></a><a
name=
"p163765113337"
></a>
WatchdogStart
</p>
</td>
!
[
image
](
figures/看门狗使用流程图.png
"看门狗使用流程图"
)
<td
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
headers=
"mcps1.2.4.1.3 "
><p
id=
"p18376517332"
><a
name=
"p18376517332"
></a><a
name=
"p18376517332"
></a>
启动看门狗
</p>
</td>
</tr>
### 打开看门狗设备
<tr
id=
"row18399184610337"
><td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p1740010461335"
><a
name=
"p1740010461335"
></a><a
name=
"p1740010461335"
></a>
WatchdogStop
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p19400194633318"
><a
name=
"p19400194633318"
></a><a
name=
"p19400194633318"
></a>
停止看门狗
</p>
</td>
</tr>
<tr
id=
"row34145016535"
><td
class=
"cellrowborder"
rowspan=
"2"
valign=
"top"
width=
"26.619999999999997%"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p229610227124"
><a
name=
"p229610227124"
></a><a
name=
"p229610227124"
></a>
设置/获取超时时间
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p8296182221219"
><a
name=
"p8296182221219"
></a><a
name=
"p8296182221219"
></a>
WatchdogSetTimeout
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
headers=
"mcps1.2.4.1.3 "
><p
id=
"p16297172213125"
><a
name=
"p16297172213125"
></a><a
name=
"p16297172213125"
></a>
设置看门狗超时时间
</p>
</td>
</tr>
<tr
id=
"row11585016539"
><td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p1095722493616"
><a
name=
"p1095722493616"
></a><a
name=
"p1095722493616"
></a>
WatchdogGetTimeout
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p15297162215122"
><a
name=
"p15297162215122"
></a><a
name=
"p15297162215122"
></a>
获取看门狗超时时间
</p>
</td>
</tr>
<tr
id=
"row105701653185811"
><td
class=
"cellrowborder"
valign=
"top"
width=
"26.619999999999997%"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p2571145325819"
><a
name=
"p2571145325819"
></a><a
name=
"p2571145325819"
></a>
获取看门狗状态
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p175711953195814"
><a
name=
"p175711953195814"
></a><a
name=
"p175711953195814"
></a>
WatchdogGetStatus
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
headers=
"mcps1.2.4.1.3 "
><p
id=
"p331961319210"
><a
name=
"p331961319210"
></a><a
name=
"p331961319210"
></a>
获取看门狗状态
</p>
</td>
</tr>
<tr
id=
"row1028182217215"
><td
class=
"cellrowborder"
valign=
"top"
width=
"26.619999999999997%"
headers=
"mcps1.2.4.1.1 "
><p
id=
"p182818227214"
><a
name=
"p182818227214"
></a><a
name=
"p182818227214"
></a>
清除看门狗定时器
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"32.800000000000004%"
headers=
"mcps1.2.4.1.2 "
><p
id=
"p17281223219"
><a
name=
"p17281223219"
></a><a
name=
"p17281223219"
></a>
WatchdogFeed
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"40.58%"
headers=
"mcps1.2.4.1.3 "
><p
id=
"p62815221125"
><a
name=
"p62815221125"
></a><a
name=
"p62815221125"
></a>
清除看门狗定时器(喂狗)
</p>
</td>
</tr>
</tbody>
</table>
> **说明:**
>本文涉及看门狗的所有接口,仅限内核态使用,不支持在用户态使用。
## 使用指导<a name="section10103184312813"></a>
### 使用流程<a name="section10181195910815"></a>
使用看门狗的一般流程如
[
图1
](
#fig430533913392
)
所示。
**图 1**
看门狗使用流程图
<a
name=
"fig430533913392"
></a>

### 打开看门狗设备<a name="section66089201107"></a>
在操作看门狗之前,需要使用WatchdogOpen打开一个看门狗设备,一个系统可能有多个看门狗,通过ID号来打开指定的看门狗设备:
在操作看门狗之前,需要使用WatchdogOpen打开一个看门狗设备,一个系统可能有多个看门狗,通过ID号来打开指定的看门狗设备:
DevHandle WatchdogOpen
\(
int16
\_
t wdtId
\)
;
```
**表 2**
WatchdogOpen参数和返回值描述
DevHandle WatchdogOpen(int16_t wdtId);
```
<a
name=
"table1413702552814"
></a>
<table><thead
align=
"left"
><tr
id=
"row131371325142819"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p191372254283"
><a
name=
"p191372254283"
></a><a
name=
"p191372254283"
></a><strong
id=
"b1913716253285"
><a
name=
"b1913716253285"
></a><a
name=
"b1913716253285"
></a>
参数
</strong></p>
**表2**
WatchdogOpen参数和返回值描述
</th>
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p113819255284"
><a
name=
"p113819255284"
></a><a
name=
"p113819255284"
></a><strong
id=
"b151381725172812"
><a
name=
"b151381725172812"
></a><a
name=
"b151381725172812"
></a>
参数描述
</strong></p>
|
**参数**
|
**参数描述**
|
</th>
| -------- | -------- |
</tr>
| wdtId | 看门狗设备号 |
</thead>
|
**返回值**
|
**返回值描述**
|
<tbody><tr
id=
"row813812259282"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p101381625162813"
><a
name=
"p101381625162813"
></a><a
name=
"p101381625162813"
></a>
wdtId
</p>
| NULL | 打开失败 |
</td>
| DevHandle类型指针 | 看门狗设备句柄 |
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p191381425142813"
><a
name=
"p191381425142813"
></a><a
name=
"p191381425142813"
></a>
看门狗设备号
</p>
</td>
</tr>
<tr
id=
"row2138202515281"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p141387252287"
><a
name=
"p141387252287"
></a><a
name=
"p141387252287"
></a><strong
id=
"b11381325172810"
><a
name=
"b11381325172810"
></a><a
name=
"b11381325172810"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p12138192512281"
><a
name=
"p12138192512281"
></a><a
name=
"p12138192512281"
></a><strong
id=
"b81380254286"
><a
name=
"b81380254286"
></a><a
name=
"b81380254286"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row9138182519287"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p5138102532814"
><a
name=
"p5138102532814"
></a><a
name=
"p5138102532814"
></a>
NULL
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p3138192512815"
><a
name=
"p3138192512815"
></a><a
name=
"p3138192512815"
></a>
打开失败
</p>
</td>
</tr>
<tr
id=
"row15138192518283"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1850115512916"
><a
name=
"p1850115512916"
></a><a
name=
"p1850115512916"
></a>
DevHandle类型指针
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p16138122512817"
><a
name=
"p16138122512817"
></a><a
name=
"p16138122512817"
></a>
看门狗设备句柄
</p>
</td>
</tr>
</tbody>
</table>
```
```
DevHandle handle = NULL;
DevHandle handle = NULL;
...
@@ -131,46 +65,24 @@ if (handle == NULL) {
...
@@ -131,46 +65,24 @@ if (handle == NULL) {
}
}
```
```
### 获取看门狗状态<a name="section786624341011"></a>
### 获取看门狗状态
int32
\_
t WatchdogGetStatus
\(
DevHandle handle, int32
\_
t
\*
status
\)
;
**表 3**
WatchdogGetStatus参数和返回值描述
```
int32_t WatchdogGetStatus(DevHandle handle, int32_t *status);
<a
name=
"table1018490043"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row31848013417"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p1415816132411"
><a
name=
"p1415816132411"
></a><a
name=
"p1415816132411"
></a><strong
id=
"b129796117337"
><a
name=
"b129796117337"
></a><a
name=
"b129796117337"
></a>
参数
</strong></p>
</th>
**表3**
WatchdogGetStatus参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p11158111316410"
><a
name=
"p11158111316410"
></a><a
name=
"p11158111316410"
></a><strong
id=
"b1699118123314"
><a
name=
"b1699118123314"
></a><a
name=
"b1699118123314"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row3264122711222"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15264727182211"
><a
name=
"p15264727182211"
></a><a
name=
"p15264727182211"
></a>
handle
</p>
| status | 获取到的看门狗状态的指针 |
</td>
|
**返回值**
|
**返回值描述**
|
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p2026452772210"
><a
name=
"p2026452772210"
></a><a
name=
"p2026452772210"
></a>
看门狗设备句柄
</p>
| 0 | 获取成功 |
</td>
| 负数 | 获取失败 |
</tr>
<tr
id=
"row928111518418"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p4282955412"
><a
name=
"p4282955412"
></a><a
name=
"p4282955412"
></a>
status
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p7282752412"
><a
name=
"p7282752412"
></a><a
name=
"p7282752412"
></a>
获取到的启动状态指针
</p>
</td>
</tr>
<tr
id=
"row17393154515328"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p8158313248"
><a
name=
"p8158313248"
></a><a
name=
"p8158313248"
></a><strong
id=
"b18542051332"
><a
name=
"b18542051332"
></a><a
name=
"b18542051332"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p161591413741"
><a
name=
"p161591413741"
></a><a
name=
"p161591413741"
></a><strong
id=
"b45520523313"
><a
name=
"b45520523313"
></a><a
name=
"b45520523313"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row339324593215"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p103191916578"
><a
name=
"p103191916578"
></a><a
name=
"p103191916578"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1231981611712"
><a
name=
"p1231981611712"
></a><a
name=
"p1231981611712"
></a>
获取成功
</p>
</td>
</tr>
<tr
id=
"row15393184519323"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p531916166716"
><a
name=
"p531916166716"
></a><a
name=
"p531916166716"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p93191161174"
><a
name=
"p93191161174"
></a><a
name=
"p93191161174"
></a>
获取失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -183,46 +95,24 @@ if (ret != 0) {
...
@@ -183,46 +95,24 @@ if (ret != 0) {
}
}
```
```
### 设置超时时间<a name="section182386137111"></a>
### 设置超时时间
int32
\_
t WatchdogSetTimeout
\(
DevHandle
\*
handle, uint32
\_
t seconds
\)
;
**表 4**
WatchdogSetTimeout参数和返回值描述
```
int32_t WatchdogSetTimeout(DevHandle *handle, uint32_t seconds);
<a
name=
"table9159112182210"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row1216012212212"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p1416017262215"
><a
name=
"p1416017262215"
></a><a
name=
"p1416017262215"
></a><strong
id=
"b181604212216"
><a
name=
"b181604212216"
></a><a
name=
"b181604212216"
></a>
参数
</strong></p>
</th>
**表4**
WatchdogSetTimeout参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p16160182192213"
><a
name=
"p16160182192213"
></a><a
name=
"p16160182192213"
></a><strong
id=
"b16160142162216"
><a
name=
"b16160142162216"
></a><a
name=
"b16160142162216"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row199536232314"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p17685481236"
><a
name=
"p17685481236"
></a><a
name=
"p17685481236"
></a>
handle
</p>
| seconds | 超时时间,单位为秒 |
</td>
|
**返回值**
|
**返回值描述**
|
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p196852811232"
><a
name=
"p196852811232"
></a><a
name=
"p196852811232"
></a>
看门狗设备句柄
</p>
| 0 | 设置成功 |
</td>
| 负数 | 设置失败 |
</tr>
<tr
id=
"row141601729228"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p191601126226"
><a
name=
"p191601126226"
></a><a
name=
"p191601126226"
></a>
seconds
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p5160172182214"
><a
name=
"p5160172182214"
></a><a
name=
"p5160172182214"
></a>
超时时间,单位为秒
</p>
</td>
</tr>
<tr
id=
"row18160192172212"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p101601123222"
><a
name=
"p101601123222"
></a><a
name=
"p101601123222"
></a><strong
id=
"b516062172215"
><a
name=
"b516062172215"
></a><a
name=
"b516062172215"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p17160192182212"
><a
name=
"p17160192182212"
></a><a
name=
"p17160192182212"
></a><strong
id=
"b141601022227"
><a
name=
"b141601022227"
></a><a
name=
"b141601022227"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row171600202220"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p121601226224"
><a
name=
"p121601226224"
></a><a
name=
"p121601226224"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p151607218222"
><a
name=
"p151607218222"
></a><a
name=
"p151607218222"
></a>
设置成功
</p>
</td>
</tr>
<tr
id=
"row916012252211"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p19160026224"
><a
name=
"p19160026224"
></a><a
name=
"p19160026224"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p816092142210"
><a
name=
"p816092142210"
></a><a
name=
"p816092142210"
></a>
设置失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -235,46 +125,24 @@ if (ret != 0) {
...
@@ -235,46 +125,24 @@ if (ret != 0) {
}
}
```
```
### 获取超时时间<a name="section1883310371114"></a>
### 获取超时时间
int32
\_
t WatchdogGetTimeout
\(
DevHandle
\*
handle, uint32
\_
t
\*
seconds
\)
;
**表 5**
WatchdogGetTimeout参数和返回值描述
```
int32_t WatchdogGetTimeout(DevHandle *handle, uint32_t *seconds);
<a
name=
"table10147164819233"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row14147848142313"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p4147124892316"
><a
name=
"p4147124892316"
></a><a
name=
"p4147124892316"
></a><strong
id=
"b214784813238"
><a
name=
"b214784813238"
></a><a
name=
"b214784813238"
></a>
参数
</strong></p>
</th>
**表5**
WatchdogGetTimeout参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p12147144817232"
><a
name=
"p12147144817232"
></a><a
name=
"p12147144817232"
></a><strong
id=
"b51476482234"
><a
name=
"b51476482234"
></a><a
name=
"b51476482234"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row8147124819230"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p21471248142313"
><a
name=
"p21471248142313"
></a><a
name=
"p21471248142313"
></a>
handle
</p>
| seconds | 接收超时时间的指针,单位为秒 |
</td>
|
**返回值**
|
**返回值描述**
|
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p12147134815233"
><a
name=
"p12147134815233"
></a><a
name=
"p12147134815233"
></a>
看门狗设备句柄
</p>
| 0 | 获取成功 |
</td>
| 负数 | 获取失败 |
</tr>
<tr
id=
"row514754818232"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1614713484235"
><a
name=
"p1614713484235"
></a><a
name=
"p1614713484235"
></a>
seconds
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p71478484238"
><a
name=
"p71478484238"
></a><a
name=
"p71478484238"
></a>
接收超时时间的指针,单位为秒
</p>
</td>
</tr>
<tr
id=
"row214784814239"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p5147848152314"
><a
name=
"p5147848152314"
></a><a
name=
"p5147848152314"
></a><strong
id=
"b17147124822310"
><a
name=
"b17147124822310"
></a><a
name=
"b17147124822310"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p914724811236"
><a
name=
"p914724811236"
></a><a
name=
"p914724811236"
></a><strong
id=
"b614704813231"
><a
name=
"b614704813231"
></a><a
name=
"b614704813231"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row714744892312"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1014764832315"
><a
name=
"p1014764832315"
></a><a
name=
"p1014764832315"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1314824872310"
><a
name=
"p1314824872310"
></a><a
name=
"p1314824872310"
></a>
获取成功
</p>
</td>
</tr>
<tr
id=
"row1514884815230"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p10148114822319"
><a
name=
"p10148114822319"
></a><a
name=
"p10148114822319"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1314864822311"
><a
name=
"p1314864822311"
></a><a
name=
"p1314864822311"
></a>
获取失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -287,41 +155,23 @@ if (ret != 0) {
...
@@ -287,41 +155,23 @@ if (ret != 0) {
}
}
```
```
### 启动看门狗<a name="section82501405123"></a>
### 启动看门狗
int32
\_
t WatchdogStart
\(
DevHandle handle
\)
;
**表 6**
WatchdogStart参数和返回值描述
```
int32_t WatchdogStart(DevHandle handle);
<a
name=
"table529165182515"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row92915122513"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p5292582517"
><a
name=
"p5292582517"
></a><a
name=
"p5292582517"
></a><strong
id=
"b12293510259"
><a
name=
"b12293510259"
></a><a
name=
"b12293510259"
></a>
参数
</strong></p>
</th>
**表6**
WatchdogStart参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p929554258"
><a
name=
"p929554258"
></a><a
name=
"p929554258"
></a><strong
id=
"b82913542514"
><a
name=
"b82913542514"
></a><a
name=
"b82913542514"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row629852250"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p22975122515"
><a
name=
"p22975122515"
></a><a
name=
"p22975122515"
></a>
handle
</p>
|
**返回值**
|
**返回值描述**
|
</td>
| 0 | 启动成功 |
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p7290515256"
><a
name=
"p7290515256"
></a><a
name=
"p7290515256"
></a>
看门狗设备句柄
</p>
| 负数 | 启动失败 |
</td>
</tr>
<tr
id=
"row183035162514"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p8302511255"
><a
name=
"p8302511255"
></a><a
name=
"p8302511255"
></a><strong
id=
"b183018513251"
><a
name=
"b183018513251"
></a><a
name=
"b183018513251"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p16307522515"
><a
name=
"p16307522515"
></a><a
name=
"p16307522515"
></a><strong
id=
"b23010542510"
><a
name=
"b23010542510"
></a><a
name=
"b23010542510"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row12305552510"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1730175132513"
><a
name=
"p1730175132513"
></a><a
name=
"p1730175132513"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p630754259"
><a
name=
"p630754259"
></a><a
name=
"p630754259"
></a>
启动成功
</p>
</td>
</tr>
<tr
id=
"row4306516252"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p15304502515"
><a
name=
"p15304502515"
></a><a
name=
"p15304502515"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p0301559254"
><a
name=
"p0301559254"
></a><a
name=
"p0301559254"
></a>
启动失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -333,41 +183,23 @@ if (ret != 0) {
...
@@ -333,41 +183,23 @@ if (ret != 0) {
}
}
```
```
### 喂狗<a name="section3547530101211"></a>
### 喂狗
int32
\_
t WatchdogFeed
\(
DevHandle handle
\)
;
**表 7**
WatchdogFeed参数和返回值描述
```
int32_t WatchdogFeed(DevHandle handle);
<a
name=
"table091163515394"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row891133515393"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p1911143513918"
><a
name=
"p1911143513918"
></a><a
name=
"p1911143513918"
></a><strong
id=
"b1791193553911"
><a
name=
"b1791193553911"
></a><a
name=
"b1791193553911"
></a>
参数
</strong></p>
</th>
**表7**
WatchdogFeed参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p1191173553917"
><a
name=
"p1191173553917"
></a><a
name=
"p1191173553917"
></a><strong
id=
"b4911835183910"
><a
name=
"b4911835183910"
></a><a
name=
"b4911835183910"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row189111635143918"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p189111435173917"
><a
name=
"p189111435173917"
></a><a
name=
"p189111435173917"
></a>
handle
</p>
|
**返回值**
|
**返回值描述**
|
</td>
| 0 | 喂狗成功 |
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p11911143511397"
><a
name=
"p11911143511397"
></a><a
name=
"p11911143511397"
></a>
看门狗设备句柄
</p>
| 负数 | 喂狗失败 |
</td>
</tr>
<tr
id=
"row15911835173916"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p7911123516396"
><a
name=
"p7911123516396"
></a><a
name=
"p7911123516396"
></a><strong
id=
"b59112352394"
><a
name=
"b59112352394"
></a><a
name=
"b59112352394"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p169118356399"
><a
name=
"p169118356399"
></a><a
name=
"p169118356399"
></a><strong
id=
"b1091193593910"
><a
name=
"b1091193593910"
></a><a
name=
"b1091193593910"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row189119352393"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p1391113513917"
><a
name=
"p1391113513917"
></a><a
name=
"p1391113513917"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p149111435143911"
><a
name=
"p149111435143911"
></a><a
name=
"p149111435143911"
></a>
喂狗成功
</p>
</td>
</tr>
<tr
id=
"row5911123520392"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p49111335143920"
><a
name=
"p49111335143920"
></a><a
name=
"p49111335143920"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p1891216356391"
><a
name=
"p1891216356391"
></a><a
name=
"p1891216356391"
></a>
喂狗失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -379,41 +211,23 @@ if (ret != 0) {
...
@@ -379,41 +211,23 @@ if (ret != 0) {
}
}
```
```
### 停止看门狗<a name="section944595841217"></a>
### 停止看门狗
int32
\_
t WatchdogStop
\(
DevHandle handle
\)
;
**表 8**
WatchdogStop参数和返回值描述
```
int32_t WatchdogStop(DevHandle handle);
<a
name=
"table1286810515254"
></a>
```
<table><thead
align=
"left"
><tr
id=
"row28687517259"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p6868185120254"
><a
name=
"p6868185120254"
></a><a
name=
"p6868185120254"
></a><strong
id=
"b986815142510"
><a
name=
"b986815142510"
></a><a
name=
"b986815142510"
></a>
参数
</strong></p>
</th>
**表8**
WatchdogStop参数和返回值描述
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p15868185114252"
><a
name=
"p15868185114252"
></a><a
name=
"p15868185114252"
></a><strong
id=
"b148681451142517"
><a
name=
"b148681451142517"
></a><a
name=
"b148681451142517"
></a>
参数描述
</strong></p>
</th>
|
**参数**
|
**参数描述**
|
</tr>
| -------- | -------- |
</thead>
| handle | 看门狗设备句柄 |
<tbody><tr
id=
"row1868165114256"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p6869105115256"
><a
name=
"p6869105115256"
></a><a
name=
"p6869105115256"
></a>
handle
</p>
|
**返回值**
|
**返回值描述**
|
</td>
| 0 | 停止成功 |
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p19869951202513"
><a
name=
"p19869951202513"
></a><a
name=
"p19869951202513"
></a>
看门狗设备句柄
</p>
| 负数 | 停止失败 |
</td>
</tr>
<tr
id=
"row68696510259"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p2869165114256"
><a
name=
"p2869165114256"
></a><a
name=
"p2869165114256"
></a><strong
id=
"b386935117258"
><a
name=
"b386935117258"
></a><a
name=
"b386935117258"
></a>
返回值
</strong></p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p158691551142517"
><a
name=
"p158691551142517"
></a><a
name=
"p158691551142517"
></a><strong
id=
"b78691751152513"
><a
name=
"b78691751152513"
></a><a
name=
"b78691751152513"
></a>
返回值描述
</strong></p>
</td>
</tr>
<tr
id=
"row9869851192516"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p686916516252"
><a
name=
"p686916516252"
></a><a
name=
"p686916516252"
></a>
0
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p7869115192510"
><a
name=
"p7869115192510"
></a><a
name=
"p7869115192510"
></a>
停止成功
</p>
</td>
</tr>
<tr
id=
"row15869951122519"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p486925112518"
><a
name=
"p486925112518"
></a><a
name=
"p486925112518"
></a>
负数
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p086945172518"
><a
name=
"p086945172518"
></a><a
name=
"p086945172518"
></a>
停止失败
</p>
</td>
</tr>
</tbody>
</table>
```
```
int32_t ret;
int32_t ret;
...
@@ -425,44 +239,40 @@ if (ret != 0) {
...
@@ -425,44 +239,40 @@ if (ret != 0) {
}
}
```
```
### 关闭看门狗设备<a name="section96561824121311"></a>
### 关闭看门狗设备
当操作完毕时,使用WatchdogClose关闭打开的设备句柄:
当操作完毕时,使用WatchdogClose关闭打开的设备句柄:
void WatchdogClose
\(
DevHandle handle
\)
;
**表 9**
WatchdogClose参数和返回值描述
```
void WatchdogClose(DevHandle handle);
```
**表9**
WatchdogClose参数和返回值描述
|
**参数**
|
**参数描述**
|
| -------- | -------- |
| handle | 看门狗设备句柄 |
<a
name=
"table1017315185320"
></a>
<table><thead
align=
"left"
><tr
id=
"row417314182327"
><th
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
id=
"mcps1.2.3.1.1"
><p
id=
"p117310184320"
><a
name=
"p117310184320"
></a><a
name=
"p117310184320"
></a><strong
id=
"b141734185327"
><a
name=
"b141734185327"
></a><a
name=
"b141734185327"
></a>
参数
</strong></p>
</th>
<th
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
id=
"mcps1.2.3.1.2"
><p
id=
"p7173191812324"
><a
name=
"p7173191812324"
></a><a
name=
"p7173191812324"
></a><strong
id=
"b2017318188327"
><a
name=
"b2017318188327"
></a><a
name=
"b2017318188327"
></a>
参数描述
</strong></p>
</th>
</tr>
</thead>
<tbody><tr
id=
"row1617331823211"
><td
class=
"cellrowborder"
valign=
"top"
width=
"44.99%"
headers=
"mcps1.2.3.1.1 "
><p
id=
"p17173191811326"
><a
name=
"p17173191811326"
></a><a
name=
"p17173191811326"
></a>
handle
</p>
</td>
<td
class=
"cellrowborder"
valign=
"top"
width=
"55.010000000000005%"
headers=
"mcps1.2.3.1.2 "
><p
id=
"p538814308323"
><a
name=
"p538814308323"
></a><a
name=
"p538814308323"
></a>
看门狗设备句柄
</p>
</td>
</tr>
</tbody>
</table>
```
```
/* 关闭看门狗 */
/* 关闭看门狗 */
ret = WatchdogClose(handle);
ret = WatchdogClose(handle);
```
```
## 使用实例<a name="section1724514523135"></a>
## 使用实例
本例程提供看门狗的完整使用流程。
本例程提供看门狗的完整使用流程。
在本例程中,我们打开一个看门狗设备,设置超时时间并启动计时:
在本例程中,我们打开一个看门狗设备,设置超时时间并启动计时:
-
首先定期喂狗,即按时清除看门狗定时器,确保系统不会因定时器超时而复位。
-
首先定期喂狗,即按时清除看门狗定时器,确保系统不会因定时器超时而复位。
-
接着再停止喂狗,观察定时器到期后系统是否发生复位行为。
-
接着再停止喂狗,观察定时器到期后系统是否发生复位行为。
示例如下:
示例如下:
```
```
#include "watchdog_if.h"
#include "watchdog_if.h"
...
@@ -483,7 +293,7 @@ static int32_t TestCaseWatchdog(void)
...
@@ -483,7 +293,7 @@ static int32_t TestCaseWatchdog(void)
/* 打开0号看门狗设备 */
/* 打开0号看门狗设备 */
handle = WatchdogOpen(0);
handle = WatchdogOpen(0);
if (handle == NULL) {
if (handle == NULL) {
HDF_LOGE("Open watchdog fail!");
HDF_LOGE("Open watchdog fail
ed
!");
return -1;
return -1;
}
}
...
@@ -507,14 +317,14 @@ static int32_t TestCaseWatchdog(void)
...
@@ -507,14 +317,14 @@ static int32_t TestCaseWatchdog(void)
/* 启动看门狗,开始计时 */
/* 启动看门狗,开始计时 */
ret = WatchdogStart(handle);
ret = WatchdogStart(handle);
if (ret != HDF_SUCCESS) {
if (ret != HDF_SUCCESS) {
HDF_LOGE("%s: s
at
rt fail! ret:%d\n", __func__, ret);
HDF_LOGE("%s: s
ta
rt fail! ret:%d\n", __func__, ret);
WatchdogClose(handle);
WatchdogClose(handle);
return ret;
return ret;
}
}
/* 每隔1S喂狗一次 */
/* 每隔1S喂狗一次 */
for (i = 0; i < WATCHDOG_TEST_FEED_TIME; i++) {
for (i = 0; i < WATCHDOG_TEST_FEED_TIME; i++) {
HDF_LOG
E
("%s: feeding watchdog %d times... \n", __func__, i);
HDF_LOG
I
("%s: feeding watchdog %d times... \n", __func__, i);
ret = WatchdogFeed(handle);
ret = WatchdogFeed(handle);
if (ret != HDF_SUCCESS) {
if (ret != HDF_SUCCESS) {
HDF_LOGE("%s: feed dog fail! ret:%d\n", __func__, ret);
HDF_LOGE("%s: feed dog fail! ret:%d\n", __func__, ret);
...
@@ -524,18 +334,17 @@ static int32_t TestCaseWatchdog(void)
...
@@ -524,18 +334,17 @@ static int32_t TestCaseWatchdog(void)
OsalSleep(1);
OsalSleep(1);
}
}
/* 由于喂狗间隔小于超时时间,系统不会发生复位,此日志可以正常打印 */
/* 由于喂狗间隔小于超时时间,系统不会发生复位,此日志可以正常打印 */
HDF_LOG
E
("%s: no reset ... feeding test OK!!!\n", __func__);
HDF_LOG
I
("%s: no reset ... feeding test OK!!!\n", __func__);
/* 接下来持续不喂狗,使得看门狗计时器超时 */
/* 接下来持续不喂狗,使得看门狗计时器超时 */
for (i = 0; i < WATCHDOG_TEST_FEED_TIME; i++) {
for (i = 0; i < WATCHDOG_TEST_FEED_TIME; i++) {
HDF_LOG
E("%s: watiting dog ba
ck %d times... \n", __func__, i);
HDF_LOG
I("%s: waiting dog bu
ck %d times... \n", __func__, i);
OsalSleep(1);
OsalSleep(1);
}
}
/* 当不喂狗时间到达之前设定的超时时间的时候,系统会发生复位,理论上观察不到此日志的打印 */
/* 当不喂狗时间到达之前设定的超时时间的时候,系统会发生复位,理论上观察不到此日志的打印 */
HDF_LOG
E
("%s: dog hasn't back!!! \n", __func__, i);
HDF_LOG
I
("%s: dog hasn't back!!! \n", __func__, i);
WatchdogClose(handle);
WatchdogClose(handle);
return -1;
return -1;
}
}
```
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录