• Home
Name Date Size #Lines LOC

..--

BUILD.gnD12-May-20241.2 KiB3228

README_zh.mdD12-May-20245.4 KiB248178

hdf_watchdog_test.cD12-May-20243.4 KiB11886

README_zh.md

1# Niobe407开发板OpenHarmony基于HDF驱动框架编程开发——Watchdog
2本示例将演示如何在Niobe407开发板上通过HDF驱动框架使用看门狗。
3
4## 接口说明
5
6### WatchdogOpen()
7
8```
9int32_t WatchdogOpen(int16_t wdtId,  DevHandle *handle)
10```
11
12**描述:**
13
14watchdog Open打开看门狗函数。
15
16**参数:**
17
18| 名字   | 描述     |
19| :----- | :------- |
20| wdtId  | 看门狗ID |
21| handle | 设备句柄 |
22
23### WatchdogClose()
24
25```
26void WatchdogClose(DevHandle handle)
27```
28
29**描述:**
30
31watchdog close关闭看门狗函数。
32
33**参数:**
34
35| 名字   | 描述     |
36| :----- | :------- |
37| handle | 设备句柄 |
38
39### WatchdogFeed()
40
41```
42int32_t WatchdogFeed(DevHandle handle)
43```
44
45**描述:**
46
47watchdog feed喂狗函数。
48
49**参数:**
50
51| 名字   | 描述     |
52| :----- | :------- |
53| handle | 设备句柄 |
54
55### WatchdogGetStatus()
56
57```
58int32_t WatchdogGetStatus(DevHandle handle, int32_t *status)
59```
60
61**描述:**
62
63watchdog getStatus获取看门狗状态函数。
64
65**参数:**
66
67| 名字   | 描述           |
68| :----- | :------------- |
69| handle | 设备句柄       |
70| status | 看门狗状态指针 |
71
72### WatchdogStart()
73
74```
75int32_t WatchdogStart(DevHandle handle)
76```
77
78**描述:**
79
80watchdog start启动看门狗函数。
81
82**参数:**
83
84| 名字   | 描述     |
85| :----- | :------- |
86| handle | 设备句柄 |
87
88### watchdogStop()
89
90```
91int32_t WatchdogStop(DevHandle handle)
92```
93
94**描述:**
95
96watchdog stop停止看门狗函数。
97
98**参数:**
99
100| 名字   | 描述     |
101| :----- | :------- |
102| handle | 设备句柄 |
103
104### WatchdogSetTimeout()
105
106```
107int32_t WatchdogSetTimeout(DevHandle handle, uint32_t seconds)
108```
109
110**描述:**
111
112watchdog setTimeout设置看门狗超时时间函数。
113
114**参数:**
115
116| 名字    | 描述     |
117| :------ | :------- |
118| handle  | 设备句柄 |
119| seconds | 超时时间 |
120
121### WatchdogGetTimeout()
122
123```
124int32_t WatchdogGetTimeout(DevHandle handle, uint32_t *seconds)
125```
126
127**描述:**
128
129watchdog getTimeout获取看门狗超时时间函数。
130
131**参数:**
132
133| 名字    | 描述                   |
134| :------ | :--------------------- |
135| handle  | 设备句柄               |
136| seconds | 超时时间指针,单位为秒 |
137
138
139## 编译调试
140- 进入//kernel/liteos_m目录, 在menuconfig配置中进入如下选项:
141
142     `(Top) → Platform → Board Selection → select board niobe407 → use talkweb niobe407 application → niobe407 application choose`
143
144- 选择 `205_hdf_watchdog`
145
146- 在menuconfig的`(Top) → Driver`选项中使能如下配置:
147
148```
149    [*] Enable Driver
150    [*]     HDF driver framework support
151    [*]         Enable HDF platform driver
152    [*]             Enable HDF platform watchdog driver
153```
154- 回到sdk根目录,执行`hb build -f`脚本进行编译。
155
156## 运行结果
157
158示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手可查看到如下日志:
159```
160[HDF:E/HDF_LOG_TAG]HdfWatchdogTestEntry ----------
161
162[HDF:E/HDF_LOG_TAG]WatchdogGetStatus: 0
163
164[HDF:E/HDF_LOG_TAG]WatchdogGetTimeout: 500
165
166[HDF:E/HDF_LOG_TAG]WatchdogSetTimeout: 1200
167
168[HDF:E/HDF_LOG_TAG]WatchdogGetTimeout: 1200
169
170[HDF:I/HDF_LOG_TAG]WatchdogDevStart: watchdog Started! timeout: 1200ms
171
172[HDF:E/HDF_LOG_TAG]---> WatchdogStart.
173
174[HDF:E/HDF_LOG_TAG]WatchdogGetStatus: 1
175
176[HDF:E/HDF_LOG_TAG]--> WatchdogFeed success!
177[HDF:E/HDF_LOG_TAG]--> WatchdogFeed success!
178[HDF:E/HDF_LOG_TAG]--> WatchdogFeed success!
179[HDF:E/HDF_LOG_TAG]--> WatchdogFeed success!
180```
181## HDF HCS配置
182开发板使用的默认配置(`//device/board/talkweb/niobe407/liteos_m/hdf_config/default.hcs`)中,默认没有配置Watchdog,需要同级目录下的`BUILD.gn`改用`hdf.hcs`文件, 或参考该文件添加watchdog配置:
183
184- 在`default_device_info.hcs`中添加如下配置:
185```
186root {
187    module = "talkweb,stm32f407";
188    device_info {
189        match_attr = "hdf_manager";
190        template host {
191            hostName = "";
192            priority = 100;
193            template device {
194                template deviceNode {
195                    policy = 0;
196                    priority = 100;
197                    preload = 0;
198                    permission = 0664;
199                    moduleName = "";
200                    serviceName = "";
201                    deviceMatchAttr = "";
202                }
203            }
204        }
205        platform :: host {
206            hostName = "platform_host";
207            priority = 50;
208
209            device_watchdog :: device {
210                watchdog0 :: deviceNode {
211                    policy = 1;
212                    priority = 20;
213                    permission = 0644;
214                    moduleName = "ST_WATCHDOG_MODULE_HDF";
215                    serviceName = "HDF_PLATFORM_WATCHDOG_0";
216                    deviceMatchAttr = "st_watchdog";
217                }
218            }
219        }
220    }
221}
222```
223
224- 在`default.hcs`中添加如下配置:
225```
226#include "default_device_info.hcs"
227root {
228    platform {
229        watchdog_config {
230	        template watchdog_controller {
231	            id = 0;
232	            regBase = 0x12050000;
233	            regStep = 0x1000;
234	            timeout = 1000; // watchdog interval(ms)
235	            match_attr = "";
236	        }
237	        st_watchdog :: watchdog_controller {
238	            match_attr = "st_watchdog";
239	            timeout = 500;
240	        }
241        }
242    }
243}
244```
245
246## 约束
247
248STM32F407的看门狗是硬件独立看门狗,不支持关闭功能,使用时需注意看门狗的应用场景。