喂狗报错,提示设备正在被使用:
px30_evb:/ # echo 1 > /dev/watchdog
/system/bin/sh: can't create /dev/watchdog: Device or resource busy
使用lsof查看占用的设备的进程:
px30_evb:/ # lsof /dev/watchdog
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
watchdogd 235 root 4u CHR 10,130 0t0 8319 /dev/watchdog
系统显示是watchdogd占用了
在/device/目录下查找:
root@ubuntu:/data/px30_oreo# grep -r watchdogd device/
device/rockchip/common/init.rockchip.rc: # start watchdogd
device/rockchip/common/init.rockchip.rc:service watchdogd /sbin/watchdogd 10 20
device/rockchip/common/init.rockchip.rc: seclabel u:r:watchdogd:s0
将device/rockchip/common/init.rockchip.rc 文件中watchdogd守护进程注释,即可释放watchdogd的读写操作
# Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin
#service watchdogd /sbin/watchdogd 10 20class coredisabledseclabel u:r:watchdogd:s0
系统镜像中,busybox watchdog命令解释:
watchdog [-t N[ms]] [-T N[ms]] [-F] DEVPeriodically write to watchdog device DEVOptions:-T N Reboot after N seconds if not reset (default 60)-t N Reset every N seconds (default 30)-F Run in foreground-T N如果未重置,则在N秒后重新启动(默认为60)-t N每N秒重置一次(默认为30)-F 在前台运行
Use 500ms to specify period in milliseconds
根据以上解释,使用以下命令,可使设备在2s后重启:
# watchdog -t 10 -T 4 /dev/watchdog
参考资料:
https://wiki.t-firefly.com/iCore-3568JQ/driver_watchdog.html
https://unix.stackexchange.com/questions/125080/linux-watchdog-and-systemd-watchdog