![]() |
1
5
在嵌入式系统中,通常要做的是看门狗模块。 看门狗检查某个位置(可以是文件,也可以是内存位置,等等),如果该位置不符合条件,则重新启动正在检查的系统。 因此,您的程序可能处于探测之下,您要做的就是周期性地编写一些带有epoch戳的programname\u看门狗文件。这将是常规循环的一部分。 然后你的看门狗(在一个完全不同的过程中)会检查文件。如果列出的日期已经足够过时,则另一个程序将被终止并重新启动,因为它将被视为严重故障(挂起或崩溃)。请注意,您的看门狗将有一些简单的逻辑,因此其失败的可能性要低得多。 积极的 编辑: 你必须考虑你的系统是建立在什么堆栈之上的。外部依赖性越多,失败的风险就越大。如果您正在寻找完美的操作,您还必须考虑程序正确性的正式证明。 问题 真正地 成为您对系统的期望值;什么样的故障是不可接受的,什么样的故障是预期的,这样您就可以对它们进行补偿。 这个问题很快就成为了一个验证软硬件协同设计的问题(也很昂贵)。我很想知道你在做什么,你的解决办法是什么。 |
![]() |
2
0
就像保罗内森说的,用一只看门狗。
这是一个伪代码样本,来自用于过程控制的嵌入式RTU中的实际代码。
如果你想要更多的数据,开始调查Modbus使用的返回码,或者OPC协议如何处理管理其数据
|
![]() |
3
0
好。这个问题我想了很久,出现了两件事。 一个软件看门狗应该是如此简单,崩溃应该是不可能的。对于疯子来说,一个有趣的编程挑战就是写一个 网 用不同语言编写的看门狗,必须彼此保持活力,所有看门狗一起监视主要进程。 即使富有挑战性和趣味性,它似乎是一个大问题 浪费时间 ,场景看起来像战争中的士兵。
所以现在我的应用程序有一个软件看门狗,它刷新硬件看门狗,并监视程序的生命周期。
|
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 7 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |