21 Star 83 Fork 34

Phytium嵌入式软件 / Phytium-Standalone-SDK

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
fwdt.md 3.22 KB
一键复制 编辑 原始数据 按行查看 历史
liushengming 提交于 2023-08-24 07:21 . !84v1.2.0 master

WDT 驱动程序

1. 概述

  • WDT(watchdog timer)看门狗定时器是一种监控系统运行状况的手段,软件需在运行过程中定时向看门狗发送喂狗信号。

  • 若看门狗定时器在一段时间内没有收到来自软件的喂狗信号,则认为系统故障,会强制系统复位。

  • WDT 驱动支持的平台包括 FT2000/4、D2000、E2000。

2. 功能

WDT 驱动程序主要完成WDT模块的初始化、超时时间设置和超时中断函数,该驱动程序具备以下功能:

  • 模块初始化
  • 超时时间设置
  • 超时中断函数设置

相关源文件为:

fwdt
    ├── fwdt.c
    ├── fwdt.h
    ├── fwdt_g.c
    ├── fwdt_hw.c
    ├── fwdt_hw.h
    ├── fwdt_intr.c
    └── fwdt_sinit.c

3. 配置方法

以下部分将指导您完成 WDT 驱动的软件配置:

  • 配置驱动程序,新建应用工程,使能WDT驱动模块
  • 设置配置参数
  • 设置超时时间
  • 设置超时中断函数喂狗

4. 应用示例

wdt_test

5. API参考

5.1. 用户数据结构

  • drivers/wdt/fwdt/fwdt.h

  • wdt实例配置

typedef struct
{
    u32 instance_id;/* wdt id */
    uintptr refresh_base_addr;/* wdt refresh base addr */
    uintptr control_base_addr;/* wdt control base addr */
    u32 irq_num;    /* wdt ir num */
    u32 irq_prority;/* wdt irq priority */
    const char *instance_name;/* instance name */
}FWdtConfig;/* wdt config */

5.2 错误码定义

  • FWDT_SUCCESS : success
  • FWDT_ERR_INVAL_PARM : invalid input parameters
  • FWDT_NOT_READY : driver not ready
  • FWDT_NOT_SUPPORT : not support operation
  • FWDT_TIMEOUT : wait timeout

5.3. 用户API接口

  • 获取wdt驱动的默认配置参数
const FWdtConfig *FWdtLookupConfig(u32 instance_id);
Note:

- 用户需要修改配置参数时,可以通过修改返回的FWdtConfig副本,作为后续使用函数的入参,

Input:

- u32 instance_id, 当前控制的WDT控制器实例号 

Return:

- const FWdtConfig *, 返回驱动默认参数, NULL表示失败
  • 设置wdt超时时间
u32 FWdtSetTimeout(FWdtCtrl *pCtrl, u32 timeout);
Note:

- 此函数会根据传入的超时时间初始化WDT寄存器;
- WDT两次超时后,才执行系统复位操作;例如希望WDT 6s后复位,则应设置timeout=3;

Input:

- FWdtCtrl *pCtrl, WDT驱动实例数据 

- u32 timeout, 设置的WDT超时时间,最大不超过89

Return:

- u32, 参考5.2章错误码定义
  • WDT喂狗函数
u32 FWdtRefresh(FWdtCtrl *pCtrl);
Note:

- 此函数会刷新wdt寄存器,重新开始计时

Input:

- FWdtCtrl *pCtrl, WDT驱动实例数据 

Return:

- u32, 参考5.2章错误码定义
  • WDT使能函数
u32 FWdtStart(FWdtCtrl *pCtrl);
Note:

- 此函数会使能wdt

Input:

- FWdtCtrl *pCtrl, WDT驱动实例数据 

Return:

- u32, 参考5.2章错误码定义
  • WDT停止函数
u32 FWdtStop(FWdtCtrl *pCtrl);
Note:

- 此函数会停止wdt

Input:

- FWdtCtrl *pCtrl, WDT驱动实例数据 

Return:

- u32, 参考5.2章错误码定义
C
1
https://gitee.com/phytium_embedded/phytium-standalone-sdk.git
git@gitee.com:phytium_embedded/phytium-standalone-sdk.git
phytium_embedded
phytium-standalone-sdk
Phytium-Standalone-SDK
master

搜索帮助