用户形象图片

虚拟机

一些航空电子系统使用几个商用计算机。这样更进一步,每个计算机都在模拟它们自身的几个副本,重要的程序同时在几个计算机上运行并且进行投票控制(:en:vote)。

模拟环境的优点就是即使一个计算机出现故障,软件的不同例程能够迁移到正常工作的软件分区,表决的票数并不受影响。

通常虚拟软件运行在计算机的用户模式下,它捕捉、模拟硬件访问和不在用户模式下运行的指令。

检查点计算

另外一种常用的机制是两个计算机计算 for a bit,然后将它们的计算结果报到那个点上。如果一个计算机的计算是 nut,它就会被关闭。

办公用(大内核)操作系统

这种系统通常在没有系统经费的嵌入式项目中流行,但是从这篇文章的多个作者来看这通常是不正确的,它们的逻辑是:

  • 操作系统是经过特殊封装的重用代码库。如果这些代码有用,设计人员就会节省时间和金钱,否则它们就是无用的。
  • 商务系统的操作系统没有嵌入式硬件的接口。例如,如果要用Linux写一个马达控制器或者电话交换机,绝大部分的实际控制操作都是IOCTL调用,同时,正常的读、写和查询界面都是无用的。所以操作系统对于实际的开发妨碍很大。
  • 大多数的嵌入式系统不处理办公事务,所以办公操作系统的大部分代码都被浪费了。例如,绝大多数的嵌入式系统从来都不使用文件系统或者屏幕,所以文件系统和图形用户界面部分就是浪费的,这些不用的代码只会影响系统的可靠性。
  • 办公用操作系统保护硬件不让用户程序操作,这就严重地妨碍了嵌入式开发工作。
  • 操作系统必须移植到嵌入式系统上,也就是说,硬件驱动程序无论如何都必须重写,这也是操作系统最难的部分,所以使用这样的操作系统几乎没有功效。
  • 操作系统真正有用、可移植的特性是小段代码。例如,一个基本的TCP/IP接口大约有3000行代码,另外的一个例子是大约同样大小的简单文件系统。如果设计需要这些代码,能够使用少于嵌入式系统开发10%的经费就能完成,不需要支付版权费用,只需要简单地重写就可以了。如果系统这些代码有足够的通用性,嵌入式系统杂志封面的后面通常有公司销售没有版权费的C语言实现代码。

然而许多工程师并不认同这一点,嵌入式Linux越来越受到人们的欢迎,尤其是在无线路由器全球定位导航系统这样的功能强大的嵌入式系统中。其中有下面一些原因:

  • 有现成的移植到普通嵌入式芯片的实现代码。
  • 它们允许重用公开获得的设备驱动程序网页服务器防火墙或者其它代码。
  • 开发系统能够从许多特性组合开始,在发布的时候可以剔除不需要的功能,从而节约所消耗的内存。
  • 许多工程师认为在用户模式运行应用程序更为可靠、更容易调试,所以开发过程更容易、代码更易于移植。
  • 许多嵌入式系统没有控制系统那样对于实时性的严格要求,对于许多应用来说如嵌入式Linux这样的系统的响应速度就已经足够了。
  • 要求更快的响应速度而不是可靠性的特性通常放到了硬件上。
  • 许多实时操作系统都针对每件产品收取费用,当产品是消费品时,这项费用是巨大的。

Exotic custom 操作系统

一些系统需要安全、及时、可靠或者高效的特性,上面的架构却无法达到,构建这样的系统有一些广为人知的技巧:

  • 雇佣一个真正的系统程序员。他们的花费很小,但是能够节约数年的调试以及相关的收入损失。
  • RMA (rate monotonic analysis),可以用来评估一组任务能否在特定的硬件系统下运行,在最简单的形式下,设计人员保证最快完成的任务有最高的优先级,平均来说 CPU 至少有 30% 的空闲时间。
  • 和谐的任务能够高效地优化CPU。基本上来说,设计人员保证每件工作都是从heartbeat timer开始工作的。在实时操作系统上很难这样做,因为它们在等候输入输出设备的时候通常就会切换任务。
  • 刚好有两个优先级(通常是运行禁止中断)的系统不能出现高优先级任务等候低优先级任务释放信号灯或者其它资源的优先级倒置问题,
  • 有监视器(:en:monitor)的系统不能出现死锁。监视器锁住一段代码禁止中断和其它抢先任务。如果这个监视器只用于一小段快速运行的代码,系统可能工作正常。如果能够证明监视器 API 在所有情况下都能够完整运行,例如仅仅禁止中断,那么就不会产生系统挂起的情况。

这就意味着使用两个优先级和监视器的系统是安全、可靠的,因为它们没有死锁和优先级倒置的问题。如果监视器能够执行到结束,那么就永远不会挂起。如果使用和谐的任务,可能还会相当高效。然而,RMA 无法描述这些系统,优先级最好也不要到处都有,其中包括操作系统和硬件。

回到帖子顶部