如何在Linux中添加更多的FLAG of reason导致重启的看门狗?

问题描述 投票:1回答:1

我在使用iMX8MM和Yocto。我想弄清楚看门狗的重启原因。

我发现 watchdog.h 中有很多 FLAGs。

#define WDIOF_OVERHEAT 0x0001 /* Reset due to CPU overheat */
#define WDIOF_FANFAULT 0x0002 /* Fan failed */
#define WDIOF_EXTERN1 0x0004 /* External relay 1 */
#define WDIOF_EXTERN2 0x0008 /* External relay 2 */
#define WDIOF_POWERUNDER 0x0010 /* Power bad/power fault */
#define WDIOF_CARDRESET 0x0020 /* Card previously reset the CPU */
#define WDIOF_POWEROVER 0x0040 /* Power over voltage */
#define WDIOF_SETTIMEOUT 0x0080 /* Set timeout (in seconds) */
#define WDIOF_MAGICCLOSE 0x0100 /* Supports magic close char */
#define WDIOF_PRETIMEOUT 0x0200 /* Pretimeout (in seconds), get/set */
#define WDIOF_KEEPALIVEPING 0x8000 /* Keep alive ping reply */

但当我用命令检查时,我只得到4个FLAGs。

$ wdctl

Device: /dev/watchdog
Identity: imx2+ watchdog [version 0]
Timeout: 60 seconds
Pre-timeout: 0 seconds
FLAG                   DESCRIPTION                          STATUS           BOOT-STATUS
KEEPALIVEPING          Keep alive ping reply                  1                   0
MAGICCLOSE             Supports magic close char              0                   0
PRETIMEOUT             Pretimeout (in seconds)                0                   0
SETTIMEOUT             Set timeout (in seconds)               0                   0

我怎么才能得到更多的FLAG呢?

非常感谢你。

Toan

yocto flags reboot watchdog nxp-microcontroller
1个回答
1
投票

你在watchdog.h中看到的宏(flag)是完整的列表。然而,应用程序工具(这里是 wdctl)正在从内核中读取驱动能力实现。

你看到的另一个标志是 WDIOF_OVERHEAT 和其他应该由内核驱动程序支持,然后只有它才会对 wdctl 列表。

从源码上看 wdctl 正在以下列方式工作。它正在调用 read_watchdog_from_device API来获取已实现的标志(环境监测)。

请从i.MX8MM的看门狗中检查相应的驱动中的标志。imx2_wdt.c.

参考文献: https:/github.comkarelzakutil-linuxblobmastersys-utilswdctl.c。https:/www.kernel.orgdocDocumentationwatchdogwatchdog-api.txt


0
投票

这就是我解决上述问题的方法。

  1. 找到所有关于imx2+看门狗包的文件。

  2. 通过在watchdog.h文件中添加更多的标志进行修改。

  3. 在Yocto中访问menuconfig,并打开看门狗部分的一些选项。这个操作可以确保bitbake识别驱动的变化。

  4. 重建并生成操作系统镜像。

© www.soinside.com 2019 - 2024. All rights reserved.