02 到底什么OS才算是车载OS

前言

在上一期《到底什么是软件定义汽车》中,我们提到,汽车中的软件有一个很重要的部分就是操作系统,那么:


到底什么OS才算是车载OS?
这些OS之间有什么差异,如何选择?>


搞一下汽车电子最近对车载OS进行了一些研究,在《搞一下软件为汽车赋能》系列的第2期与大家分享,如有不妥之处,还请指出!


本系列请点击:《搞一下软件为汽车赋能》


所有系列请点击:《汽车电子系列分享》


五花八门的操作系统


相信业内的朋友,几乎都知道操作系统(英文:Operating System,缩写:OS)。
而且,大部分朋友是使用OS,而并不是研发OS。因此,笔者从使用者的角度简单对OS进行一个梳理,并不涉及深入的研究!>


一、什么是OS


一个问题一个问题来!

1、OS是什么?

是系统软件程序

2)、OS用来干什么?

用来控制计算机操作、运用 用来运行硬件、软件资源 用来提供公共服务来组织用户交互的相互关联

3、OS的主要功能有哪些?

通俗来讲,OS位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过OS的用户界面输入命令。OS对命令进行解释,驱动硬件设备,实现用户要求。


但是,汽车上大量使用的嵌入式OS,从根本上讲是没有用户界面的。


一般来说(从PC OS的角度),OS主要包含以下功能:
进程管理
内存管理
磁盘与文件系统
网络通信
安全(Security)机制
用户界面 驱动程序

4、OS由哪几部分组成?

对于OS理论研究者,通常情况下将OS分为四大部分:

驱动程序

最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。

内核

操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。

接口库(支承库)

一系列特殊的程序库,它们的职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行库就属于此,它把各种操作系统的内部编程接口包装成ANSI C 和 POSIX编程接口的形式。

外围

所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。


简单了解了什么是OS之后,我们回过头看一下开头提到的问题:什么是车载OS?

笔者一开始在捋什么是车载OS的时候,也比较头疼!因为不知道该如何分类,分类出来的OS之间的特性是什么也不清楚!举几大家常听到的例子:

实时操作系统 RTOS
嵌入式操作系统
符合POSIX的OS
Linux等等


之所以比较混乱,是因为上述OS是根据不同的分类方式分出来的!笔者尝试对OS进行了一定的分类,方便大家进行比较!


二、OS分类


首先,需要说明的是OS的分类没有单一的标准!


主要可以根据以下几种分类方式进行分类:

1、 根据工作方式可以将操作系统主要分为:

1) 批处理操作系统

定义

采用批量处理作业技术的操作系统。 分为单道批处理系统和多道批处理系统。

特点

允许多用户共享计算机资源;
避免计算机资源被限制;
保持资源的高使用率等。

2) 分时操作系统

定义

对资源的一种共享方式,利用多道程序与多任务处理使多个用户可以同时使用一台计算机。

特点

为用户提供友好接口便于资源共享和交换信息等;

3) 实时操作系统

定义

又称即时操作系统。 可以在指定时间或者确定时间内完成系统功能以及对外部或内部事件在同步或异步时间内做出响应的系统

特点

实时性;
多级中断;
高精度计时等。

分类

依据时间的变化(抖动)分为:
硬实时操作系统
软实时操作系统


依据设计理念分为:
事件驱动型
时间触发型


PS:由于汽车对功能安全等的要求,大量使用了实时操作系统,后文中会再次对实时操作系统进行分析。

4) 网络操作系统

定义
定义1:

运行在路由器、网络交换机、防火墙上的特别操作系统

定义2:在通常操作系统功能之上提供网络通信和网络服务的OS
特点

提供高效、可靠的网络通信能力;
提供多种网络服务功能。

5) 分布式操作系统

定义

是一个软件。 是许多独立的、网络连接的、通信的,并且在物理上分离的计算节点的集合

特点

分布性;
自治性;
并行性;
全局性等

优点

资源共享;
计算速度快;
可靠性高;
通信便捷等


