uboot - 驱动开发 - dw watchdog

文章介绍了公司在使用Synopsys的watchdog模块时如何在uboot和kernel中进行开发,特别是在遇到启动问题时启用watchdog以实现故障恢复。讨论了两种不同的驱动模型(不支持DM和支持DM),以及它们各自的配置和驱动代码实现。

说明

  • 公司SOC使用的watchdog模块是新思(Synopsys)的IP。

需求

  • 用户有时会在uboot/kernel中做些开发,新增一些功能(OTA升级等),可能会出现uboot/kernel启动崩溃甚至设备死机等问题,需要在uboot启动阶段开启watchdog监控设备运行实现异常后复位。

实现

  • 前提:dts watchdog节点配置ok。
  • 由于历史原因,根据是否支持DM(Driver model),uboot原生支持两种wdt驱动和使用的配置/实现方式。
  1. 不支持DM,常见于较早版本(uboot,wdt驱动)实现
核心配置项:CONFIG_HW_WATCHDOG
  1. 支持DM
核心配置项:CONFIG_WDT

// file: drivers/watchdog/Kconfig
config WDT
    bool "Enable driver model for watchdog timer drivers"
    depends on DM
    ....    

不支持DM

配置项

  1. 核心配置
CONFIG_HW_WATCHDOG 
  1. wdt timeout时间
CONFIG_WATCHDOG_TIMEOUT_MSECS
  1. 具体型号的wdt,例如:dw wdt。
CONFIG_DESIGNWARE_WATCHDOG
  • 如果未配置支持DM(CONFIG_WDT),但是配置了硬件wdt,CONFIG_HW_WATCHDOG会自动选上,例如:
config DESIGNWARE_WATCHDOG
    bool "Designware watchdog timer support"
    select HW_WATCHDOG if !WDT
    ...

驱动代码

  1. 定义并实现驱动相关功能接口
//file: drivers/watchdog/designware_wdt.c
static int designware_wdt_settimeout(unsigned
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值