站在车企的角度看,QNX有点像Mobileye——尽管“易用”,但限制了车企的自主性;而Linux则有点像英伟达——比较“难用”,但赋予了车企很大的自主权及面向未来的兼容性。
随着车企对软件技术投入的加大和能力的提升,Linux在自动驾驶市场的占有率大将会逐步上升,而QNX的市占率则会逐步下降;同时,对基于Linux自研OS失败的车企而言,还有QNX这条“退路”可以依赖,这反而让他们在自研OS时少了些“后顾之忧”。
值得注意的是,自研自动驾驶OS(已取得成功)的车企或自动驾驶公司,无论特斯拉还是Waymo、Mobileye、华为或苹果,都有一个共同点:有自主研发的ASIC芯片。那么,有没有这样一种可能:打算自研自动驾驶OS的车企,先从英伟达或Mobileye挖个芯片大牛来担任自动驾驶负责人或CTO,然后,一手抓芯片,一手抓OS?
OS的价值主要在于可以更好地分配、调度运算和存储资源,但在分布式EE架构下,各ECU基本只处理某一项单一任务,并不存在资源“分配和调度”的需求;甚至连Mobileye的EyeQ 3和EyeQ 4,也只是跑单任务的ASIC,只需要处理摄像头的数据,因此,用Tier 1的MCU就可以了,不需要高性能的OS。
MCU的代码行数少,流程和功能简单,并且逻辑也不复杂,因此,用MCU的风险系数很低。
而到了域控制器时代,许多项功能都被集成到一颗性能强大的SoC芯片上,尤其是,在自动驾驶功能从L2向L2+、NOA演讲的过程中,传感器的种类和数量大幅增加、需要处理的数据量更是呈指数级增加,如此复杂的任务,简单的MCU已经搞不定了,必须需要有一个强大的实时操作系统才能搞定。
从L2到L4,操作系统对实时性、功能安全、信息安全的要求都在提高。
以往,对自动驾驶OS关注较多的是芯片厂商、L4级自动驾驶方案公司、特斯拉,而大部分车企对自动驾驶OS涉猎甚少。
某美国ADAS芯片厂商市场部负责人告诉《九章智驾》:“我们在2019年问很多车厂、Tier 1‘你们对什么操作系统感兴趣’,结果都大家都一头雾水,没怎么思考过。博世又很强势,觉得 RTOS搭配经典AUTOSAR的方案挺好的,但往多摄像头发展,RTOS是否可行,没有人知道。
但随着L2+、NOA/NOP等高级自动驾驶功能逐渐成为新车的标配,无论有没有兴趣,有进取心的车企都必须要硬着头皮“恶补”关于自动驾驶OS的课程;个别车企甚至打算自研OS。
然而,自动驾驶OS尽管重要,但并没有芯片和激光雷达那么“热门”,这也导致很多人对它有些误解。比如,一旦某公司要自研自动驾驶OS,就会被不少人解读为“自研底层操作系统”,甚至有媒体的报道中会出现“基于Linux的底层操系统”这样的硬伤。
那么,目前可用的自动驾驶OS有哪些?车企所谓的“自研OS”究竟是什么意思?基于不同的内核自研OS有什么区别?未来,自动驾驶OS的话语权会掌握在谁手里?
带着这些疑团,笔者在去年11月中旬参加了焉知汽车组织的自动驾驶操作系统论坛,并在会后跟黑莓QNX IOT事业部大中华区首席代表董渊文、地平线市场拓展与战略规划副总裁李星宇及大众问问CEO张人杰等人做了深入交流。
首先需要厘清两个概念:狭义OS和广义OS。
车载智能计算平台自下而上可大致划分为硬件平台、系统软件(硬件抽象层+OS内核+中间件)、功能软件(库组件+中间件)和应用算法软件等四个部分。狭义上的OS特指可直接搭载在硬件上的OS内核;而广义OS从下至上包括从BSP、操作系统内核、中间件及库组件等硬件和上层应用之间的所有程序。
图片摘自公众号“筋斗云与自动驾驶”
Hypervisor——一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也可叫做VMM(virtual machine monitor),即虚拟机监视器。Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。
BSP(board support package)即板级支持包,也是介于主板硬件和操作系统之间的一层,主要目的是支持操作系统,使之能够更好的运行于硬件主板。
OS内核又称为“底层OS”,提供操作系统最基本的功能,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
中间件,作为底层操作系统和这些应用程序之间的桥梁,是对软硬件资源进行管理、分配和调度的平台,充当着软件和硬件解耦的关键角色。
具体来说,中间件通常对传感器、计算平台等资源进行抽象,对算法、子系统、功能采取模块化的管理,通过提供的统一接口,让开发人员能够专注于各自业务层面的开发,而无需了解无关的细节。这为开发者快速、高效、灵活地开发和集成自动驾驶软件提供了极大的便利。
功能软件,包含自动驾驶的核心功能模块,如相关算法的编程框架(如TensorFlow、Caffe、PaddlePaddle等)。
自动驾驶OS内核的格局较为稳定,主要玩家为QNX(Blackberry)、Linux(开源基金会)、VxWorks(风河)。因打造全新OS需要花费太大的人力、物力,目前基本没有企业会开发全新的OS内核。
当前,无论是Waymo、百度、特斯拉、Mobileye,还是一众自动驾驶初创公司、车企,所谓的自研自动驾驶OS,都是指在上述现成内核的基础之上自研中间件和应用软件。
由于基于QNX开发中间件相对简单,并且受QNX官方的约束比较大,而基于Linux开发中间件有很高的技术壁垒,开发者们也可以享有更大的自主权,因此,通常,很多公司提到的“自研OS”,都特指对Linux内核做相应裁剪,并在此基础上开发中间件和应用软件。
华为的AOS,究竟是基于完全自研的OS内核还是基于Linux内核的中间件,外界存在两种说法:有不少人认为是“完全自研”,但也有不少操作系统领域的从业者认为,AOS仍是基于Linux内核的,但对Linux的内核做了深度裁剪、加了一些安全固件及特有的驱动程序,并在此基础上开发了中间件。
需要强调的是,“中间件”这个词的含义略显模糊——系统软件和功能软件里都包含了“中间件”,那企业自研的“中间件”,究竟是哪一块呢?自研操作系统可分为定制型和ROM型,定制型即修改了OS内核里的软件及“系统软件里的中间件”,而ROM型修改的范围则仅限于“功能软件里的中间件”。
图片摘自“筋斗云与自动驾驶”的知乎账号
此外,大众正在自研的自动驾驶OS,也是一个广义的OS。准确地说,是一个将Linux、QNX和VxWorks等多个底层OS整合到一起的平台。