目次
RKPX30看门狗驱动调试
1、设备树修改
2、设置文件修改
3、驱动代码修改
4、测试
RKPX30看门狗驱动调试
1、设备树修改
设备树文件px30-evb-ddr3-lvds-v10.dts中使能watchdog,默认为disabled。
- &wdt { status = "okay";};
复制代码 2、设置文件修改
修改默认设置文件arch/arm64/configs/rockchip_defconfig,增加dw看门狗驱动支持。
3、驱动代码修改
注释掉dw_wdt_release函数中的reset_control相关代码,否则喂狗步伐异常关闭看门狗设备,设备也不会重启。probe函数中增加dw_wdt_set_top、dw_wdt_arm_system_reset,让驱动自动喂狗,应用步伐仍然可以接受喂狗。
- --- a/drivers/watchdog/dw_wdt.c+++ b/drivers/watchdog/dw_wdt.c@@ -297,10 +297,10 @@ static int dw_wdt_release(struct inode *inode, struct file *filp) pr_crit("watchdog cannot be disabled, system will reboot soon\n"); }- if (!IS_ERR(dw_wdt.rst)) {- reset_control_assert(dw_wdt.rst);- reset_control_deassert(dw_wdt.rst);- }+ //if (!IS_ERR(dw_wdt.rst)) {+ // reset_control_assert(dw_wdt.rst);+ // reset_control_deassert(dw_wdt.rst);+ //} dw_wdt.expect_close = 0;@@ -391,6 +391,8 @@ static int dw_wdt_drv_probe(struct platform_device *pdev) if (ret) pr_warn("cannot register restart handler\n");+ dw_wdt_set_top(DW_WDT_DEFAULT_SECONDS);+ dw_wdt_arm_system_reset(); dw_wdt_set_next_heartbeat(); setup_timer(&dw_wdt.timer, dw_wdt_ping, 0); mod_timer(&dw_wdt.timer, jiffies + WDT_TIMEOUT);
复制代码 4、测试
运行watchdog应用步伐,按Ctrl+C中止应用步伐。过几秒后设备自动重启,表现看门狗工作正常。
- console:/ # watchdogd^C[ 931.754996] dw_wdt: unexpected close, system will reboot soon130|console:/ #
复制代码
来源:https://blog.csdn.net/zhang6318/article/details/112042970
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |