vlambda博客
学习文章列表

操作系统:现代汽车的大脑

什么是操作系统


   

        可以把一个计算机系统简单地分为三层:底层硬件、中间层操作系统、上层应用程序。操作系统位于中间,管理底层的硬件,为上层应用程序提供服务。

   

操作系统:现代汽车的大脑


几乎所有桌面电脑、嵌入设备都是这种三层模式。但在一些特殊场景,工程师会直接使用裸机(就是没有安装操作系统的计算机),这种往往是对计算机性能要求极其苛刻的场景,苛刻到甚至嫌弃操作系统拖慢了性能,于是干脆不用操作系统自己写代码直接控制硬件。

   

一个标准的计算机,主要的硬件资源有:CPU、内存、持久存储如硬盘、其他设备,那么一个标准的操作系统要管理这些硬件资源,就会有这些功能:

(1)任务调度,进程和线程,管CPU;

(3)存储管理,文件系统,管持久存储;

(4)设备驱动,字节设备、块设备、网络设备,管各种设备。


操作系统有很多,大家比较熟悉的有:Windows、Linux、Mac OS、iOS、Android等。我们可以从不同的角度来划分这些操作系统,例如:

1、阵营

两大阵营:Windows阵营、类Unix阵营。

Windows阵营的操作系统都是微软公司的,其系统一般是封闭的,主要有Windows 2000、Windows XP、Windows 7、Windows 10等;

而类Unix阵营的操作系统所属公司有谷歌、苹果等,系统很多是开源的,主要有Unix、Linux、Mac OS、iOS、Android等。

2、设备

两大类:桌面电脑、智能设备。安装在桌面电脑上的操作系统,称为通用操作系统,如Windows、Linux、Mac OS等;安装在手机和其他各种电子设备上的操作系统,称为嵌入式操作系统,如iOS、Android、QNX、uC/OS、VxWorks等。

3、响应时间

两种:实时操作系统(RTOS)和非实时操作系统。所谓实时,是指系统接收到一个输入后,必须在一个很短的时间内(毫秒甚至微秒量级)处理完毕,然后返回一个响应。能严格保证对输入进行实时处理的操作系统,就是实时操作系统;做不到的就是非实时操作系统。

我们熟知的Windows、Linux、Mac OS、iOS、Android这些,都不是实时操作系统;而QNX、uC/OS、VxWorks这些大家没怎么听说的则是实时操作系统。


        汽车上的操作系统,属于嵌入式操作系统实时操作系统。这两个概念人们往往容易混淆,因为大部分嵌入式操作系统通常也都是实时操作系统,但实际上它们是从两个不同的维度来划分的。iOS、Android就是典型的反例,它们属于嵌入式操作系统,却不是实时操作系统。


汽车上的操作系统



汽车的发展过程,可以说是一个“从机械设备逐步向电子设备转变”的过程,原来是机械装置控制的部件,慢慢都变成由智能电子装置来控制了。 在现代汽车里,有很多智能电子装置(数以百计),这些电子装置上都会装有操作系统,因此,现代汽车上会有很多个操作系统。
这些操作系统,都属于嵌入式操作系统,因为它们是在嵌入式设备里运行。 那么,它们是不是都是实时操作系统呢? 不一定: ECU中的必须是实时操作系统,IVI中的可以是非实时操作系统。下面给大家分别介绍。


一、ECU
很多智能电子装置,操控着汽车的关键部件,如发动机、变速箱、转向系统等,统称为电子控制单元ECU。 它们是车辆运动和安全防护的控制“大脑”,通过直接向执行机构(如电子阀门、继电器开关、执行马达等)发送指令以控制车辆关键部件的协同工作。 常见的ECU包括:EMS发动机电控系统、ABS制动防抱死控制、变速箱控制系统TCU、电子稳定控制ESC、电子动力转向EPS,新能源汽车整车控制VCU、电池管理系统BMS等。


操作系统:现代汽车的大脑


上图是EMS发动机控制模块的基本示意图,主要由输入回路、模数转换器、微处理器和输出回路组成。 其他ECU也类似,不同的只是输入、输出和程序代码。
ECU控制车辆的关键部件,不能出现响应不及时的情况,一旦出现延误,会造成严重的后果。 因此ECU中的操作系统必须是实时性的嵌入式操作系统


