笔者在从事Android车载职业的开发过程中,发现Android车载开发和一般的Android开发仍是有较大的不同,关于一个小白来说或许说如果是刚入行的,都会很陌生,而且现在市场也没有许多体系性的常识供给给咱们。

我是希望能做成一个系列,把车载开发的相关常识和实际开发过程中的经历分享出来,能给咱们带来一些启示和帮助。

这是笔者的第一篇车载开发相关博客,会先从大的结构层来俯瞰下整个车载操作体系。所以本篇博客适合想了解现在Android车载操作体系现状、整个操作体系架构和架构层级中中心概念的朋友阅读学习。

常见车载操作体系

车载操作体系首要运用于中控、仪表和 T-box, 供给车载信息文娱服务,可具有网联功用,供给导航、多媒体文娱、语音、 辅佐驾驭、AI 等高档功用。现在常见的车载操作体系有哪些呢?

Android车载开发启示录(一)

QNX

QNX是一款微内核、嵌入式、非开源安全实时的操作体系,由加拿大QSSL公司开发,2004年,哈曼世界将QNX收入囊中,2010年,BlackBerry母公司RIM又从哈曼世界手中收买QNX。像通用、奥迪、宝马、保时捷等大厂都在运用 QNX。

QNX是遵从POSIX规范的类Unix实时操作体系,目标市场首要是面向嵌入式体系,具有高运转功率、高可靠性特点,并在工控范畴拥有近40年的运用经历,被广泛运用于轿车、轨道交通、航空航天等对安全性、实时性要求较高的范畴。

QNX微内核架构,内核一般只要几十KB,驱动程序、协议栈、文件体系、运用程序等都在微内核之外的、受内存维护的空间内运转,可完成组件之间彼此独立,防止因程序指针错误造成内核故障。因其内核小巧,运转速度极快,具有独特的微内核架构,安全和安稳性高,不易受病毒破坏体系,是全球首款经过ISO 26262 ASIL-D安全认证的实时操作体系,常用于安全安稳性要求较高的数字仪表中。

但是, QNX的缺陷也十分明显:

昂扬的授权运用费用、安全性带来的兼容性问题以及开放性缺乏导致的运用生态缺乏都是QNX看得见的天花板。

Linux

Linux 作为一款开源、高效、灵敏、功用强大的操作体系,**最大优势是具有很强的定制开发灵敏度 **。

由于可定制性强,特斯拉在Linux根底上开发出了彻底适配旗下车辆的车载体系;阿里的AliOS也是依据Linux开发,现在现已运用在上汽荣威、上汽名爵等多款车型上。

2014年,Linux基金会资助并发布了开源AGL(Automotive Grade Linux)规范 1.0 版别,它是首个开放式车载信息文娱软件规范AGL是一个协作开源项目,由Linux基金会办理,将轿车制造商、供货商和科技公司聚集在一起,以加快开发和运用彻底开放的智能网联轿车软件堆栈AGL设立的开始目的,是供给一个车规级的信息文娱体系,但跟着自动驾驭的开展,未来还会加入更多的功用,不只会交融仪表盘、舱内操控的功用,还会掩盖自动驾驭的相关功用。

AGL现已获得了多家主机厂的支撑,包含丰田、大众、戴姆勒、现代、马自达、本田、三菱、斯巴鲁、日产、上汽等。加入AGL的优点是,70%的操作体系开发代码(包含操作体系、中间件和运用程序结构)现已由AGL编写完成了,剩下30%由车企个性化定制开发。主机厂不只获得了操作体系掌控权,还大大缩短了开发进程,降低了开发成本。

Android:AAOS

Android体系是依据Linux内核开发的最成功的产品,Google 于 2019 年开放了 Android Automotive,本来为移动互联设备开发的 Android 运用生态可迁移到 Android Automotive

国内厂家在车载信息文娱运用中首要选用Android体系,尤其是各大互联网巨子、自主品牌和造车新势力纷繁依据Android进行定制化改造,推出自己的轿车操作体系。

Android Automotive OS(以下简称AAOS),是一款依据 Android 的车载信息文娱体系。车载体系是专为提升驾驭体会而优化的独立 Android 设备。用户可直接将运用安装到车载体系上,而不是手机上。