对于汽车而言,从工作方式的角度出发,我们主要关心:实时操作系统与分布式操作系统。


需要注意的是,并不是说某种操作系统是实时操作系统后,就不能是分布式操作系统!

有很多操作系统同时兼有实时处理、分时处理的功能,同时也是分布式操作系统!如果不知道该如何划分,可以将其称为通用操作系统或其他等。

2、根据内核架构分类

在什么是OS中,我们提到,OS有一个非常重要的组成部分便是内核!
内核是OS最基础的构建,其结构对OS的外部特性以及应用领域有着一定程度的影响!


内核在设计上可概分为:宏内核与微内核两大架构! 需要注意的是,宏内核翻译不是很准确,还有另外一种翻译叫做单内核!


在单内核与微内核之间,进行妥协的设计称为混合内核! 在微内核之下还有一种极端的设计方式,称为外内核!不过外内核仍在研究阶段!


如下所示,根据内核结构分类:


单内核(宏内核)
微内核
混合内核(内核实质是微内核)
(极端设计情况下)外内核

1)单内核(宏内核)OS

概念

定义了一个抽象接口,应用一组系统调用来实现OS的功能,如进程管理、文件系统,存储管理等。


这些功能由运行在内核态的模块来完成。

特性

由于在同一地址空间上实现所有复杂的低阶操作系统控制代码,因此,运行效率相对更高一些

举例

传统Unix内核:BSD等
类Unix内核:FreeBSD、Linux等
DOS:DR-DOS、MS-DOS等
Mac OS:初版MacOS等

2)微内核OS

概念

由一个非常简单的硬件抽象层和一组比较关键的线程管理、地址空间、进程间通信等或系统调用组成。


目标是将系统服务的实现和系统的基本操作规则分离开来

特性 微内核系统的关键部分处在相互分离,被保护的存储空间中
举例

Mach
eMCOS
QNX
鸿蒙OS


3) 混合内核

概念

混合内核的设计理念来自微内核,只不过混合内核让一些微核结构运行在用户空间的代码运行在内核空间

特性

让内核的运行效率更高一些

举例

Windows 7、8、10等
Mac OS X:使用Mach(微)内核
XNU:使用Mach(微)内核



由于外内核还处于研究阶段,这里暂不做讨论!

3、根据运行环境分类

根据运行环境可以将操作系统主要分为:

1)桌面操作系统

概念

用户的台式机或者便携式计算机中的主要控制程序,也称为客户端操作系统

特性

根据人在键盘和鼠标发出的命令进行工作;
面向复杂多变的各类应用

举例

Windows
Mac
Linux


2) 移动操作系统

概念

是指在移动设备上运行的OS。与桌面操作系统近似。 通常较为简单且提供无线通信功能。 特性 提供无线通信功能;

举例

Android
iOS


3) 嵌入式操作系统

概念

用于嵌入式计算机的操作系统。是一种系统软件。 通常包括与硬件相关的底层驱动软件、设备驱动接口、通信协议等。


通常这种类型的OS视为实时操作系统(RTOS) 特性 资源高效且可靠; 但是运行嵌入式OS的硬件资源可能非常有限

举例

AGL
eMCOS
LiteOS
OSEK


4) 服务器操作系统

概念

一般是指运行在大型计算机上的操作系统 特性 可以实现对计算机硬件与软件的直接控制和管理协调

举例

Windows Server
Netware
Ubuntu
Linux


5) 物联网操作系统

概念

一种面向物联网设备和应用的软件系统。 是嵌入式操作系统发展的产物!但嵌入式操作系统并不真正代表未来的物联网操作系统。


涉及到芯片层、终端层、边缘层、云端层等。 单一物联网操作系统与安卓在移动端的地位和作用类似,实现应用软件与智能终端硬件的解耦

特性

内核尺寸伸缩性及架构可扩展性;
内核实时性;
高可靠性;
低功耗

举例

HelloX
RIOT
RT-Thread
AliOS
鸿蒙OS

4、根据指令的长度分类

根据运行环境可以将操作系统主要分为:

8bit,16bit,32bit,64bit等

