您好,欢迎来到中国汽车电子电气架构发展论坛2020!

SDV之汽车OS普及篇

发布日期:2020-07-26

GRCC 汽车电子电气架构创新发展论坛 昨天 

手机阅读


点击上方蓝色字体,关注我们


文/侯哥
2018年8月,大众集团宣布将投入35亿欧元为整个产品系列开发一种名为"VW.OS"的新软件操作系统。该系统将从2020年起在大众品牌的电动汽车上推出,这些新车将拥有一种全新的电子结构,用于自动驾驶功能。大众的这一波操作,一石激起千层浪,引发了整个行业的震动。有很多好事者也要跟进,好像不做自己的操作系统就快活不下去了,今天我们就来一起讨论一下操作系统的问题。

大家日常生活中接触到的操作系统有很多种,比如Windows,Linux,Android,IOS等等。可是,操作系统究竟指的是什么呢?
一般的定义是这样的:
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。
请注意这里面的两个关键词:管理和程序。
操作系统要完成的任务首先是管理,具体如下:
1.  进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题 。
2.  存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。
3.  设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。
4.  文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
5.  作业管理是负责处理用户提交的任何要求。
操作系统从本质上是一种软件程序,是由代码编译而产生的。
操作系统的种类很多,有很多种分类方法。按照操作系统的原始内核的类型可以分为两个大类,Unix家族和MicroSoft家族,以下是一个网上找到的区分方法,从中可以看出,Unix是大部分我们常见的操作系统的始祖,包括IOS和Android:

分类
操作系统
UNIX System V家族
A/UX、AIX、HP-UX、IRIX、LynxOS、SCO  OpenServer、Tru64、Xenix、Solaris、OS/2
BSD UNIX-386BSD家族
BSD/OS、FreeBSD、NetBSD、NEXTSTEP、Mac OS X、iOS、OpenBSD、SUN  OS、 OpenSolaris
UNIX-Like
GNU、Linux、Android、Debian、Ubuntu、Red  Hat、Linux Mint、Minix、QNX、GNU/Linux、GNU/Hurd、Debian GNU/Hurd、 GNU/kFreeBSD、 StartOS
其他
DOS、MS-DOS、Windows、React OS

     从功能角度分析,分别有实时系统、批处理系统、分时系统、网络操作系统等。
从运行环境来说,还可以分为嵌入式操作系统和非嵌入式操作系统。这里要着重说明一下,嵌入式系统不等于嵌入式操作系统。
嵌入式系统,Embedded System ,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;嵌入式系统作为装置或设备的一部分,它是一个控制程序存储在ROM中的嵌入式处理器控制板。
而嵌入式操作系统是嵌入式系统中的一个组成部分。是负责进行系统管理的软件程序,是一个内置了固定应用软件的巨大泛用程序。
对于汽车来说,我们使用的操作系统都基本可以归类为嵌入式操作系统这个类别。鉴于汽车控制的实时性要求较高的特点,车上控制器使用的操作系统一般都是实时操作系统(RTOS,Real Time Operating System )。
RTOS是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。
下面介绍几个汽车控制领域常见的操作系统。


OSEK OS
OSEK,是指德国的汽车电子类开放系统和对应接口标准(open systems and the correspondinginterfaces for automotive electronics)。
而OSEK OS则是遵循OSEK标准的OS。OSEK-OS是个静态的操作系统,不支持在运行过程中动态更改,用户在产生特定的kernel之间,必须确定所需要资源的准确数目。因为其简单可靠,从而在汽车行业中曾经得到了广泛的应用,直至今日,还有大量的控制器的OS是遵循OSEK标准的。
现在的AutoSAR标准其实就是从OSEK标准演进来的。


Android
Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧。
虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了。
自己所特有的驱动程序。其实实际上选择linux内核的手机系统很多,记得前几年就见过三星的一款linux内核的手机,并且那款手机保持了linux系统的大部分特征,所以用起来感觉就像一个小巧的linux系统。
Android虽然是为移动设备开发的,但是目前已经广泛用到了汽车的娱乐系统中。这样的好处是车机可以移植很多手机上的APP。
下面的图是Android系统的架构图。大家可以看一下,想想其中的任何一个模块如果要做需要多少工作量。据说Android系统目前的代码行数已经超过了一亿行。按照大型软件开发中每个软件人员的平均产出工作量——100~200行/月来计算,需要多少个人月的工作量才能完成。
注:这里的产出量包括了前期的设计、编码和验证等工作。不是纯粹的Coding的工作量。


QNX
Blackberry(黑莓,也就是生产曾经红极一时的黑莓手机的公司)的QNX操作系统,是一种商用的遵从POSIX规范的类Unix实时操作系统,目标市场主要是面向嵌入式系统。它可能是最成功的微内核操作系统之一,成立于1980年,目标市场主要是嵌入式系统。
目前很多域控制中都是采用QNX系统的。


