QNX张人杰:从0到1,用软件重新定义汽车

虚拟化技术如何加快自动驾驶软件架构的演变,如何用软件重新定义汽车。

车云按:8月4日-8月5日由车云和佐思产研联合主办的2016年自动驾驶汽车开发及测试技术研讨会在上海举行。QNX大中华区总经理张人杰在会上发表了名为《虚拟化技术加速自动驾驶软件架构的演化》的演讲,介绍了虚拟化技术如何加快自动驾驶软件架构的演变、软件重新定义汽车的技术趋势。本文由现场演讲整理而成。

QNX大中华区总经理张人杰QNX大中华区总经理张人杰

硬件:车载产品供应商将集中化

与大多数演讲嘉宾阐述内容不同,我的话题会聚焦在软件部分。正如大家现在看到的,Blackberry现在的主营业务也在向软件演化,我们BTS(Blackberry Technology Solutions)下属的业务包括QNX操作系统及各类中间件、Certicom安全加密、Paratek的无线天线调谐,例如大家熟悉的很多手机里面无线天线的调谐用的都是我们的技术,除此之外还包括了4万多项专利,是全世界移动通信领域里专利数目最多的公司。

我们首先说一下自动驾驶的软件架构。大家都说到从1到N很简单,它不过只是一种进化,而从0到1就很难,这是一种质变。自动驾驶软件是现有汽车软件架构的演变,它不是从1到N,而是从0到1。

从现在车载设备的形态来看,有很多分离的器件,传统的包括T-BOX、HUD、Infotainment、ADAS、数字化仪表盘,至少有五到六个电子设备。在往自动驾驶演变的过程中,可能逐渐会缩减到两到三种,而这个过程实质就是从0到1的过程。

目前行业的供货情况是,多个Tier1设备供应商会给车企提供不同的零部件,但是未来整个格局会发生变化,行业将发生洗牌。某个一级供应商可能会供应所有的整套车载电子设备,以减少车内不同厂商设备间的通信开销。从传统的角度来说,数字化仪表盘、中控、ADAS、HUD,它们之间的通信量非常大,但很多通信其实是冗余的,我们采用新的软件架构就可以大大减少这样的开销。

比如地图,数据本来在中控车机里,怎样让HUD设备得到地图信息呢?怎样让ADAS设备感知呢?以往要通过通信的手段,现在如果通过一个统一的平台,可以把这部分的通信开销大大降低。

从另一个层面来说,降低成本也是我们汽车软件架构演化的驱动力。把整个系统的认证成本、开发成本、调试成本通过集成化的硬件来降低,将是我们行业要研究的方向。

软件:虚拟化技术将提高自动驾驶安全性

自动驾驶下,汽车电子设备形态的核心是什么?软件重新定义汽车。这个不是简单分离的多个电子器件的集合,而是一体化的硬件架构。用虚拟化的架构进行不同domain(域)的管理。 

domain是指把车载电子设备的不同功能划分成不同的域,进行不同的安全等级的控制。比如黑客把你的汽车黑了,通过OBD2的接口侵袭到汽车里面做一些非授权控制。为什么会出现这样的情况呢?原因是车里没有严格地做好不同域之间的界定和划分。 

当今的技术形态下,我们看到更多的是分离设备的状态,但是向未来的演化,一定是在一个统一的硬件平台之下,用一个集中式的域管理器来中央控制,在集中式的域管理器之下,每个域都有不同的功能及安全等级。这个演变方向就是所谓的软件重新定义汽车,同时大大降低系统的开发成本。 

我们来看一个简单的例子,比如硬件之上,我们会加载所谓的虚拟机。这种虚拟化技术之上,我们可以把单一硬件虚拟成多个不同的虚拟硬件。每个虚拟硬件之上,传统的车机、数字化仪表盘、HUD、ADAS等,都变成了虚拟的硬件集合。在此之上架构各种不同的软件功能,从而大大降低系统的成本。

虚拟化技术会增强整个系统的安全性。现在的自动驾驶里,最大的隐患是安全隐患。而虚拟化也必须要通过相应的行业认证,最基本的就是功能性的认证,例如ISO26262 ASIL。这种功能性的认证会有一些比较直观的指标,每小时出现故障的可能性是10的负8次方到负9次方之间。如果系统的安全级别达到ISO26262 ASIL D要求,平均无故障时间可达到四万多年,从理论上将这样的系统是非常安全的。

虚拟化技术从实现机制可以分成几种不同的类型,例如常说的type1,type2。大家通常熟悉的如VMware,假设你在PC机上架构一个windows系统,在运行虚拟机,安装上一个Linux系统,这实际上就是一个type2的虚拟化系统。但是在车载环境下需要的是更加高效的虚拟化机制,这就是在车载一体化硬件之上,直接架构一个Type1的Hypervisor,又叫bare metal的Hypervisor,然后再用虚拟机构建不同的domain。 

用这样的方式,可以用安全等级较高的实时操作系统比如QNX系统来管理控制对安全性要求较高的域,也可以用安卓这样的生态比较好的系统来兼顾应用需求。既保证了系统的安全性,也保证了系统应用扩展的丰富性。这一概念应该是目前主流的一级供应商正在努力的软件架构方向。

虚拟化环境下,系统间通信如何完成?

通信是虚拟化技术要考虑的另一个关键话题,总的来说,需要类似虚拟以太网这样的技术,使多个不同的域之间,可以利用通用的以太网技术来链接多个虚拟机完成通信。而这样的架构,可以使Guest操作系统不需要有hypervisor的感知性。所谓感知性,也就是说,系统运行在hypervisor之上,不需要知道是运行在虚拟机之上,还是真实的硬件之上,我们必需要有这样一个功能,否则Guest操作系统必须要针对虚拟化的硬件做重新定义,这样开发的工作量会变的非常大。

还有一点,就是安全过滤要求。基于安全性的考虑,要增加过滤访问的规则。同时要增加访问权限控制。比如Linux系统中经常会遇到问题,很多root用户权限被滥用。这样一旦黑客获得了root权限,那么他可以做任何事情,而在更加安全的实时操作系统如QNX之上,会增加更多的安全过滤机制。

对于这种虚拟化的架构之上,再构建安全控制的情况,你需要对权限做相应的过滤。假如黑客潜入了你的车机,通过这样的权限过滤,他能够控制的仅是多媒体播放和导航等等这样的应用级domain,对于和制动系统、转向系统关联的这样的domain就无能为力,所以我们要防止根用户权限的滥用,在虚拟化机制之上增加访问控制权限细化的功能,而这个是现在很多开放系统最大的漏洞。

对于虚拟化架构来说,分布式的处理显得格外重要。虚拟化之上有多个domain,这样就会有多个计算节点,怎么才能让它们协同工作完成同样一件事情呢?这时候要把汽车看成集群计算机,里面的每一个节点都要为并行计算贡献计算能力。

最后,看一下虚拟化技术的应用样例。 

例如,这是一个集成了QNX实时操作系统和Android操作系统的IVI车机的架构,左边的蓝色部分基本上涵盖了车机本身应用的范围。在安卓这一块,可以看到把大量的第三方服务和应用引入到这个系统。用这样的方式打造的新一代的车机,既考虑了实时系统的安全性,又兼顾了安卓系统应用的丰富性,这样的系统是最适合未来安全车机发展的形态。

第二种样例,IVI车机加数字化仪表盘加ADAS功能设备的集成系统,把ADAS功能单独做成一个小盒子放到汽车里面是非常不合算的,同时也很难跟车载的其他电子产品之间做有效的通信。我们可以在虚拟化之上,同时架构三到四个不同的domain。每个domain关注不同功能,并加载合适的操作系统,例如QNX主要集中在车机IVI的控制管理domain部分,另外的一个domain用安卓来做第三方应用和服务。针对数字化仪表盘,由于它被归入了安全件的范畴,所以在未来必须通过ISO26262 ASILB甚至C这个级别的功能性安全认证,在此之上搭载的操作系统也必须选择能达到该认证级别的系统。

最后总结一下,虚拟化技术用软件重新定义了汽车,把现在分离的电子设备形态变成了集成化硬件架构上的多个软件域和实例,从本质上加速了自动驾驶软件架构的演变。我们现在讨论自动驾驶时,更多的是传感器技术、人工智能、算法这些炙手可热的话题,但是最终必须回到系统级别的安全性上,对现有软件架构做从0到1的演变,才能确保真正的自动驾驶安全。

更多评论 收起评论

我要说

欢迎您!

退出