所谓8bit、16bit、32bit、64bit、128bit等术语有时指总线宽度,有时指指令宽度(在定长指令集中)。


而在操作系统理论中主要是指存储器寻址的宽度。


如果存储器的寻址宽度是16位,那么每一个存储器地址可以用16个二进制位来表示,也就是说可以在64KB的范围内寻址。同样道理32位的宽度对应4GB的寻址范围,64位的宽度对应16 EB(Exabyte)的寻址范围。


至此,我们就简单对OS进行了一个了解!那么可能有的朋友也会好奇,在上述的分类中,并没有出现车载OS的身影。那么到底什么样的OS才算车载OS,又该如何选择呢?


车载操作系统


一、到底什么是车载OS


到底什么是车载OS:


顾名思义,车载OS是在汽车上使用的OS。
但是,汽车是一个很庞大且复杂的系统。由于汽车上的应用场景比较复杂,因此无论按照那种分类方式,都很难将其进行分类!


因此,笔者认为,车载OS是几种OS的结合!而且与具体的应用场景有关! 需要注意的是,不是所有的OS都适用于汽车!


从OS工作方式的角度来看 汽车上主要会在对实时性要求高的控制器中使用实时操作系统!
当然,在对计算速度、可靠性等方面有要求的控制器中也会使用分布式操作系统! 需要注意的是,不是说某个OS是RTOS就不能是分布式OS!


从OS架构的角度来看
由于汽车对于安全性(Safety)的高要求,因此主要会在一些使用高性能处理器的控制器中(如ADAS域控制器)中使用微内核OS


从运行环境的角度来看
由于对实时性、安全性(Safety)的要求,汽车中会大量使用嵌入式操作系统!这也是为什么有些朋友会认为,车载OS就是嵌入式操作系统。

但是,在如娱乐系统等系统中,也会使用移动操作系统,如Android等。 需要说明的是:汽车级Linux(AGL)我们将其归类为嵌入式操作系统


上述,我们是从OS的分类方式出发,简单了解一下车载OS是什么,包含哪些OS。


接下来,我们将从OS在汽车中的应用角度出发,来分析一下有哪些OS,这些OS之间的区别等!


二、是骡子是马拉出来遛遛


即使汽车对于OS有很多要求,但是仍有非常多的OS可以应用在汽车中!
由于篇幅原因,笔者这里主要对主流的一些较为常见的OS进行介绍!对于其他OS,若有兴趣,可以通过邮件" [email protected] "一起探讨交流!

1、 高Safety、高实时、低算力

对安全性(Safety)、实时性等要求高,对算力要求相对较低的应用
一般是指使用MCU等低性能处理器开发的对功能安全有一定要求的控制器,如EPS等


在这种情况下会使用两大类RTOS。
一类是:基于OSEK/VDX开发的RTOS
一类是:其他RTOS


OSEK全称为 " 车载电子设备的开发系统和接口 ",是一个标准,用于提供整车各种ECU的软件标准架构。
由于OSEK主要由德国发起,同期,法国有个类似的项目VDX,两个一结合,便有了OSEK/VDX。OSEK的一部分被标准化为ISO 17356。


需要注意的是 CP AUTOSAR中的OS,也是发展自OESK/VDX。

基于OESK/VDX实现的OS主要有:

1) ERIKA Enterprise

简介

一种RTOS内核的嵌入式OS,开源的免费软件。
还包括RT-Druid,一个基于Eclipse的IDE 实现了OSEK/VDX一致性类别BCC1、ECC1等。

适配

英飞凌:TC2xx、TC3xx等
NXP:S12等
TI:MSP430
瑞萨:RH850等

ARM:Cortex A5x
ARM:Corex M / R / A
英特尔:x86-64


2)) FreeOSEK

简介

FreeOSEK是基于OSEK-VDX规范的可扩展RTOS,适用于嵌入式系统。
FreeOSEK是静态的可配置RTOS,其中仅创建所需的资源。此功能不仅改善了RAM / ROM的消耗,而且还改善了运行时和实时特性。

