面对日趋激烈的市场竞争和越来越挑剔的用户,汽车制造商和汽车配件供应商一直在努力创新——具有更新科技含量和更好用户体验的产品不断被应用到汽车中。先进的车载信息娱乐系统已经迈入了一个新的科技时代。它从原先控制收音机或空调的简单系统发展到现在可以包含免提电话、卫星导航、互联网服务和支持多种媒体的前后座影音播放的复杂大系统。无论是高端产品,还是中低端产品,这种系统的软硬件设计都要满足严格的安全性标准,同时又要具有很好的易用性和灵活性。本文将从安全性、实时性、环保性和新颖性等几个方面对该系统的软件设计提出一些思考,希望能够有助于从事此类系统开发的工程师。
安全性
这里所说的安全性是指(1)系统能够长时间提供有效服务而不发生故障;(2)一旦有故障发生,系统能够自行处理;(3)系统能够自动保存故障诊断文件。
处理安全性相关的问题原则是隔离和冗余。隔离就是模块化。冗余就是增加备份。对硬件设计来说,模块化和增加冗余设备都是很直接的。实际的挑战来自于软件的安全设计,而且大多数的系统故障是由于软件的错误。设计良好的软件模块应当保证某个模块中发生的故障不会导致其它模块也发生故障,更不会导致整个系统故障;而实际系统设计还应该保证发生故障的模块很快重新启动或及时由备份模块替代,同时整个系统的其它部分正常运转。
举例来说,系统中某个任务发生故障——想要改写属于另一个任务的内存区,系统的监控程序会监控到这是一个非法事件,并重启发生故障的任务,同时保存故障诊断文件以供开发人员今后解决问题——监控程序可以非常详细地记录故障发生时的系统状况,从而能够帮助开发人员快速定位问题。
显然,对于车载信息娱乐系统这样的大系统,传统的单内核操作系统由于没有充分隔离内核任务和应用程序的内存空间,很难实现以上例举的操作。在工业界非常流行的QNX微内核实时操作系统,经过多年的实践和创新,充分实现了各个系统服务的隔离,成为设计高安全性软件的良好基础。
实时性
简单地说,实时性就是系统任务在有效的时间内得到有效的结果。
车载信息娱乐系统是一个多任务的复杂系统,其中包含有许多和汽车网络进行交互的子系统,如CAN和MOST,也包括其它的通讯协议,如 RS232、Ethernet以及蓝牙等。从系统软件设计的开始就要考虑系统的实时特性是非常重要的。一方面,引入实时性设计能够为用户带来更好的应用体验,如稳定和流畅的多媒体播放,准确和有效的导航提示等;另一方面,系统的实时性设计能够保证某些关键任务的顺利执行,比如蓝牙电话和倒车画面播放等。反过来讲,如果这个系统不能够很好的处理各个任务的优先级和实时性,那么在系统实际运行的过程中,难免会出现一个或多个任务无法及时完成,从而导致系统故障和用户投诉。
更为关键的是,整个系统是如此复杂,通常从关机状态(电源彻底关闭)到系统启动进入正常运行状态要花费数百毫秒。而汽车启动时,CAN器件通常会在65毫秒内发送开机的信号。连接在CAN总线上的信息娱乐系统必须要在55毫秒或更少的时间内准备好接收开机信号,并在100毫秒内响应开机信号。如果信息娱乐系统不能及时响应CAN开机信号,它将很可能被认为是有故障的CAN器件而被排除在CAN网络之外。
从实时性的设计出发,系统必须在完成初始化之前就要开始相应CAN网络的信息。传统的方式是使用额外的辅助器件来进行此类任务——增加了硬件成本。现在,采用QNX的“mini-driver”技术可以完全省去这些辅助器件。mini-driver的设计使某些器件驱动,比如CAN驱动,在系统启动期间就可以使用——顺利处理来自CAN网络的事件响应;当系统启动完成之后,更完备的驱动会接管mini-driver的所有任务——软件成本很低。
环保性
环保性是指系统能够有效地进行电源管理。
汽车内的电源管理是一项非常具有挑战性的任务。汽车电源是电量受限制的电池。在汽车熄火之后,一方面,车内系统,尤其是信息娱乐系统不能有过大的耗电量,必须保证正常电池在几天、甚至几周后仍然能够顺利点火;另一方面,信息娱乐系统也要能够在超低能耗的状态之下对特定事件作出有效和及时的响应。如果没有一个多层次的待机状态,系统每次都要完全重启,那么不但每次都有较长的开机时间,而且很难满足对许多实时性事件的正确响应,如在上节所述的CAN 开机信号。
解决的方案就是根据具体的需要定制多层次的待机状态,使得信息娱乐系统能够随着时间的推移和电池电量的下降逐步进入各个低能耗待机状态,直至彻底关机。在每个不同的待机状态系统都可以对特定的事件做出响应而在足够短的时间内进入工作状态。
然而,传统的电源管理标准APM(Advanced Power Management)和ACPI(Advanced Configuration and Power InteRFace)都很难应用到车载信息娱乐系统的电源管理程序中。APM和ACPI主要是用在个人电脑的电源管理上。APM是运行在BIOS(很少会用在车载信息娱乐系统上的器件)上的程序,电脑的应用程序或操作系统基本不会知道APM所作出的电源管理决定,所以这个方案无法提供我们所需要的可定制型多层次电源管理状态。ACPI采用了由操作系统决定电源管理状态的方法,它可以做出更为复杂和有效的电源管理。但是在车载信息娱乐系统中,操作系统往往并不知道各个应用程序的具体电源状态,比如,车是否熄火、蓝牙设备是否工作等,而这些正是车载系统电源管理的重点,所以ACPI也不能满足车载系统电源管理的要求。
基于QNX操作系统,电源管理可以作为一个应用程序来开发。这样,系统设计人员就能够根据不同的系统需求设计具有针对性地电源管理方案。通过应用程序之间以及应用程序和操作系统的通信,各个系统模块的电源状态可以得到精确的控制,从而能够有效地使用能源,促进环保。
新颖性
新颖性是说产品要有个性,要和其它同类产品区别开来。
对于车载信息娱乐系统来说,新颖性意味着能够根据客户要求快速定制的人机界面和具有质感、内容丰富的图形显示,无论是媒体播放器、网页浏览器、还是卫星导航系统。所有这一切都和图形用户界面的开发有关。如何在设计阶段很好地把人机界面模块化是设计人员开始设计使就要考虑的关键问题,否则今后面对客户的新需求就会很痛苦——是重新设计软件,还是拒绝客户的需求?不单如此,如果不能够很好地把人机界面模块化,有时底层的协议发生变化,重新设计人机界面就是一个不可避免的难题。
所以,人机界面的模块化其实不仅仅是外壳的剥离,它其实包含了数据表达的选择和设备操作的定义。由于人机界面部分通常是车载信息娱乐系统投入较大的代码部分,所以高质量的模块化人机界面程序和相关驱动程序可以显著的降低系统扩展的成本。一方面,模块化提高了代码的可重用性,另一方面,它们也减少了测试方面的投入。希望设计开发人员能充分考虑这一问题。
本文小结
本文就车载信息娱乐系统的软件设计从安全性、实时性、环保性和新颖性四个方面提出一些思考,希望这些想法能够为蓬勃发展的中国汽车电子带来些许推动。