python - Python 中的 Beaglebone Black 看门狗

标签 python beagleboneblack ioctl watchdog

我有一个运行 Debian 的 Beaglebone Black,我需要一个在后台运行的脚本,它会每隔几秒检查一次系统是否仍在运行。据我了解,BBB 中的看门狗是基于硬件的,独立于操作系统运行,因此即使操作系统完全卡住,它也可以重启设备(对吗?)。这是来自 logicsupply 的一个非常简单的示例:

#!/usr/bin/env python

import time
import os

os.nice(20)
time.sleep(60)                  # Wait before starting
wd = open("/dev/watchdog", "w+")
while 1:
     wd.write("\n")
     wd.flush()
     time.sleep(5)

但我找不到更改默认超时的方法。在 C 中它看起来像:

ioctl(fd, WDIOC_SETTIMEOUT, &timeout);

但是在 Python 中调用 ioctl 函数似乎相当晦涩。来自 this discussion似乎 C 宏定义可能具有不同的值,具体取决于硬件。在 Python 中是否有一种方便的方法来解决它们(至少,这个特定的方法,以更改默认的看门狗超时)? 在后台运行脚本的最佳方式是什么,以便它可以使用卡住的操作系统重新启动系统?

最佳答案

This comment通过 Padraic Cunningham已指示我到 manpage for watchdog.conf这是在 AM335x 上配置硬件 WDT 的正确且有效的方法,因此不需要额外的脚本/守护进程:

watchdog-timeout = 10

关于python - Python 中的 Beaglebone Black 看门狗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750547/

相关文章:

linux - 设备树中的 Gpio hog 是什么?

c - 如何使用 ioctl 将负整数作为有效结果返回?

python - Seaborn KDEPlot - 数据变化不够?

c - 函数永远不会执行,但代码会编译

linux - 在 beaglebone black 开发板上移植并运行 linux 内核

c++ - FBIOPUT_VSCREENINFO 和模式行

c++ - 关闭远程 PC 上的显示

python - Login_redirect_url 不起作用。 View 总是重定向到索引

python - Matplotlib - 日期之间的间隔更大

python - list.sort() 不返回排序后的列表