首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以高中断率触发看门狗

以高中断率触发看门狗
EN

Stack Overflow用户
提问于 2012-05-21 07:14:04
回答 4查看 952关注 0票数 1

我的工作是一个定制的/专有的RTOS提供的我的客户。

RTOS采用优先抢占的循环调度方式。

情景是-

  1. Renesas H8S控制器以20 MHz运行。
  2. 我已经为以太网中断配置了中断( LAN9221芯片正在中断)
  3. 从LAN控制器读取数据的OS任务在操作系统中以最高优先级运行
  4. 另一个操作系统任务TCP,它是系统中第二高优先级的任务。
  5. 引用监督狗的OS任务

我已经生成了网络流量来模拟网络上的轰炸条件。问题在于以太网上的高数据速率(超过500个数据包/秒),ISR看门狗被触发,被配置为1秒。

看门狗被配置为由操作系统的低优先级任务提供服务,以检测OS功能中的任何问题。

我怀疑ISR的频率和更高优先级的任务不会让看门狗的任务被排定。为了证实我的怀疑,我在ISR本身为看门狗提供服务,直到2000包/秒才开始工作。

请您建议如何处理这种情况,以便看门狗即使在较高的数据/中断率下也不应该开火。

在以正常操作系统优先级运行的OS任务中,会刷新看门狗,这有助于捕捉无穷无尽的循环。

操作系统优先级最高的任务是以太网数据包读取任务。当以太网接收数据包时会产生一个硬件中断,在ISR中,我们安排等待以太网数据包读取任务。

另外,在我的系统中,操作系统没有使用计时器中断运行(就像其他操作系统运行的那样)。操作系统是循环的,并自愿放弃控制。因此,在正常情况下增加看门狗任务优先级是不可能的,否则操作系统总是会发现它处于较高的优先级和就绪状态(监视狗在无限循环中刷新,不等待任何事件),其他任务也不会有时间执行。只有等待某些事件的任务才能具有高度优先次序。

因此,由于频繁中断和高优先级任务的连续调度(以太网数据包读取),看门狗任务没有时间刷新。

EN

回答 4

Stack Overflow用户

发布于 2012-05-21 08:35:50

尽量给你的看门狗一个更高的优先级。

乍一看,这似乎是错误的。看门狗不应该获得高优先级,但这只适用于负载不重的系统。在负载较重的情况下,调度会将看门狗推后(毕竟它的prio很低),这会导致虚假的超时。

给予看门狗很高的优先级不应该对性能有很大的影响(这是一个小任务,不经常运行,由中断触发),但要确保它不能饿死。

缺点是你不能再捕获无穷无尽的循环了(因为这个循环现在可以被看门狗打断)。

您还应该考虑设计糟糕的硬件或错误的中断映射。也许你可以给看门狗IRQ一个比网卡更高的优先级。这将使看门狗能够及时处理其中断,而不必给予任务更高的优先级。

或者,您可以尝试在处理网络数据包时增加计数器。一个新的、高优先级的看门狗线程可以监视此计数器并重新配置低prio看门狗任务,以便只要计数器更改就不触发。

票数 4
EN

Stack Overflow用户

发布于 2012-05-22 06:45:21

在任何形式的实时应用程序中,根据定义,您都需要100%地了解正在发生的事情。您必须知道每个任务占用了多少时间。用示波器测量每项任务所需的时间,按下一个引脚。然后,这些时间为整个系统计算。如果高优先级的任务花费了太多的时间,那么狗显然会饿死。

如果由于非循环或非确定性行为太复杂而无法测量,则程序需要修复。如果看门狗处于高优先级任务中,那么对于任何具有较低prio的任务,几乎都禁用了它。那你最好把看门狗完全关了。

尝试和错误补丁,给予看门狗更高的prio,或增加CPU时钟,直到错误消失,根本不是一个专业的方法。

但是,当然,硬件可能不足以满足您预期的如此高的数据负载。然后,您可能没有其他选择,但要么使用脏补丁或重新设计的产品从零与适当的单片机。

票数 1
EN

Stack Overflow用户

发布于 2012-05-21 18:23:45

这可能不是告诉如何去做的问题,您所描述的体系结构应该能工作。您需要做的是发现为什么没有服务的看门狗。

如果您的RTOS没有用于调试和测试的仪器或工具,您可以在监视狗循环中添加I/O切换,并使用范围监视它--在所有停止切换的时间段中,较高优先级的任务或中断正在运行-if,运行时间超过1秒,看门狗将触发。然后,您可以将类似的工具添加到其他任务和ISRs中,以查看所花费的时间。

您是否可能在高负载下处于死锁状态,以致系统实际上正在失败?一种看门狗开火完全有效的情况。如果它实际上是检测到系统故障,那么您不想停止它的触发--您想要修复系统故障。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10680896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档