鉴于ECU在汽车中的重要性,2003年全球相关厂商联合成立了一个标准联盟组织AUTOSAR(Automotive Open System Architecture),制定了汽车电子软件的标准架构,示意图如下:


操作系统:现代汽车的大脑


简单地说,AUTOSAR把汽车电子软件分成三层:
(1)硬件之上的Basic software层(BSW);
(2)BSW层之上的Runtime environment层(RTE);
(3)最上面的Application层。


操作系统:现代汽车的大脑

其中,操作系统是在BSW层的系统服务中定义的。


操作系统:现代汽车的大脑


嵌入式设备通常做的很小,里面也没有大容量的硬盘和内存,因此其操作系统代码一般都比较小、比较简单(与通用操作系统Windows、Linux等相比)。 而为了保证实时性,其任务必须是分优先级的(重要的任务优先级高,优先级高的任务先执行),其任务调度必须是可抢占的(已经有低优先级的任务在执行,高优先级的任务可以抢占CPU)。
AUTOSAR中的操作系统是怎样的呢? 非常简单:
(1)任务调度,没有进程和线程,只有Task和中断;
(2)内存管理,几乎没有,操作系统中只有内存访问保护功能, 没有虚拟地址概念。只有一个物理地址空间,划分成若干个区域,在编译的时候由编译器将代码、数据、堆栈、变量和常量、寄存器、I/O端口等映射到不同区域;
(3)存储管理,不属于操作系统。 没有文件系统,只有对片内、片外的EEPROM和FLASH的管理;
(4)设备驱动,不属于操作系统。


二、IVI
还有一类智能电子装置,如仪表、娱乐音响、导航系统、抬头显示、车载通信、无线上网等,这类装置不直接参与汽车行驶的控制决策,不会对行驶性能和安全产生影响,一般统称为车载娱乐信息系统IVI。
IVI上的操作系统,显然对实时性要求没那么高,可以使用Android、Linux等非实时操作系统,也可以使用QNX、VxWorks等实时操作系统。


智能网联带来新挑战



智能网联汽车的特点是增加更多的传感器(高清摄像头、激光雷达、毫米波雷达等),需要采集、处理、共享海量数据,这样就带来两个挑战: 1、控制器芯片的处理能力; 2、信息安全。
针对这些挑战,人们对汽车电子电气架构做了改进,提出域控制器DCU的概念,将整车划分为动力总成、车辆安全、车身电子、智能座舱和智能驾驶等几个域,利用处理能力更强的多核CPU/GPU芯片相对集中地控制每个域。
这样做能简化汽车电子网络拓扑结构,但是也带来新问题: DCU会将一些属于不同汽车安全等级(ASIL)的系统融合在一起处理,而从安全角度应该将它们进行物理上的隔离。 为了解决这个问题,人们又引入了IT技术中常用的虚拟机概念,通过虚拟机技术在一块控制器芯片里可以装上多个操作系统,每个操作系统负责控制自己的功能模块,互不干涉。 这样既能充分发挥芯片的处理能力,又能保证符合安全要求。


操作系统:现代汽车的大脑


上图左边是虚拟机技术的示意图,右边是容器技术的示意图。 实际上,在IT行业,容器技术现在使用得更广泛,原因在于容器技术少了一层Guest OS,成本更低,性能更好。
但是汽车行业为什么不使用容器技术而使用虚拟机技术呢? 原因可能有两点:
1、容器技术隔离性差些,上层的不同应用共享底层的同一个操作系统内核,还是存在互相干扰的可能;
2、容器技术的隔离,主要依赖底层操作系统提供的相关功能来实现的,Linux操作系统自带这种隔离功能,因此基于Linux的容器技术在IT行业被广泛应用; 而用于汽车ECU、DCU芯片上的实时操作系统还不具备这种能力。
采用虚拟机技术,不用对底层操作系统做改造,只需要再开发出一个虚拟机引擎,虚拟出ECU/DCU上的各种硬件资源即可。


操作系统:现代汽车的大脑