AAOS 为轿车信息文娱体系和主机供给了开放性、定制性和扩展性。其间开放性经过在免费和开源代码库中供给基本的轿车信息文娱功用来提高功率,其定制性和扩展性,能够让开发者依据需求进行定制和扩展特定功用。

优势:开源,定制灵敏,运用可移植性强,运用生态最为丰富

缺陷:但是安全性和安稳性相对缺乏。

鸿蒙:HarmonyOS

鸿蒙(即HarmonyOS)是华为公司自2012年以来开发的一款可兼容AOSP的操作体系。体系功用包含运用“分布式”技能将各款设备交融成一个“超级终端”,便于操作和同享各设备资源。

体系架构支撑多内核,包含Linux内核、LiteOS和鸿蒙微内核,可按各种智能设备挑选所需内核,在手机、平板以及PC等大内存设备上,体系选用Linux内核和OpenHarmony结构以运转鸿蒙运用程序,一起运用AOSP结构以运转安卓运用。在手表及物联网相关设备上,体系选用LiteOS内核以运转轻量的鸿蒙运用程序。

车载操作体系架构

车载操作体系架构分为单体系架构多体系架构。两类架构都可完成一芯多屏(多屏交融、多屏互动)、单屏多体系(虚拟运转环境、多运用生态交融)、一芯多功用(信息文娱、T-box 等)。

单体系架构

单体系架构仅涉及单个车载操作体系的架构,由车载操作体系内 核、根底库、根底服务、运转环境及程序运转结构组成。车载操作体系对底层硬件和上层运用程序供给统一的接口,完成车载操作体系与 硬件和上层运用程序的解耦。

车载操作体系架构研讨报告中,给出了单体系架构和功用要求建议:

Android车载开发启示录(一)

多体系架构

多体系架构是同一套硬件之上运转多个车载操作体系单体系的架构,可分为硬件隔离、虚拟机办理器、容器三类多体系根底架构,以及两类或三类根底架构的混合架构,用于满意不同功用、功用和安全的隔离需求。

关于多体系架构的种类比较多和复杂,这儿不做过多讲解,感兴趣的能够经过车载操作体系架构研讨报告进一步学习了解。

干流操作体系架构

车载操作体系从规范到落地完成,会存在许多不同的架构,但国内干流车载操作体系架构仍是很大的相似性,咱们能够以下图的架构来进行一个开始的学习和了解:

Android车载开发启示录(一)

能够自下而上的看,也便是从硬件到最上面的运用层,会发现许多没见过的概念,不过没关系,下面就会解说下每一层对应的介绍:

硬件

T-BOX

Tbox是轿车上的一个盒子,指Telematics Box,远程通讯终端,集成车身网络和无线通讯功用的产品,可供给Telematics事务,一般安装在仪表盘下方。Tbox是一个依据AndroidLinux操作体系的带通讯功用的盒子,内含一张SIM卡,一般是中国联通和移动的SIM卡,与这个盒子配套硬件还有GPS天线,4G天线等。车机要联网必须有Tbox设备才干完成。

TBOX的功用模块首要包含4G模块、GPS模块、蓝牙模块、以太网模块、CAN通讯模块、电话言语模块、电源模块、Airbag模块、E/B-call模块等,每个模块之间紧密联系在一起,构成一个完整的远程通讯终端。

VCU

VCU是完成整车操控决议计划的中心电子操控单元,一般仅新能源轿车装备、传统燃油车无需该装置。VCU经过采集油门踏板、挡位、刹车踏板等信号来判断驾驭员的驾驭意图;经过监测车辆状况(车速、温度等)信息,由VCU判断处理后,向动力体系、动力电池体系发送车辆的运转状况操控指令,一起操控车载附件电力体系的作业方式;VCU具有整车体系故障诊断维护与存储功用。

ADAS

ADASAdvanced Driver Assistance System的简称,翻译成中文的意思便是高档驾驭辅佐体系。

翻译成白话文便是,便是运用安装在车上的林林总总传感器搜集数据,并结合地图数据进行体系核算,从而预先为驾驭者判断可能发生的风险,保证行车的安全性,

