面对日趋激烈的市场竞争和越来越挑剔的用户,汽车制造商和汽车配件供应商一直在努力创新——具有更新科技含量和更好用户体验的产品不断被应用到汽车中。先进的车载信息娱乐系统已经迈入了一个新的科技时代。它从原先控制收音机或空调的简单系统发展到现在可以包含免提电话、卫星导航、互联网服务和支持多种媒体的前后座影音播放的复杂大系统。无论是高端产品,还是中低端产品,这种系统的软硬件设计都要满足严格的安全性标准,同时又要具有很好的易用性和灵活性。本文将从安全性、实时性、环保性和新颖性等几个方面对该系统的软件设计提出一些思考,希望能够有助于从事此类系统开发的工程师。
安全性
这里所说的安全性是指(1)系统能够长时间提供有效服务而不发生故障;(2)一旦有故障发生,系统能够自行处理;(3)系统能够自动保存故障诊断文件。
处理安全性相关的问题原则是隔离和冗余。隔离就是模块化。冗余就是增加备份。对硬件设计来说,模块化和增加冗余设备都是很直接的。实际的挑战来自于软件的安全设计,而且大多数的系统故障是由于软件的错误。设计良好的软件模块应当保证某个模块中发生的故障不会导致其它模块也发生故障,更不会导致整个系统故障;而实际系统设计还应该保证发生故障的模块很快重新启动或及时由备份模块替代,同时整个系统的其它部分正常运转。
举例来说,系统中某个任务发生故障——想要改写属于另一个任务的内存区,系统的监控程序会监控到这是一个非法事件,并重启发生故障的任务,同时保存故障诊断文件以供开发人员今后解决问题——监控程序可以非常详细地记录故障发生时的系统状况,从而能够帮助开发人员快速定位问题。
显然,对于车载信息娱乐系统这样的大系统,传统的单内核操作系统由于没有充分隔离内核任务和应用程序的内存空间,很难实现以上例举的操作。在工业界非常流行的QNX微内核实时操作统,经过多年的实践和创新,充分实现了各个系统服务的隔离,成为设计高安全性软件的良好基础。
实时性
简单地说,实时性就是系统任务在有效的时间内得到有效的结果。
车载信息娱乐系统是一个多任务的复杂系统,其中包含有许多和汽车网络进行交互的子系统,如CAN和MOST,也包括其它的通讯协议,如 RS232、Ethernet以及蓝牙等。从系统软件设计的开始就要考虑系统的实时特性是非常重要的。一方面,引入实时性设计能够为用户带来更好的应用体验,如稳定和流畅的多媒体播放,准确和有效的导航提示等;另一方面,系统的实时性设计能够保证某些关键任务的顺利执行,比如蓝牙电话和倒车画面播放等。反过来讲,如果这个系统不能够很好的处理各个任务的优先级和实时性,那么在系统实际运行的过程中,难免会出现一个或多个任务无法及时完成,从而导致系统故障和用户投诉。