我正在使用带有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_device
API 来获取实现的标志(环境监控(。
请检查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
这就是我解决上述问题的方式。
-
查找有关imx2 +看门狗包的所有文件音乐会。
-
通过添加更多标志作为 watchdog.h 文件进行修改。
-
访问Yocto中的菜单配置,并在看门狗部分中打开一些选项。此操作可确保 bitbake 识别驱动程序中的更改。
-
重新生成操作系统映像。