适配

TI:MSP430
ARM:Cortex-M4


3) CP AUTOSAR OS

简介

CP AUTOSAR工具供应商实现的CP AUTOSAR OS

举例

MICROSAR中的OS
RTA-OS
AUBIST OS …

适配

根据各家公司的适配情况有所不同

其他RTOS:

1) MicorC/OS (μC/OS)

简介

功能齐全的嵌入式操作系统,支持TCP/IP,USB,CAN等。 内核为μC/OS 实时内核

适配

NXP:MPC55xx、56xx等
瑞萨:H8等
TI:MSP430等
英飞凌:XMC4500、4700等
ARM:Cortex-A5、A7、A8、A9
ARM:Cortex-M0、M3、M4、M7
ARM:Cortex-R4、R5


2) Flexible Safety RTOS

简介

一种RTOS,提供确定性和高速事件处理 能够满足事件期限的调度程序等

适配

英飞凌:AURIX、AUDO系列等
TI:DSP等
瑞萨:RH850等
ST:STM32、SPC5 32等
NXP:MPC57xx等


2、较高Safety、较高实时、高算力

对安全性(Safety)、实时性等有较高要求,对算力要求高的应用
一般是指使用MPU等高性能处理器开发的符合一定功能安全要求的控制器,如ADAS域控制器等


在这种情况下,一般较多的使用带有功能安全认证的RTOS 这里需要提到两个概念:

1) API

API全称是应用共程序接口,定义了多个软件之间的交互,以及可以进行调用(call)或请求(request)的种类!


API主要分为两种:
操作系统级别API:Windows、Linux、Unix等系统
非操作系统级的自定义API

2) POSIX

POSIX的全称为可移植性操作系统接口。是IEEE为要在各种Unix操作系统上运行软件而定义的一系列相互关联的标准的总称。正式名称为:IEEE Std 1003。


POSIX定义了API、命令行shells以及实用应用程序接口。 根据对标准的遵守程度,可以将OS分类为完全或部分兼容POSIX。


POSIX包含很多项,如:
1003.0:管理POSIX开放式系统环境
1003.1:被广泛接受、用于源代码级别的可执行标准
1003.13:一种关于应用环境框架的标准,主要针对使用POSIX接口的实时应用程序 …


这里,大家需要注意以下 1003.13 这个标准。因为当前,有较多的朋友开始计划在ADAS域控制器等上面使用 AP AUTOSAR。

AP AUTOSAR虽然指出,其可以运行在POSIX OS之上。但是,这个OS需要符合 POSIX PSE51(最小实时系统配置文件)。
PSE51(还有PSE52、PSE53、PSE54)相关的内容便是在 IEEE 1003.13 这个文件中。


另外,需要说明的是,有很多OS没有获得POSIX认证,但是他们在很大程度上符合/遵循POSIX。 如大多数Linux发行版遵循POSIX

在对安全性(Safety)、实时性有较高要求,对算力要求高的应用,主要有以下OS:

1) eMCOS

简介

从单片机、单核处理器,到多核/众核处理器、多芯片均能提供扩展支持的商业化的,并附有扩展性的嵌入式实时操作系统。
已在汽车上得到应用,日本使用广泛的OS。

适配

ARM Cortex-A、Cortex-R系列等
MPPA-256 Bostan
瑞萨:RH850系列等

属性

工作方式:分布式OS & RTOS
内核架构:微内核OS
运行环境:嵌入式OS
认证:ISO26262 ASIL-D等

兼容

符合 POSIX PSE51、PSE52、PSE53等
有AP
AUTOSAR工具供应商适配


2) QNX

简介

黑莓的商业类Unix实时操作系统,主要针对嵌入式系统市场 已在汽车上得到应用

适配

ARM
PowerPC
IA-32

属性

工作方式:RTOS
内核架构:微内核OS
运行环境:嵌入式OS
认证:ISO26262 ASIL-D等 …
兼容 符合 POSIX PSE51等
有AP AUTOSAR工具供应商适配


3) 鸿蒙OS

简介