这儿咱们要明确一个概念,ADAS不是现在非常红的自动驾驭,能够说这两者的研讨重点彻底不同。ADAS是辅佐驾驭,中心是环境感知,而自动驾驭则是人工智能,体系有很大不同。

BMS

BMS(battery management system)电池办理体系。

BMS 是一套嵌入式体系,由硬件和软件共同组成。BMS 体系首要完成的功用:办理多节锂电池组成的电池包,完成电池包的充放电办理、安全维护、信息监控等功用。

BMS体系首要解决什么问题:

⨳ 充放电维护,如:过充维护、过放维护、过温维护等。

⨳ 充放电信息监控,如:剩下电量检测等。

⨳ 电池自身状况监控,如:剩下电量,电池健康度等。

⨳ 充放电均衡,如:充放电时的自动和被迫均衡。

⨳ 与充电桩对接,需求满意充电协议、快充规范等。

CAN

CAN总线协议(Controller Area Network),操控器局域网总线,是德国BOSCH(博世)公司研发的一种串行通讯协议总线,它能够运用双绞线来传输信号,是世界上运用最广泛的现场总线之一。

现在在轿车上运用的高速网络体系选用的都是依据CAN总线的规范,特别是广泛运用的ISO 11898世界规范。CAN总线通常选用屏蔽或非屏蔽的双绞线,总线接口能在极其恶劣的环境下作业。依据ISO 11898的规范建议,即便双绞线中有一根断路,或有一根接出其至两根线短接,总线都必须能继续作业。

以太网

以太网是20世纪80年代初开发的一种通讯规范,用于在家庭等本地环境中衔接核算机和其他设备。这个本地环境被界说为LAN(Local Area Network),也便是咱们平常所说的局域网。在局域网网中,多个设备相连,设备与设备之间能够同享信息。

以太网是一种有线体系,开始运用同轴电缆(Coaxial Cable),现在运用双绞线(Twisted Pair Cable)和光缆(Fiber Optic Cable)。

SoC

SoC(System on Chip),翻译过来便是体系级芯片,也有称片上体系。既然是体系,单个就称不上体系,只要多个个体的组合才干称之为体系,所以,SOC着重的是一个整体。用“麻雀虽小五脏俱全”来形容SoC,再切当不过了。

轿车体系级SoC首要面向两个范畴,一是驾驭舱,二是智能驾驭,两者的界限现在越来越含糊。SoC运转Hypervisor,在Hypervisor之上运转两类操作体系,其间对实时性和安全性要求比较高的安全域模块跑在QNX或许Linux体系上;对实时性要求不太高、但对生态要求比较高的文娱域模块跑在Android体系上。

Hypervisor 是什么?

一个 Hypervisor(又被称为 virtual machine monitor、VMM 或 virtualizer)是一种模拟器,它是创立或许运转虚拟机的软件、固件、或许硬件。一个核算机,上面运转着一个 hypervisor,hypervisor 上面又运转着一个或多个虚拟机,该核算机被称为 host machine,每一个虚拟机被叫做guest machine。

SPI

SPISPI是串行外设接口(Serial Peripheral Interface),简略来讲便是它一种高速的,全双工,同步的通讯总线。

在车载T-BOX中, MCUSoC之间必定存在数据通讯,它们之间就能够依据SPI方法的进行通讯。

MCU

MCU(MicroControllerUnit) 中文名称为微操控单元,又称单片微型核算机,是指跟着大规模集成电路的出现及其开展,将核算机的CPURAMROM、定时数器和多种I/O接口集成在一片芯片上,构成芯片级的核算机,为不同的运用场合做不同组合操控。轿车是MCU的一个非常重要的运用范畴,高端车型中每辆车用到的MCU数量挨近100个,从行车电脑、液晶仪表,到发动机、底盘,轿车中大大小小的组件都需求MCU进行把控。

按运用范畴区分,轿车MCU又能够分为车身域、动力域、底盘域、座舱域和智驾域。其间关于座舱域和智驾域来说,MCU需求有较高的运算才能,并具有高速的外部通讯接口,比方CAN FD和以太网,车身域同样要求有较多的外部通讯接口数量,但对MCU的算力要求相对较低,而动力域和底盘域则要求更高的作业温度和功用安全等级。

虚拟机

Hypervisor

