gpt4 book ai didi

linux - 如何在嵌入式Linux中更改看门狗定时器

转载 作者:太空狗 更新时间:2023-10-29 12:16:03 25 4
gpt4 key购买 nike

我必须使用 linux 看门狗驱动程序 (/dev/watchdog)。效果很好,我写了一个这样的角色:

 echo 1 > /dev/watchdog

然后看门狗启动,大约 1 分钟后,系统重新启动。

问题是,如何更改超时时间?我必须更改驱动程序中的时间间隔吗?

最佳答案

请阅读Linux documentation .从用户空间更改超时的标准方法是使用ioctl()

int timeout = 45;                        /* a time in seconds */
int fd;
fd = open("/dev/watchdog");
ioctl(fd, WDIOC_SETTIMEOUT, &timeout); /* Send time request to the driver. */

每个看门狗设备都可能有硬件支持的上限(也可能是下限),因此您不能将超时设置任意高。所以设置好超时时间后,再读回超时时间就好了。

ioctl(fd, WDIOC_GETTIMEOUT, &timeout);   /* Update timeout with driver value. */

现在,重读超时可以用作踢频率。

assert(timeout > 2);
while (1) {
ioctl(fd, WDIOC_KEEPALIVE, 0);
sleep(timeout-2);
}

您可以在脚本/shell 命令中编写自己的踢球例程,

    while [ 1 ] ; do sleep 1; echo V > /dev/watchdog; done

然而,userspace watchdog通常使用程序。这应该照顾所有深奥的功能。您可以nice 将用户空间程序设置为最低优先级,然后如果用户空间变得挂起,系统将重置。 BusyBox 包含一个watchdog 小程序。

每个看门狗驱动程序都有separate module parameters大多数都包含设置超时的机制;使用内核命令行或模块参数设置机制。但是,如果您不了解看门狗硬件的具体知识,则基础结构 ioctl 超时更易于移植。 ioctl 可能更面向 future ,因为您的硬件可能会改变。

示例用户空间代码包含在 Linux samples directory 中.

关于linux - 如何在嵌入式Linux中更改看门狗定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24402865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com