驾驶电脑系统_电脑版的汽车驾驶模拟

什么是操作系统

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

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

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

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

(2)内存管理,每个进程有独立的虚拟地址空间,管内存;

(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上的各种硬件资源即可。

本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。