POSIX
POSIX不是操作系统,是一种标准,Portable Operating System Interface of Unix.,可移植操作系统接口。X表示其是对Unix API的传承。
POSIX标准由IEEE(电气和电子工程师协会)发布,定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行软件而定义的一系列API标准的总称。
POSIX的诞生和Unix的发展是密不可分的。当年最早的Unix,源代码流传出去了,加上早期的Unix不够完善,于是之后出现了好些独立开发的与Unix基本兼容但又不完全兼容的OS,通称Unix-like OS。这样版本混乱的情况导致相互之间的竞争和不兼容之处越来越多,给软件的可移植性带来很大困难,对Unix的发展极为不利。为了提高兼容性和应用程序的可移植性,结束混乱局面,IEEE提出了POSIX标准,POSIX在源代码级别上定义了一组最小的Unix(类unix)操作系统接口。
这套标准涵盖了很多方面,比如Unix系统调用的C语言接口,shell程序和工具、线程和网络编程等。POSIX标准意在期望获得源代码级别的软件可移植性。为一个POSIX兼容的操作系统编写的程序,可以在任何其他POSIX操作系统上编译执行。POSIX现在已经发展成为一个非常庞大的标准族,并不局限于Unix, 一些其他的操作系统,如Microsoft windows NT, Linux等都支持或者部分支持POSIX标准。


Adaptive AutoSAR的架构模型
再来看一下Adaptive AutoSAR的架构模型。具体的细节就不解释了,网络上有很多专门讲解Adaptive AutoSAR的课程。

这里只想说明一下在我看来Adaptive AutoSAR(AP)与Classic AutoSAR(CP)的主要区别。
1.  AP不但是一种标准,还包含了代码层面的规定,而代码是基于C++的
2.  AP是基于POSIX的
3.  AP主要是为了面向服务的功能而设计的,是为了支持所谓的SOA(Service Oriented Architecture)


汽车行业的软件和操作系统生态
下面借用一下镁佳科技的庄总的一页PPT来说明一下汽车行业的软件和操作系统生态。
希望庄总不要介意,你的带货信息也都保留着,如果想给我一些广告费用的话,我也不会拒绝的 )
底层的Driver层,也就是硬件直接相关的驱动层,各个芯片供应商基本都会提供一部分的,Tier1会把这个层级集成的很好,OEM完全没有必要做。
对于操作系统层级,想去重新弄一个也是不太现实的,我相信所谓的VW.OS应该也是基于某个从UNIX派生出来的系统改造或者深度定制的。一个好的OS不是花钱就能做出来的,这个需要真正的大牛和强大的团队来共同构建的,即使是这样,也是需要巨大的资金投入加上不断的迭代升级的,绝非一日之功可完成。而且,硬件供应商应该会把这部分和Driver层集成的很好,没有必要自己做的。
上层的基础设施软件模块,也就是所谓的MiddleWare(中间件)才是各家需要真正关注的,好的MiddleWare可以让系统的效率最大化,而这层的工作也是需要长期大量投入的,对于OEM来说,如果想要做,一定要三思而后行。因为投入大,周期长。而且市场上有一些供应商的产品已经很不错了。
应用软件&服务层才是OEM应该专注的,这一层的能力将成为OEM的核心竞争力的重要来源。而这一层的来源只有两个:OEM自己做,或者让第三方(也可能是某些硬件供应商)来做,并且集成。应用软件(Application)的集成也是一个复杂的工作,汽车不是手机,输入输出的组合太多了,而且涉及到生命安全,如果轻视集成工作,一定会遭受巨大的损失。


总结
1.  不是所有的OEM都需要自己搞操作系统,如果你的规模足够大,自己的OS可以从经济角度来说更划算的话,搞一个操作系统也未尝不可,但是一定要慎之又慎,有些事情不是钱就可以搞定的。
2.  对于广大的中小OEM来说,最经济的方式还是遵循现在社会的基本原则:分工合作。没有人可以垂直整合所有的供应链,即使特斯拉自己搞芯片,也只是搞核心的一部分,不可能所有的IC都自己去搞。一个OEM再强大也无法和整个社会去比拼效率和效益。充分利用现有的资源,做好软件集成工作才是正道。就像没有一个OEM去自己开采铁矿石和种橡胶树一样。汽车这个复杂的系统不是任何一家OEM可以自己搞定的,拼的是整个社会的能力。
3.  将来的供应商体系将会从现在的Tier1、Tier2等转变为:各层软件的供应商,硬件的供应商,集成供应商等。产业链的价值会被重新分配。
4.  强烈建议国内的OEM进行操作系统层级的合作,共同摊薄软件费用。我们的对手不是彼此,而是国外所有的OEM。既然我们在乘用车的全部产量还不如人家一个,那么我们**的办法就是合作——虽然这很难。不过T3 的合作至少是让我们看到了曙光。现在是央企之间的合作,让我们期待着更多国内车企之间的合作吧!
最后送给大家一首关于软件架构的小诗:
如果没有好的架构,
移植将会是一件很痛苦的事情。
如果没有好的架构,
复用是最大的难题,
没法更大限度的复用原有的代码。
如果没有好的架构,
一旦驱动改了,
所有的地方都要改,
费时费力且很容易出错。
如果没有好的架构,
应用层中穿插着硬件驱动层的代码,
看着会是一片混乱,
逻辑不清,
代码维护起来会很困难。


编者简介:
原创作者:侯哥@Roy 专注汽车电子电器及架构开发
文案编辑:文昌007@Vincent 汽车信息安全从业人员

相关文章

汽车新定义 | 如何重新定义汽车,请由芯片先回答
BMW 汽车用高性能计算架构 .PPT
软件重新定义特斯拉“汽车**”称号 汽车电子产业变革大浪潮开启




SELECTED EVENTS




 

长按二维码识别关注


 

/长按二维码申请加入 EEA 技术交流群/ 


我就知道你“在看”


  • 电话咨询
  • 021-22306692
  • 15021948198
None