AMD-Xilinx MPSoC的器件里,提供了内置的Watchdog。在Vivado里选择Watchdog,并在设备树里使能Watchdog,还不能在Linux中正常使用。
pmu-firmware修改
如果要在Linux中使用Watchdog,需要在project-spec/meta-user/recipes-bsp/embeddedsw/pmu-firmware_%.bbappend中添加如下内容:
2021.1以前的版本:
#pmu-firmware_%.bbappendcontent YAML_COMPILER_FLAGS_append="-DENABLE_EM-DENABLE_SCHEDULER"
2022.1及以后的版本:
#pmu-firmware_%.bbappendcontent YAML_COMPILER_FLAGS:append="-DENABLE_EM-DENABLE_SCHEDULER"
Devicetree
检查Devicetree,确保其中的status为"okay", 也有属性reset-on-timeout。
watchdog@fd4d0000{ clocks=<0x03 0x4b>; compatible="cdns,wdt-r1p2"; interrupt-parent=<0x04>; interrupts=<0x00 0x71 0x01>; phandle=<0x76>; reg=<0x00 0xfd4d0000 0x00 0x1000>; reset-on-timeout; status="okay"; timeout-sec=<0x3c>; }; watchdog@ff150000{ clocks=<0x03 0x70>; compatible="cdns,wdt-r1p2"; interrupt-parent=<0x04>; interrupts=<0x00 0x34 0x01>; phandle=<0x77>; reg=<0x00 0xff150000 0x00 0x1000>; status="okay"; timeout-sec=<0x0a>; };
启动信息
使用命令“dmesg”检查启动信息,有如下信息。
#dmesg-c|grepwatchdog [539.845269]watchdog:watchdog0:watchdogdidnotstop! [691.897271]watchdog:watchdog1:watchdogdidnotstop! [702.136679]cdns-wdtff150000.watchdog:Watchdogtimedout.Internalresetnotenabled
通过设备节点控制Watchdog
通过设备节点“/dev/watchdog0”可以控制Watchdog。
执行命令“echo s > /dev/watchdog0”,能启动Watchdog,但是没有清狗操作。时间久了,单板会自动重启动。
#echos>/dev/watchdog0 [154.773229]watchdog:watchdog0:watchdogdidnotstop! #dmesg-c|tail-n20 [154.773229]watchdog:watchdog0:watchdogdidnotstop! #dmesg-c|tail-n20 #cat/proc/uptime 193.70738.72 #XilinxZynqMPFirstStageBootLoader Release2022.1Apr112022-09:29:50 NOTICE:BL31:v2.6(release):v1.1-9207-g67ca59c67
执行命令“echo 'V' > /dev/watchdog0”,能停止Watchdog,单板再也不会自动重启动。
#echos>/dev/watchdog0&&cat/proc/uptime [1850.817370]watchdog:watchdog0:watchdogdidnotstop! 1850.697364.03 #sleep1 #echo'V'>/dev/watchdog0&&cat/proc/uptime 1852.407370.84 #cat/proc/uptime 1887.117509.61 #cat/proc/uptime 1971.677847.72 #cat/proc/uptime 2159.968600.54
通过应用程序控制Watchdog
Linux也提供了应用程序watchdog控制Watchdog,启动Watchdog并清狗。下面是启动Watchdog的示例。如果由于特殊原因,应用程序watchdog异常退出,就会导致单板复位。下面的例子中,使用kill命令杀死了应用程序watchdog的进程,导致单板复位。
#watchdog-T10-t3/dev/watchdog0 #ps-A|grepwatchdog 95?00:00:00watchdogd 1159?00:00:00watchdog #cat/proc/uptime 1880.187481.78 #cat/proc/uptime 1895.657543.65 #kill-91159 #[1904.549498]watchdog:watchdog0:watchdogdidnotstop! #XilinxZynqMPFirstStageBootLoader Release2022.1Apr112022-09:29:50 NOTICE:BL31:v2.6(release):v1.1-9207-g67ca59c67
通过系统脚本启动Watchdog并清狗
Linux也提供系统脚本/etc/init.d/watchdog-init控制Watchdog。
系统脚本/etc/init.d/watchdog-init也使用了应用程序控制Watchdog。如果使用kill命令杀死应用程序watchdog的进程,也会导致单板复位。
#/etc/init.d/watchdog-initstart&&cat/proc/uptime Sethealthybit /etc/init.d/watchdog-init:line92:/sys/firmware/zynqmp/health_status:Permissiondenied StartingWDT 2199.548758.78 #ps-A|grepwatchdog 95?00:00:00watchdogd 1110?00:00:00watchdog #sleep5 #/etc/init.d/watchdog-initstop&&cat/proc/uptime StopingWDT 2204.628779.08 #cat/proc/uptime 2299.329157.71 #cat/proc/uptime 2628.2210472.73
参考文档
Cadence WDT Driver
测试单板
KV260 2022.1 BSP
审核编辑:汤梓红
-
amd
+关注
关注
25文章
5505浏览量
134751 -
Linux
+关注
关注
87文章
11354浏览量
210657 -
Xilinx
+关注
关注
71文章
2172浏览量
122346 -
MPSoC
+关注
关注
0文章
199浏览量
24346
发布评论请先 登录
相关推荐
Protel DXP简明教程
Rpi SenseHAT与AMD-Xilinx Kria KR260和Petalinux的接口
![Rpi SenseHAT与<b class='flag-5'>AMD-Xilinx</b> Kria KR260和Petalinux的接口](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论