RTOS常用的设计模式(VXworks)

时间:2010-05-10 04:22:59

标签: c++ c embedded vxworks rtos

任何人都可以帮我解决RTOS常用的设计模式吗? 在VXworks中,哪种模式更受欢迎?

3 个答案:

答案 0 :(得分:7)

我们可以忽略你问题中的第二句吗?它没有意义,也许表明对设计模式的误解。然而,第一部分很有趣。也就是说,我会将其概括为涵盖实时系统而不是RTOS。

许多最熟悉的模式都是机械的,但在实时系统中,更高级别的架构模式也很重要。

Bruce Powell Douglass可能是关于实时系统模式主题的最重要的作者。如果你想要了解他对这个主题的看法,那么请阅读this article上的Embedded.com(这是三个系列中的第三部分;请务必阅读前两个,因为他们也触及主题,(1) (2))。你也可能比访问Embedded.com并在搜索框中输入“设计模式”更糟糕,有很多关于特定模式的文章和关于这个主题的一般文章。

虽然我认为您在请求“RTOS(VxWorks)”模式方面有很大的特殊性,但我专门用于VxWorks的模式是FacadeAdapter模式。部分是提供OO API,并提供一定程度的RTOS不可知抽象。然后为Segger emBOS实现生成的类(允许我们运行更小,更低成本,免版税的RTOS),以及Windows和Linux,以允许使用更强大的工具在更丰富的环境中测试,调试和模拟代码。

Wikipedia提供了许多模式的非详尽列表,其中许多模式将适用于实时系统。列出的并发模式最明显相关。

答案 1 :(得分:6)

正如Mike DeSimone评论的那样,过于笼统。但是,对于RTOS(不仅仅是VxWorks),请记住以下几点。

  1. 避免在ISR中做太多事情。如果可能的话,将一些处理传递给等待的任务。
  2. 保持多线程最佳。太多,你有上下文切换开销。太少,您的问题解决方案可能会很复杂。

答案 2 :(得分:1)

另一个重要方面是保持RTOS对用户的可预测性和可理解性。通常情况下,您会看到固定优先级的调度程序,这些调度程序不会尝试公平或自适应,而是完全按照说明执行,如果您搞砸了优先级并且饿死了某些任务,那就这样吧。完成内核操作的时间往往很短且可预测,通常记录最差的执行时间。