一种基于同一套系统能力、适配多种终端形态的分布式操作系统,开源。 能够支持多种终端设备,定位是物联网操作系统

适配

ARM
Cortex-A7、A53等

属性

工作方式:分布式OS
内核架构:微内核OS(Linux内核+鸿蒙微内核+LiteOS,未来将只有鸿蒙微内核)
运行环境:物联网OS
认证:内核 ISO26262 ASIL-D

兼容

有AP AUTOSAR工具供应商适配



除了上述三个之外,还有其他一些符合 POSIX PSE51的OS:
PikeOS
VxWorks
Integrity OS


PikeOS、Vxworks等在航空电子应用较多。


需要注意的是,如果计划使用 AP AUTOSAR,需要注意的是: VxWorks与Integrity OS 当前没有 AP
AUTOSAR工具供应商适配。 也就意味着,用了VxWorks 或 Integrity OS,就不能使用 AP AUTOSAR。(可能他们会自己提供AP 工具链,但仅可以用来玩一玩,开发量产就算了)


总结来看,上述OS基本都有做功能安全认证这一块,以及基本都是RTOS。


需要说明的是,并不是说,要开发ADAS等控制器(或自动驾驶)就不能使用Linux。特斯拉就是基于Linux搞的。只是相对来说,在满足Safety、Security等方面需要更多的考虑。


还有一些黑客大佬直接使用Ubuntu等来开发ADAS系统,这个不属于当前的主流,就不做讨论了。


还有另一块应用便是,对安全性(Safety)和实时性要求不是很高的、但是对算力要求较高的应用。

3、低Safety、低实时、高算力

对安全性(Safety)和实时性要求不是很高的、但是对算力要求较高的应用
一般是指使用MPU等高性能处理器开发的对功能安全没什么要求的控制器,如娱乐系统。


针对于这些系统,主要有以下几类OS可用:

1) 开源的OS:

Linux
Ubuntu
Android
AGL
IVI
ERIKA Enterprise



可能有的朋友到这里会想到ROS,这里笔者也简单说明一下:ROS不是操作系统,而是用于机器人软件开发的软件框架的集合。Apex.OS跟ROS类似也不是真正的操作系统。

2.) 物联网OS:

AliOS


3) 一种是基于Linux 改装的OS,这些OS更多的是与AP AUTOSAR工具供应商有关:

EB Corbos Linux



使用时仍需注意,跟使用中间件的适配性问题


还有的朋友可能会提到英伟达的Drive OS,笔者认为它内部采用的是QNX,所以就不做过多的讨论。


然后,再提一下RT-Linux、笔者认为,它可能比较尴尬。
实时性虽然比普通的Linux高,但安全性(Safety)又比商用的OS差点。可以根据具体的应用进行选择。


还有一个苹果,苹果也要造车,笔者认为苹果应该是使用自己开发的OS,苹果在汽车上的OS应该也会覆盖实时性、安全性(Safety)等方面的要求。


总的来看,汽车上使用较多的还是实时操作系统、嵌入式操作系统。当然,还有很多RTOS,由于在汽车上不常见,竞争力很小所以就不做过多的讨论。


总结来看:
OS是一种软件,它执行所有基本任务,例如文件管理、内存管理、处理输入输出以及控制外围设备等。这也是为何会在《搞一下软件为汽车赋能》系列中介绍的原因。


OS充当用户与硬件之间的接口,并控制各种程序的执行。


本篇主要是从OS的概念出发,先将OS进行了一个简单的分类。
然后再引入车载OS,对(量产)汽车上已经使用到的,或者未来可能在量产汽车中使用到的OS进行分析。


如果想要了解更多OS的对比以及与AP AUTOSAR的适配性问题,也可以随时与我们联系。

本期分享就到这里,阅读原文可查看所有系列分享,我们下期见!


联系我们

微信:shactiontech
邮箱:[email protected]

你可能感兴趣的:(汽车电子系列分享,搞一下软件为汽车赋能,车载OS,OS,操作系统,车载操作系统,软件为汽车赋能)