如何在 Linux 中添加更多原因标志导致使用看门狗重新启动?



我正在使用带有Yocto的iMX8MM。我正在尝试找出导致使用看门狗重新启动的原因。

我找到了watchdog.h,有很多标志:

#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 个标志:

$ 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 使用?

你在 watchdog.h 中看到的宏(标志(是完整的列表。但是,应用程序实用程序(此处wdctl(正在从内核读取驱动程序功能实现。

您看到的另一个标志WDIOF_OVERHEAT和其他标志应该受到内核驱动程序的支持,然后只有它可用于wdctl列表。

查看wdctl的源代码的工作方式如下。它调用read_watchdog_from_deviceAPI 来获取实现的标志(环境监控(。

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

参考资料: https://github.com/karelzak/util-linux/blob/master/sys-utils/wdctl.c https://www.kernel.org/doc/Documentation/watchdog/watchdog-api.txt

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

  1. 查找有关imx2 +看门狗包的所有文件音乐会。

  2. 通过添加更多标志作为 watchdog.h 文件进行修改。

  3. 访问Yocto中的菜单配置,并在看门狗部分中打开一些选项。此操作可确保 bitbake 识别驱动程序中的更改。

  4. 重新生成操作系统映像。

相关内容

最新更新