Yocto 在Linux中,如何添加更多的原因标志,以便使用watchdog重新启动?
我正在使用iMX8MM和Yocto。我正试图找出用看门狗重启的原因 我找到了watchdog.h,那里有很多旗帜:Yocto 在Linux中,如何添加更多的原因标志,以便使用watchdog重新启动?,yocto,flags,reboot,watchdog,nxp-microcontroller,Yocto,Flags,Reboot,Watchdog,Nxp Microcontroller,我正在使用iMX8MM和Yocto。我正试图找出用看门狗重启的原因 我找到了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 /*
#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
如何使用更多的标志?您在看门狗中看到的宏(标志)。h是完整的列表。但是,应用程序实用程序(此处为wdctl
)正在从内核读取驱动程序功能实现
您看到的另一个标志WDIOF_overhet
和其他标志应该由内核驱动程序支持,然后只有它才可用于wdctl
列表
查看wdctl
的源代码,其工作方式如下。它正在调用read\u watchdog\u from\u device
API来获取实现的标志(环境监控)
请从i.MX8MM看门狗imx2_wdt.c
检查相应驱动程序中的标志
参考资料:
这就是我解决上述问题的方法
我还尝试向wdctl添加标志。当我执行wdctl命令时,我可以看到所有的标志。我正在进行测试。最简单的情况是过热,它的工作方式似乎是错误的。我的设备没有重新启动,它已关闭。而且我也无法读取上次重新启动的原因。