Hyperviosr,也称为VMM,虚拟机办理器。Hypervisor 内部的机制,与单一的任何一种 OS相似,简要归纳便是调度资源。只不过它发生在更高的层级上,由于咱们评论的不是 OS 和 多线程,而是多个OSVMM 调度OS 的资源,出让CPU 的运用权。

Hypervisor允许多个操作体系同享一个CPU(多核CPU的情况能够是多个CPU)。虽然基本的技能已有半个世纪之久,但是运用到嵌入式范畴却是近年才发生的。Hypervisor是广泛的核算概念的一部分,作为虚拟化技能为人所知。基本上Hypervisor的目的是同享硬件资源,就像操作体系所做的那样。

对比着看Hypervior OS,咱们能够很简单的了解到:

OS 需求为每个线程分配特定的内存资源,同理,VMM 需求为每个OS 分配特定的内存资源,这儿特定的内存资源也称之为「资源沙箱」。沙箱以外的任何资源,如OS 需求运用,都需求经过VMM 的调度分配。别的,除了调配使命外,VMM 还会监控硬件的事件,如定时器的中止。

驱动层

Android BSP

BSP(Board Support Package),板级支撑包,是介于主板硬件和操作体系中驱动层程序之间的一层,一般认为它归于操作体系一部分,首要是完成对操作体系的支撑,为上层的驱动程序供给访问硬件设备寄存器的函数包,使之能够更好的运转于硬件主板。

在嵌入式体系软件的组成中,就有BSPBSP是相关于操作体系而言的,不同的操作体系对应于不同界说方式的BSP,例如VxWorksBSPLinuxBSP相关于某一CPU来说尽管完成的功用一样,但是写法和接口界说是彻底不同的,所以写BSP一定要依照该体系BSP的界说方式来写,这样才干与上层OS保持正确的接口,良好的支撑上层OS。

Android BSP中,硬件厂商需求供给自己的硬件笼统层(HAL),以支撑特定硬件渠道上的设备。HAL是一种软件笼统层,用于将硬件和操作体系之间的差异进行笼统,使得Android操作体系能够在不同的硬件渠道上运转。HAL的完成依赖于硬件的特性和功用,因此每个硬件渠道需求定制自己的HAL

除了HAL之外,Android BSP还包含了一些基本的软件组件,如操作体系、驱动程序、库文件、配置文件等。这些组件都需求针对特定的硬件渠道进行定制,以保证它们能够正确地运转在该渠道上。

结构层

结构层包含 Android Customized Framework、Customized Service、Cluster System Service。

运用层

运用层是运用开发工程师最挨近的一层,包含常见的体系运用、三方运用和一些SDK API。其间体系运用是在车载体系中最常定制的,比方Launcher运用、体系设置、SysytemUI等。

1.Launcher

桌面发动器,桌面发动器是帮助用户查找和发动其他运用程序的软件。首要负责摆放小部件,显现其它运用程序进口。

2.体系设置

体系设置是整个IVI(车载信息文娱体系)的操控中心,车辆的音效、无线通讯、状况信息、安全信息等都是需求经过体系设置来查看和操作。

3.SystemUI

常见的状况栏、导航栏、音讯中心、 快捷设置、音量调节弹窗、蓝牙衔接弹窗等一系列界面都是由 SystemUI模块负责办理、显现的。

参阅

本篇博客参阅许多材料,想较为深化了解某个常识能够参阅如下文章:

Android for Cars

developer.android.com/training/ca…

智能轿车职业华为产业链深度系列研讨-鸿蒙座舱:人车交互新生态

pdf.dfcfw.com/pdf/H3_AP20…

车载操作体系架构研讨报告

www.catarc.org.cn/upload/2021…

车载联网终端Tbox基本功用介绍

zhuanlan.zhihu.com/p/497862010

一文看懂ADAS

zhuanlan.zhihu.com/p/36903822

什么是BMS体系?BMS体系的作用和功用是什么?

zhuanlan.zhihu.com/p/599183106

浅显讲讲can协议?

www.zhihu.com/question/39…

一文读懂轿车操控芯片(MCU)

zhuanlan.zhihu.com/p/637567706

Hypervisor 虚拟化技能与ARM 硬件虚拟化(上)

zhuanlan.zhihu.com/p/391234199