在Python中的Beaglebone黑色看门狗

时间:2015-04-20 14:23:14

标签: 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? 什么是在后台运行脚本以便它可以使用冻结的操作系统重新启动系统的最佳方法?

1 个答案:

答案 0 :(得分:0)

This comment

Padraic Cunningham已将我引向manpage for watchdog.conf,这是在AM335x上配置硬件WDT的正确且可行的方法,因此不需要其他脚本/守护程序:< / p>

watchdog-timeout = 10