本文基于rockpi 4a单板linux 4.4内核介绍rk3399看门狗(watchdog)的调试方法。
一、驱动文件
rk3399 watchdog用的是新思(synopsys)的ip,在watchdog驱动程序加载时,会注册misc设备,节点为/dev/watchdog。
驱动文件:drivers/watchdog/dw_wdt.c
二、dts配置
配置文件:
arch/arm64/boot/dts/rockchip/rk3399.dtsi
watchdog具体配置如下:
watchdog@ff848000 { compatible = snps,dw-wdt; reg = ; ## watchdog寄存器基地址和映射长度 clocks = ; ## watchdog时钟 interrupts = ; ## watchdog中断号和触发方式}; 三、调试方法
1、关闭看门狗
echo a > watchdog 写入除大写v以外的任意字符,不再喂狗,一段时间后系统会重启。
## drivers/watchdog/watchdog_dev.c/* * watchdog_write: writes to the watchdog. * a write to a watchdog device is defined as a keepalive ping. * writing the magic 'v' sequence allows the next close to turn * off the watchdog (if 'nowayout' is not set). */static ssize_t watchdog_write(struct file *file, const char __user *data, size_t len, loff_t *ppos){ ...} 例:
## 关闭看门狗后,等待一段时间后重启root@linaro-alip:/dev# echo a > watchdog[ 1502.302824] dw_wdt: unexpected close, system will reboot soonroot@linaro-alip:/dev# ddr version 1.20 20190314 ## 系统重启insoft reset 2、打开卡门狗
echo v > watchdog 写入大写v,继续喂狗,系统不再重启。
例:
## 打开看门狗root@linaro-alip:/dev# echo v > watchdogroot@linaro-alip:/dev# 3、config_watchdog_nowayout
在watchdog驱动程序中,需要关注宏config_watchdog_nowayout。使用如下:
static bool nowayout = watchdog_nowayout;module_param(nowayout, bool, 0);module_parm_desc(nowayout, watchdog cannot be stopped once started (default= __module_string(watchdog_nowayout) )); 如果配置了config_watchdog_nowayout,通过echo命令写入任何字符,都不会关闭喂狗。
root@ubuntu:/home/run/code/rockchip-bsp/kernel/arch/arm64/configs# git diff rockchip_linux_defconfigdiff --git a/arch/arm64/configs/rockchip_linux_defconfig b/arch/arm64/configs/rockchip_linux_defconfigindex cfbc7774a15f..80265bdcd598 100644--- a/arch/arm64/configs/rockchip_linux_defconfig+++ b/arch/arm64/configs/rockchip_linux_defconfig config_watchdog=y config_dw_watchdog=y+config_watchdog_nowayout=y config_mfd_cros_ec=y 例:
## 写入任何字符,都不会关闭喂狗root@linaro-alip:~# echo a > watchdogroot@linaro-alip:~# 注:
使用./build/mk-kernel.sh rockpi4a编译内核时,即使修改了rockchip_linux_defconfig文件,编译时,相关配置也不会生效。需要在编译前make distclean或删除内核根目录下的.config文件后,重新编译内核。
无线充电技术继续向前发展
大容量高速率FPGA产品测试综合方案
金鉴实验室AEC-Q102认证
小米全面屏电视E55C评测 新的家庭智能终端入口
MOS晶体管的静态特性(一)
基于RockPi 4A单板Linux 4.4内核介绍RK3399看门狗的调试方法
汽车安全团体发布了自动驾驶汽车立法大纲
华为尚无计划加入O-RAN联盟
如何用新颖的方式使用区块链技术2.0
2021新能源汽车产业发展长荡湖峰会将在江苏省常州市金坛区召开
C进阶技巧:二级指针问题
CEVA音频前端软件解决方案通过Alexa语音服务(AVS)认证
第82届中国电子展今天在沪开幕
是德科技PCIe5.0协议分析仪荣获全球电子成就奖
基于RFID 系统的 CNG 车辆的安全性和准确性套件开发设计
CRT及液晶电视长寿秘籍
伟烽恒多种传感器产品目前正用于各种应用
大功率可调稳压电源是如何工作的呢?
ESP8266开发板+机智云IoT+远程控制的智能风扇
智能开关到底比传统开关好在哪里