Android 车载应用开发指南(1)- 车载操作系统全解析

1 前言

2030 年,全球电动汽车的销量将超过 7000 万 辆,保有量将达到 3.8 亿 辆,全球年度新车渗透率有望触及 60% 。这一数据来自国际能源署(IEA)发布的《全球电动汽车展望2023》。

市场趋势和政策努力的双加持下,新能源汽车来势凶猛,燃油车保有量逐年递减。此番景象让死去的记忆又浮现在你我面前------不久的十年前,智能机以浩浩荡荡之势取代了功能机。相信大家也看到了,为了在此竞争中占有一席之地,传统车厂及近年来如雨后春笋般诞生的"新势力"们把新能源汽车行业到了一个新高度。

随着汽车电动化、智能化、网联化的发展,汽车操作系统已经成为车辆中最重要的组成部分之一,车辆的电子化程度决定了车辆的智能化水平、整体性能、安全性与舒适程度。在此背景下又兴起了软件定义汽车 的概念,整车企业出于构建软件生态的需要,不断推出新的汽车软件平台,汽车操作系统呈现出百花齐放的发展态势。例如国外电动车智能化先驱特斯拉 ,国内传统车厂比亚迪、吉利,新势力蔚小理 ,甚至包括互联网公司华为、阿里等都推出了基于 Linux 或者 Android 等的车用操作系统及配套生态应用。

可见,在这个传统燃油汽车向新能源汽车转型的大浪潮中,车用操作系统的竞争不可谓不激烈。除了传统汽车公司,互联网公司和硬件科技公司也都投入了极大的精力和成本以跻身新能源汽车的赛道。毕竟谁都不想成为浪潮退去过后那个躺在沙滩上的 NOKIA

在此浪潮中,作为 Android 应用开发者当然也有属于我们自己的小舞台。相比于 2023 年颓势尽显的互联网环境,踏入智能座舱开发领域也未尝不可呢。

2 车载操作系统概述

在智能网联汽车产业大变革趋势下,汽车逐步由传统的交通工具向同时具有交通、娱乐、办公、通信 等多种功能的新一代智能移动空间和应用终端迁移。实现能网联功能的驾驶辅助系统、车联网系统以及智能座舱系统相关电子设备逐步成为汽车电子产业研发应用的重点。从功能层面来看,汽车电子主要可以分为车身电子控制系统和车载电子装置两大类别。

  • 车身电子控制系统: 通过直接向执行机构(如电子阀门、继电器开关、执行马达)发送指令,以控制车辆关键部件(如发动机、变速箱、动力电池)协同工作,也被称为电子控制单元(ECU);
  • 车载电子装置: 如仪表、娱乐音响、导航系统、HUD 等,这类系统不直接参与汽车行驶的控制决策,不会对车辆行驶性能和安全产生影响,通常统称为车载信息娱乐系统(IVI)。

车用操作系统是传统汽车实现智能汽车升级的关键,作为硬件核心资源管理和软件运行平台,所有应用程序都需要在 操作系统上运行,围绕操作系统可以构建一个庞大的应用生态,影响整个行业的发展。

2019 年 10 月 25 日全国汽车标准化技术委员 会在世界智能网联汽车大会正式发布 《车用操作系统标准体系》 。该标准将车用操作系统定义包含车载操作系统和车控操作系统,其中车控操作系统又分为安全车控操作系统和智能驾驶操作系统,如图所示。车控操作系统对安全性、实时性、稳定性 要求非常高,而车载操作系统更加重视开放性、兼容性

2.1 车控操作系统

车控操作系统分为安全车控操作系统智能驾驶操作系统

其中,安全车控操作系统主要面向经典车辆控制领域,如动力系统、底盘系统和车身系统等,该类操作系统对实时性安全性 要求极高,生态发展已趋于成熟。

智能驾驶操作系统主要面向智能驾驶领域,应用于智能驾驶控制器,该类操作系统对安全性可靠性 要求较高,同时对性能和运算能力的要求也较高。目前在全世界范围内都处于火热的研究发展中,相应的法律法规也在不断完善。

下图为常见车控操作系统架构图:

2.2 车载操作系统

车载操作系统主要面向信息娱乐和智能座舱,主要应用于车机中控系统,对于安全性可靠性的要求处于中等水平,该类操作系统发展迅速,依托于该类操作系统的生态也处于迅速发展时期。

