介绍。
如果系统发生故障并冻结(”挂起”),则需要执行重启等任务。
在人们无法操作系统的时候,在人们不容易进入系统的地方,或者可能由于人员短缺,找不到人处理问题,重置系统可能有实际困难。
由于系统处于静止状态,因此很难进行远程操作。
这就是看门狗(WD)机制的作用所在。
WD 的作用很简单:监督。
一般会定期检查作用,如果系统出错,就会对系统进行重置。
这次,WD 安装在工业用 Raspi PL-R4 上。
我们尽可能清楚地总结了独立的 WD 和集成在微处理器芯片内的 WD 之间的区别。
这是工业应用中所需的功能之一,因为外部 WD 可以确保复位。
看门狗是一种常规监控功能
WD 也称为 WDT(看门狗定时器)。看门狗 “一词本身在英语中就是看门狗的意思,即使不是狗,也是监视者的意思。
这意味着它是一种定期监控特定位置的功能(机制)。因此,你就像看门狗一样监视着。
看门狗关注的是系统是否正常运行。
WD有两种类型:一种是作为外部IC元件安装的,另一种是内置在微处理器芯片中的。
许多常见的 PC 都有内置设备。以前的微型计算机(PC-98、88),主机上有一个复位按钮,出现异常时,按一下复位按钮即可恢复。
外部 WD 的优势
商用 Raspberry Pi 的微处理器芯片中内置了 WD。这种方法可通过配置文件进行控制。
另一方面,工业用 Raspi PL-R4 中的 WD 是作为外部 WD 实现的;其设计还允许通过 DIP 开关控制 WD 功能的启用/禁用。
外置的最大优点是只要接通电源,WD就能可靠工作。
这是因为内部 WD 位于微处理器芯片内,因此如果 WD 定时器本身停止,则在其上运行的 WD 计数也会停止,从而导致模式无法正常工作。
这意味着系统无法重置,只能通过人为访问设备本身来解决。
在工业应用中,某些设备位置可能不容易到达,为了避免出现这种情况,有必要使用外部 WD。
在商用 Raspberry Pi 上外部安装 WD 可以通过扩展 HAT 或类似装置来实现,但由于电路板尺寸问题和成本增加,很难将其安装到主电路板上。
由于是工业级 Raspi,WD 也安装在室外,确保了几乎无挂机环境。
监督机构的作用和职能
要说明 WD 的实际作用有些困难,但可以说它只是以计数器(时间)的形式测量一个固定的时间间隔。
打个非常抽象的比方,假设你敲了一扇门,门在一秒钟后回应了你。想象一下,你经常敲这扇门,两三秒钟后,门没有反应,五秒钟后,你发现情况异常,于是指示开门(重新启动)。
WD 与 WDT(看门狗定时器)一样,每隔一段时间就会进行一次计数(定时器),并有一个复位计数重复的过程。
从人类的角度来说,这和确认安全是一样的。
我定期拜访他们,询问“你们好吗?”
通常你会得到回应,但如果你今天等了几分钟,他们都没有回应,你就会很担心。
WD 是异常情况的作用和功能,即确定异常情况。
WD 定时器数据表。
工业用 Raspi PL-R4 的外部 WD 定时器如下。
①是 WD 在系统启动时等待的时间。 正如 “60 180 ”所表示的,时间略有不同,从 1 分钟到 3 分钟不等。
实际上,WD 开始工作大约需要 2 分钟(120 秒)。
第②部分中的 “1 3 ”是重置所需的秒数。 这里也有一些差异,从 1 秒到 3 秒不等。
实际上,系统重置大约需要 2 秒钟。
为避免异常情况并确保可靠运行,编程时将分别假定少于 60 秒和少于 1 秒。
它负责在短于系统复位所需的时间内不断重置 WD 计数器,从而继续正常运行。
如果由于某种异常情况,WD 计数没有重置,那么系统就会重置(重启)。
WD 设置(适用于 PL-R4)
以下配置方法与市售 Raspberry Pi 不同。这是 PL-R4 的设置。
Raspberry Pi 操作系统中预装的 WD 是微处理器芯片中的一个软件看门狗。它与本例没有直接关系。
对于 “PL-R4″,需要具备以下条件。
- Dip 开关
- 编辑 config.txt。
- 实施自己的计划
Dip 开关
将电路板上的两个拨码开关中的第一个分别拨至 ON 侧,即可启用 WD 功能。
具体位置如图所示。
仅进行切换并不能启用 WD。
然后修改 config.txt,设置自己的 Python 程序自动运行。
编辑 config.txt。
[all]
如果配置文件 config.txt 部分中的 WD/CSI 已注释,请取消注释并启用它。这是摄像机模块 CSI 的专用选项。
sudo nano /boot/config.txt
将在以下方面进行修改。
检查哪些地方已启用,哪些地方未注释。
[all]
dtparam=i2c0_baudrate=400000
dtoverlay=i2c0,pins_0_1
#WD/CSI select
dtparam=i2c1_baudrate=400000
dtoverlay=i2c1,pins_44_45
#dtoverlay=imx708
这通常与摄像头模块使用的 CSI 端口相反。
计划示例
最后需要的是一个定期重置外部 WD 的程序。
如本节开头所述,目的是测量某个计时器是否计数。
该测试程序使用 GPIO 44 和 45 定期复位 WD。
Python 程序示例
import RPi.GPIO as GPIO
import time
WDEPIN = 44
WDRPIN = 45
GPIO.setwarnings(False)
GPIO.setmode( GPIO.BCM )
GPIO.setup( WDEPIN, GPIO.OUT )
GPIO.setup( WDRPIN, GPIO.OUT )
while 1:
GPIO.output( WDEPIN, False )
GPIO.output( WDRPIN, True )
time.sleep( 1.0 )
GPIO.output( WDRPIN, False )
time.sleep( 1.0 )
在实践中,有必要将其纳入专有应用程序等。
wdrst.py
为测试目的,上述文件在启动时运行。/etc/rc.local
说明放在下一节。
相反,如果不使用 WD,则应注释或删除 rc.local 中的说明,使其不会自动启动。
添加到 rc.local:
#WD
python /home/pi/wdrst.py
exit 0
这里省略了 rc.local,它是编写程序供 Raspberry Pi 自动执行的一种方法。
追加到 rc.local 是在 exit0 之前写入的一种形式,而 exit0 从一开始就存在。
重启后,WD 功能已启用。
尽快检查运行情况。
确认 WD 运行
检查 WD 是否能在重启后正常工作的方法之一是实际挂起系统,看它是否会自动重启。
要人为挂起,可使用命令运行 forkbomb 或导致内核慌乱。
叉弹
表单炸弹允许进程一个接一个地复制,这样进程的总数就会非常庞大,从而使其他进程没有生存空间。
你会发现,从运行的那一刻起,整个系统都会变慢。
如果通过 SSH 连接,即使 SSH 也会很快停止工作。
Forkbomb shell 命令:
【注意】如果 WD 未成功启用,请勿运行。
:(){ :|:& };:
执行后,终端显示如下内容。
在此环境下,系统在 10-15 秒后重新启动。 成功。
-bash: fork: retry: リソースが一時的に利用できません*1
-bash: fork: メモリを確保できません*2
-bash: fork: retry: リソースが一時的に利用できません*1
(continue)
*1 resource temporarily unavailable
*2 unable to allocate memory
其他进程因资源耗尽而挂起,系统因超过 WD 定期检查的特定计数而不得不重启。
内核恐慌
内核慌乱也可能重现由于某些异常导致的系统停止。
内核恐慌是 Windows 用户所不熟悉的,它会在发生内部致命错误时出现。
我在使用 Raspberry Pi 3 和 4 时也遇到过几次这种情况。
这可能是由软件或硬件方面造成的,但我们在 Raspberry Pi 上遇到过这种情况,原因是 microSD 卡损坏。这可能是由于过度重写造成的。不一定是多少次,但运气不好的时候甚至会出现 3~4 次。
sudo su
以下命令只能以 root 权限执行,因此请临时成为超级用户并执行这些命令。
导致内核崩溃的命令:
【注意】In some cases, execution may lead to system damage. Please execute in a test environment.
sudo su
echo c > /proc/sysrq-trigger
在这两种情况下,都能确认系统在设定的秒数内重新启动。
如果 WD 无法正常工作,系统就会一直处于挂起状态,重新启动的唯一方法就是由专人实际移除电源。
此外,如果不知道故障发生的时间,恢复行动就会延迟,系统在一段时间内无法正常运行。
重启系统可提供最低限度的恢复响应。
根据运行环境选择合适的设备。
WD 就像名副其实的看门狗一样监控系统,确保其正常运行。
大多数东西,包括这个 WD,都可以在商用 Raspberry Pi 上试用。
不过,在工业应用中使用 Raspberry Pi 需要一个更强大的系统。
这是因为有些设备安装在炎热、交通不便的地区以及不同的环境中。
在 WD 运行验证过程中,我们得到的印象是,如果你想要一个避免突发问题的系统环境,外部实施的 WD 是一个可靠的选择。
这可以理解为 PL-R4 与市面上的 Raspberry Pi 不同,专门用于工业应用的原因之一。
虽然方法与此不同,但内部配置的 WD 也可用于商用 Raspberry Pi。
对于内部 WD,如果微处理器芯片首先停止,WD 也会停止,这可能导致无法重新启动。
您在尝试时可能会发现自己不太确定。
毕竟,外置 WD 才是可靠的系统。要想系统不被挂起,工业用 Raspi 是一个可靠的选择。
文章由拉斯必达提供
非工程师也能愉快使用的 Raspberry Pi 信息网站。 raspida.com Raspida 运行着 raspida.com,这是一个非工程师也能愉快使用的 Raspberry Pi 信息网站。为有关工业用 Raspberry Pi 的 PiLink 网站供稿。