首页 > 系统相关 >AMD-Xilinx MPSoC的Watchdog在Linux中使用的简明教程

AMD-Xilinx MPSoC的Watchdog在Linux中使用的简明教程

时间:2023-02-21 16:35:46浏览次数:62  
标签:MPSoC 00 watchdog0 Linux AMD uptime Watchdog watchdog proc

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_%.bbappend content
YAML_COMPILER_FLAGS_append = " -DENABLE_EM -DENABLE_SCHEDULER"

2022.1及以后的版本:

# pmu-firmware_%.bbappend content
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 | grep watchdog
[  539.845269] watchdog: watchdog0: watchdog did not stop!
[  691.897271] watchdog: watchdog1: watchdog did not stop!
[  702.136679] cdns-wdt ff150000.watchdog: Watchdog timed out. Internal reset not enabled

通过设备节点控制Watchdog

通过设备节点“/dev/watchdog0”可以控制Watchdog。

执行命令“echo s > /dev/watchdog0”,能启动Watchdog,但是没有清狗操作。时间久了,单板会自动重启动。

# echo s > /dev/watchdog0
[  154.773229] watchdog: watchdog0: watchdog did not stop!

# dmesg -c | tail -n 20
[  154.773229] watchdog: watchdog0: watchdog did not stop!

# dmesg -c | tail -n 20

# cat /proc/uptime
193.70 738.72
# Xilinx Zynq MP First Stage Boot Loader
Release 2022.1   Apr 11 2022  -  09:29:50
NOTICE:  BL31: v2.6(release):v1.1-9207-g67ca59c67

执行命令“echo 'V' > /dev/watchdog0”,能停止Watchdog,单板再也不会自动重启动。

# echo s > /dev/watchdog0  && cat /proc/uptime

[ 1850.817370] watchdog: watchdog0: watchdog did not stop!
1850.69 7364.03

# sleep 1

# echo 'V' > /dev/watchdog0 && cat /proc/uptime
1852.40 7370.84

# cat /proc/uptime
1887.11 7509.61
# cat /proc/uptime
1971.67 7847.72
# cat /proc/uptime
2159.96 8600.54

通过应用程序控制Watchdog

Linux也提供了应用程序watchdog控制Watchdog,启动Watchdog并清狗。下面是启动Watchdog的示例。如果由于特殊原因,应用程序watchdog异常退出,就会导致单板复位。下面的例子中,使用kill命令杀死了应用程序watchdog的进程,导致单板复位。

# watchdog -T 10 -t 3 /dev/watchdog0
# ps -A  | grep watchdog
     95 ?        00:00:00 watchdogd
   1159 ?        00:00:00 watchdog

#  cat /proc/uptime
1880.18 7481.78

#  cat /proc/uptime
1895.65 7543.65

# kill -9 1159
# [ 1904.549498] watchdog: watchdog0: watchdog did not stop!

# Xilinx Zynq MP First Stage Boot Loader
Release 2022.1   Apr 11 2022  -  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-init start && cat /proc/uptime
Set healthy bit
/etc/init.d/watchdog-init: line 92: /sys/firmware/zynqmp/health_status: Permission denied
Starting WDT
2199.54 8758.78

# ps -A  | grep watchdog
     95 ?        00:00:00 watchdogd
   1110 ?        00:00:00 watchdog

# sleep 5

# /etc/init.d/watchdog-init stop && cat /proc/uptime
Stoping WDT
2204.62 8779.08

# cat /proc/uptime
2299.32 9157.71

# cat /proc/uptime
2628.22 10472.73

参考文档

Cadence WDT Driver

测试单板

KV260 2022.1 BSP

标签:MPSoC,00,watchdog0,Linux,AMD,uptime,Watchdog,watchdog,proc
From: https://www.cnblogs.com/hankfu/p/17141471.html

相关文章

  • Linux系统之安装apache服务
    (Linux系统之安装apache服务)一、检查本地系统版本[root@node~]#cat/etc/os-releaseNAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID_LIKE="rhelfedora"VE......
  • Spire Linux Word 转PDF 字体问题
    1、首先要考虑为什么会出现这个问题呢,在windows环境下是正常的,在linux环境下就有问题了2、问题原因:Spireword转pdf会依赖环境字段,如果文档中使用字体在linux环境上没有......
  • Linux ping命令有什么用?
    Ping是Windows系统、Unix系统和Linux系统下的一个常用命令,也是每个人学习都必须接触到的命令,那么Linuxping命令有什么用?本篇文章为大家介绍一下。Linuxping命令......
  • 什么是 Linux 上的 TTY? (以及如何使用 tty 命令)
    什么是Linux上的TTY?(以及如何使用tty命令)tty命令有什么作用?它打印您正在使用的终端的名称。TTY代表“电传打字机”(TeleTypeWriter)。命令名称背后的故事是什么?......
  • linux常用命令笔记
    1、kill指定条件的进程ps -ef | grepsomeone| awk '{ print $2 }' | xargs kill -92、遍历删除当前目录下指定名称的文件(-typef来指定是删除文件,-type......
  • Linux 搭建Tomcat
    1、下载官网:https://tomcat.apache.org/download-80.cgi下载链接,自行到官网复制,直接使用如下链接,可能会出错的wgethttps://dlcdn.apache.org/tomcat/tomcat-8/v8.5.84......
  • kali-linux系统密码忘记了的解决方法
    1、电脑开机后kali系统会进入引导界面,这时不停的按【E】键进入启动前编辑命令(若系统没有出现这个页面,尝试重启以此来进入引导界面)2、进入启动前编辑命令界面后,在Linux这......
  • Linux磁盘/硬盘测速,dd命令
    参考:https://blog.csdn.net/Franciz777/article/details/126779259  ================================================= 概念介绍:/dev/zero:InUnix-likeoper......
  • M1安装PD tools linux-headers报错
    1.报错信息Anerroroccurredwhileinstallingthefollowingpackages:-linux-headers-5.18.0-kali5-arm64InstallthesepackagesmanuallyandstarttheParall......
  • linux服务器gitlab设置普通用户为超级管理员
    登录gitlab后台之后,如果判断账号是不是超级管理员呢1、看导航栏,是否有这个图标,如果有表示是超级管理员,如果没有则不是。 2、地址栏直接加admin访问,例如:192.168.1.22/ad......