智能座舱通过多屏融合实现人机交互,以液晶仪表、HUD、中控屏及中控车载信息终端、后座 HMI 娱乐屏、车内外后视镜等为载体,实现语音控制、手势操作等更智能化的交互方式。目前很多厂商也正将人工智能、AR、ADAS、VR 等新技术融入其中。

车载操作系统是由不同的座舱电子组合成完整的体系,其向下集成芯片硬件,向上提供开发框架和算法库,支撑用户应用平台的定制开发,从用户端为语音和图像识别等多模人机交互、地图导航、V2X 网联通信、信息安全、 "人-车-路-云"数据融合提供支撑。

作为 Android 应用开发者,我们发力的点也主要在车载操作系统,也是接下来本文介绍的重点。

3 车载操作系统架构分类

车载操作系统的分类可以从以下两个角度:

  1. 应用角度
  2. 软件架构角度

主要看软件架构角度的分类,可分为单系统架构和多系统架构。两类架构均可实现一芯多屏、单屏多系统、一芯多功能单元三类应用。

3.1 单系统架构

单系统架构仅涉及单个车载操作系统的架构,由车载操作系统内核、基础库、基础服务、运行环境及程序运行框架组成。车载操作系统对底层硬件和上层应用程序提供统一的接口,实现车载操作系统与硬件和上层应用程序的解耦。

3.2 多系统架构

多系统架构根据硬件上一层的不同实现又可分为三大类:硬件隔离、虚拟器管理器和容器

  • 硬件隔离(Hardware Partition)架构

将硬件资源通过硬件分区的方式进行划分和管理,硬件资源的所属分区拥有对该资源的访问和管理权限,其他分区不能对该资源进行操作。通过硬件分区的方式对资源进行管理,简化了资源从属和管理问题,方便了软件开发,但灵活性稍差。

  • 虚拟机管理器(Hypervisor)架构

基于虚拟机管理器为每个虚拟机(即车载操作系统单系统)分配不同的资源,可以协调不同芯片、不同芯片底层软件、不同应用层软件,使得硬件和软件资源可以按照产品需求,灵活地在不同的虚拟机操作系统中分配。虚拟机管理器是一种运行在硬件层和操作系统之间的中间软件层,通过限制或允许访问 CPU、内存和外设等片上资源来定义每个单系统可用的功能,而单系统之间完全隔离,某个单系统无法访问未提供给自身的资源。

  • 容器(Container)架构

基于 Linux 内核和容器框架承载 多个应用程序,这些承载应用程序的容器共享底层计算机和操作系统,Linux 内核确保运行在不同容器中的应用程序互相隔离,具有不同的文件系统、网络和存储接口、处理器和内存。容器映像中的文件用作从该映像 创建的容器的只读文件系统,在容器中运行的程序看不到其他文件,且在容器内运行的代码的行为独立于基础系统。

3.3 混合架构

在实际应用中,为平衡功能与安全性的不同要求,通常采用了三类基础架构中的两类或三类组合而成的混合架构,例如,虚拟机管理器 Type-2 + Application 混合架构:

虚拟机管理器在 Type2 的基础上,将虚拟机管理器实现在一个宿主操作系统之上,但该操作系统既可以支持硬件虚拟化及其它单系统运行在其虚拟机管理器之上,又可以运行自身操作系统的功能和应用,并实现与其它单系统间的隔离。

当前国内主流车载操作系统的架构基本都是采用的混合架构:

车载 OS QNX Linux Android Ali OS Harmony OS
内核类型 微内核 宏内核 宏内核 宏内核 宏/微内核
执行方案 编译执行 编译执行 编译/解释混合执行 编译/解释混合执行 编译执行
可扩展性
是否可裁剪
是否开源 部分开源 部分开源
硬件支持
是否具备功能安装证书 AISL-D AISL-D AISL-D

4 主流车载操作系统架构

当前国内主流车载操作系统的架构如下图所示,左侧是汽车的中控、副驾屏幕,操作系统一般是 Android 系统,右侧是汽车的仪表屏幕,一般是 QNX 系统。

架构图中橙色的部分是应用开发可以发挥的部分,主要还是集中在应用层和框架层,与传统的 Android 开发大差不差。

以下主要介绍相比与传统手机 Android 系统,车载系统中新增的一些模块功能:

T-Box(Telematics Box)

