改善对分布式系统和多核系统的支持,RTOS可以满足高档汽车应用的需求。
我们的街道和高速公路正在变成嵌入式网络流动的线路图,这些由许多嵌入式系统组成的网络装在车轮上,随处流动。现代汽车完全可以说是一个计算平台,它有超过50个嵌入式处理器,计算机软件代码超过百万行。由于汽车制造商的注意力已经集中在“在任何可能的地方使用非定制的软件”,所以汽车公司内部的汽车规格的软件开发部门未来的工作重点是将其实践经验和独特的创造力用于汽车软件的需求制定和标准化方面。
嵌入式系统的许多基本问题都可以通过实时操作系统(RTOS)来解决。一个很好的例子就是欧洲汽车工业OSEK/VDX 组织已经为汽车分布的嵌入式控制单元定义一个标准的架构。OSEK/VDX 要求RTOS能够很好地满足汽车嵌入式控制单元在动力系统、底盘与悬梁、车身电子等方面的需求。OSEK/VDX正在成为当前国际汽车工业界占据主导地位的汽车电子开放式系统及其接口的软件规范体系。
显然,OSEK/VDX还不能满足未来汽车应用在高性能传导系统、信息娱乐、安全与生命等方面的需求。很多人认为实时操作系统(RTOS)相当于软件中的赛车,要求小、快、高度协调。除此之外,一个好的RTOS能使应用系统始终满足时限的要求,能对任何时间要求苛刻的事件做出响应,在正确的时间做一个正确的动作。
为高端汽车应用的可供选择的大量RTOS正在日益完善,以适应这些需求。
RTOS内核
大多数的RTOS内核均支持任务调度的基于优先权抢先占有机制。在RTOS中,过程按优先级执行。时限紧迫的过程投入运行时,可以立即从低优先级的过程接管CPU。高优先级过程在结束前,能一直继续运行,除非它被一个更高优先级的过程所抢占。这种“抢占” 调度方式可以使对于时间要求严格的过程满足时限的要求。
一些RTOS也提供一些已经实践检验的任务调度选择,如最终任务调度或者分区调度等。它也提供存储器分配调度,以管理大容量RAM存储空间,就像设备I/O管理程序管理和组织大量的不同的设备驱动程序一样。例如,一个设备I/O管理程序对于管理一系列通信设备驱动程序如汽车远程通信系统中经常出现的驱动程序等是非常有效的。驱动程序可以包括:控制区域网 CAN (Controller Area Network)、局部互联协议LIN (Local Interconnect Network)、IEEE1094、高速容错网络协议FlexRay和用于汽车多媒体和导航的媒体定向系统传输MOST (Media-Oriented Systems Transport)等。
为了提高系统的可靠性,RTOS一方面要对存储器进行保护;另一方面是在分布式系统环境下,可以将应用的任务分派到多个CPU,即使一个CPU失效,也不会停止应用程序的工作。
分布式应用有它自己要解决的问题,例如,对大多数的RTOS,一般需增加为应用服务的专用的网络程序,使接在网络上的CPU能相互“对话”,进行服务。此外对于大多数RTOS,驱动程序、协议和应用程序是与内核紧密相连的,要把它们从一个核搬移到另一个核,需要建立一个适合各个CPU的新内核的映像,并仔细地对它进行测试。
微核RTOS从两方面来解决这个问题:首先,使应用程序、协议和驱动程序全都与操作系统脱离,从而使它们从一个CPU 搬移到另一个CPU时,可以不需要对内核重新配置;其次,在微核操作系统中应用程序间通信的典型情况是通过传递消息进行的,如果实现得好,可不需要专用的网络程序。例如,当应用A发送一个消息到应用B时,它不用去了解应用B是使用同一个CPU板,还是由网络连接的另一个CPU。结果任何CPU上的一个过程可以对任何其他机器上的任何资源进行显式的存取,这个网络就像单个计算机那样工作。
设备I/O监控程序提供一个标准的通道,让应用软件任务可以操作各种驱动程序。未来RTOS内核解决的主要问题应该是内部任务的通信与同步。
间接与直接的消息传递机制
大多数的RTOS为内部任务的通信提供了多种形式的异步消息传递机制。异步消息传递机制是对数据传输从一个任务到另一个任务的一种简单和松散连接方式。一个任务给另一个任务传递一个消息时,并不用等到接受任务发回任何的确认信息。
不同的RTOS实施异步通信机制的方式各不相同。不过最简单的概念型的方法被称为直接异步通信机制,就是一个任务直接对另一个任务发送消息,如图1所示。
.jpg)
图1 内部任务通信的直接消息传递机制
这是一种直截了当和最佳的软件设计模型。而在另一方面,采用间接异步消息传递机制,应用软件会受到任务发送和接受消息的消息队列的影响,如图2所示,这是一个吃力不讨好的软件设计模型。
.jpg)
图2 内部任务通信的间接消息传递机制
对于一些高复杂性应用,如汽车信息娱乐(Infotainment)系统和安全系统,通过采用内部任务直接消息传递机制可以很好地控制软件的复杂性。基于同样的原因,直接消息传递机制在多核、分布式多核处理器和容错汽车系统设计中也是首选的通信机制。
对分布式和多核系统的支持
通过一个可选的附加的被称为Link Handlers的RTOS部件,就可以支持分布式和多核系统。
.jpg)
图3 Link Handlers提供的通过处理器边界的消息传递方式
Link Handlers为运行在不同的处理器之间的应用提供一个异步消息传递方式,它是在传统的通信网络环境下一流的和普遍的选择。Link Handlers通过使用一样的异步直接消息传递模型,并将其扩展到了分布式和多核多处理器系统来完成这一工作。目前大多数的RTOS内核在同一处理器中的任务到任务的通信就采用了异步直接消息传递模型。它保证在系统里各种不同的处理器是完全对等的。
Link Handlers并不需要应用软件理解分布式系统的结构。实际上,一个任务的通信助手所在的位置对应用软件是透明的:仅当消息在一个任务传向另一个任务时应用代码才会连接。Link Handlers为消息通过处理器边界提供逻辑通道,而消息通过处理器的方式对应用软件是透明的。
当使用Link Handlers时,连接各种处理器的物理通道可选的范围很广,如网络、串行或总线连接,以及共享存储结构。这些连接基于Handlers的透明通信模型,使得在一个分布式汽车系统里采用异构处理器包括数字信号处理(DSP)成为可能。
高安全性和高可用性支持
除了完成消息传递以外,Link Handlers也必须与运行在其他处理器上的“监视”任务协同工作,而这些处理器的出席对一些应用是至关重要的。当一些关键任务失败或者变得难以实现时,在任何处理器上运行的其他的任务会很快得到出现问题的通报。这些支持“监视眼”机制的RTOS对设计高安全、高可用性和基于冗余的容错系统大有好处。RTOS的Link Handlers在容错系统探测和报告上有一定的开销,因此卸载很多与此相关的应用代码也很必要。
下一代的RTOS也应该提供快速的应用软件现场在线更新工具,不需要应用系统停止工作,以重新上载、修订或者卸载软件。这一功能通常被成为热交换。监视眼和热插拔一起成为RTOS基层架构的主要内容,支持高安全性和高可用性系统的设计。
内存保护
内存保护是面向安全的RTOS的另一个重要因素。 RTOS应该好好利用存储器管理单元,这是一个大多数现代微处理器中都有的构成部件。以传统的“平铺”(flat)体系结构为例,大多数“成品的”或“自建的”RTOS仍在使用这种体系结构。它把所有的模块放在同一个地址空间中,作为操作系统的内核,没有任何存储器的保护。结果任何模块,不管它是多么无关紧要,也能通过内核对存储器进行重写,有可能导致整个系统的崩溃。
有少数的RTOS针对这个问题,使应用程序运行在分离的有存储器保护的地址空间。RTOS与处理器硬件的MMU(内存管理单元)一起保护处理器内存免受非授权的存取访问。如果一个应用程序试图侵害存储器,MMU就会捕获这个错误,从而把这个问题隔离开来。但不幸的是,这些操作系统仍和驱动程序、协议、文件系统绑在一起,并且其他系统可对此内核服务,从而使得这些模块中的任何一个都能导致内核发生致命的错误。
不过,一些RTOS 的微核体系结构则向前迈了一步,可使任何系统级的软件部件在其各自的MMU所保护的地址空间运行。用这种方法,出错的驱动程序和协议则不再成为单独起作用的失效点,而是可以在它们引起其他服务失效前,就使其停止或重新启动,而不必重新开机引导。
产生的结果是完全独立的软件拥有自己独立的内存空间地址。内存管理设备在其造成诸如数据写进了距离自己很远的地址一类的危害前,可以中途阻止迷失方向的存取访问。
这些工具在汽车运行中将可以监视应用软件的安全和运行情况。