T-Box 全称为 Telematics Box (远程通信终端),是汽车上独立于主机之外的一个硬件。它有一套独立的操作系统一般是 Linux 系统,里面内置了一张 SIM 卡,与这个盒子配套的硬件还有 GPS 天线,4G/5G 天线等等,量产后的汽车要实现联网功能必须有 T-Box 设备才能可以。

Ethernet

Ethernet 以太网是一种计算机局域网技术。在汽车座舱中 IVI 硬件与其他硬件间通信有时需要借助以太网来实现,例如:MQTT、HTTP 等。

CAN(Controller Area Network)

CAN 全称为 Controller Area Network(控制器局域网络),是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。 它基于消息传递协议,设计之初在车辆上采用复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。

CAN 是车载领域很重要的一种通信总线,我们在中控屏上可以随时查看、设置车门、发动机、后备箱这些模块,其实就是借助 CAN bus 实现的,即使是 Android 程序员也经常要和它打交道。

MCU(Microcontroller Unit)

MCU 全称为 Microcontroller Unit(微控制器单元),它负责着汽车很大一部分的功能,例如通过车载控制器对各项数据进行分析处理,以做出最优决策;负责对车辆的信息娱乐交互和运动控制等等。

SoC(System on Chip)

SoC 全称为 System on Chip(片上系统)。它是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。

车载 SoC 和常见的手机 SoC 非常类似,内部集成了 CPU 和 GPU。目前最主流的车载 SoC 是高通的 8155,它就是高通在手机 Soc 骁龙 855 的基础上发展而来的。

QNX

QNX 是商业类 Unix 实时操作系统,主要针对嵌入式系统市场。QNX 采取微核心架构,操作系统中的多数功能是以许多小型的 task 来执行,它们被称为 server。这样的架构使得用户和开发者可以关闭不需要的功能,而不需要改变操作系统本身。

QNX 的应用十分广泛,被广泛应用于汽车、轨道交通、航空航天等对安全性、实时性要求较高的领域,在汽车领域的市场占有率极高。

该产品开发于 20 世纪 80 年代初,后来改名为 QNX 软件系统公司,公司已被黑莓公司并购。

Hypervisor

一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做 VMM( virtual machine monitor ),即虚拟机监视器。

目前国内主流的汽车座舱,都是在一个 SOC 上同时运行着两个不同特性的操作系统。对娱乐、应用生态有需求的中控、副驾一般由 Android 系统控制,而对稳定性、安全性要求较高的仪表盘,则由 QNX 系统直接控制,Android 可以看做是一个运行在 QNX 上的虚拟系统,其底层技术原理就是 Hypervisor。

5 Android 车载系统

Android 车载系统,又称 Android Automotive OS ,它是一个基础 Android 平台,可运行预装的 IVI 系统 Android 应用程序以及可选的第二方和第三方 Android 应用程序。

了解 Android Automotive OS 与整个 Android 生态系统的关系非常重要:

  • Android Automotive 是 Android 。 Android Automotive 不是 Android 的分叉或并行开发。它与手机、平板电脑等设备上的 Android 具有相同的代码库和存储库。
  • Android Automotive 扩展了 Android 。在将 Android 构建为功能齐全的信息娱乐平台的过程中,Google 添加了对汽车特定要求、功能和技术的支持。

所以可以说 Android Automotive 是对原始 Android 系统的一个功能扩充版本,在编译 AOSP 源码时也可以看到相应的编译选项。

Android Automotive 编译后的原始界面如下所示,相信有过车载开发经验的同学对这个界面一定不陌生,我们正是在这个界面上把车载 Android 系统一点点搭建起来的。

6 Android 车载应用开发者的未来

Android 车载应用开发者的未来如何?引用 ChatGPT 的一段回答吧。

参考文献

从应用工程师的角度再谈车载

《车载操作系统架构研究报告》

相关推荐
似霰6 分钟前
安卓智能指针sp、wp、RefBase浅析
android·c++·binder
大风起兮云飞扬丶6 分钟前
Android——网络请求
android
干一行,爱一行9 分钟前
android camera data -> surface 显示
android
栈老师不回家15 分钟前
Vue 计算属性和监听器
前端·javascript·vue.js
前端啊龙21 分钟前
用vue3封装丶高仿element-plus里面的日期联级选择器,日期选择器
前端·javascript·vue.js
一颗松鼠25 分钟前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
断墨先生26 分钟前
uniapp—android原生插件开发(3Android真机调试)
android·uni-app
小远yyds1 小时前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js
吕彬-前端2 小时前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱2 小时前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store