系统架构
DCD
📷 [图片: 系统架构总览图 — DCD 整体架构(readonly diagram block, id=doxcnrbzEoYjXxKhLS9yEP4C7hb)]
名词解释
T-Box
T-Box 又称 TCU,是汽车上独立于主机之外的一个硬件,英文叫 Telematics Box(远程通信终端),它有一套独立的操作系统一般是 Linux 系统,它里面内置了一张 SIM 卡,与这个盒子配套的硬件还有 GPS 天线、4G/5G 天线等等,量产后的汽车要实现联网功能必须有 T-Box 设备才可以。
BMS
电池管理系统。
以太网
以太网(Ethernet),是一种计算机局域网技术。也是移动应用开发者天天都会打交道的东西。在汽车座舱中硬件间的相互通信有时需要借助以太网来实现,例如:T-Box 与车机、中控系统间的通信就是基于以太网实现的。
它常用的通信协议有 MQTT、HTTP 以及 SOME/IP 等等。
CAN
控制器局域网(Controller Area Network,简称 CAN 或者 CAN bus)是一种功能丰富的车用总线标准。被设计用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信。它基于消息传递协议,设计之初在车辆上采用复用通信线缆,以降低铜线使用量,后来也被其他行业所使用。例如一些超市的电动卷闸门控制系统,也有使用 CAN 进行通信的。
CAN 是车载领域很重要的一种通信总线,我们在中控屏上查看、设置车门、发动机、后备箱这些模块,其实就是借助 CAN bus 实现的,即使是 Android 程序员也经常会和它打交道。详情见:http://www.360doc.com/content/22/1030/15/80174008_1053887982.shtml
SOC
SoC 的定义非常多,一般可以理解为单片系统或片上系统,是一个将电脑或其他电子系统集成到单一芯片的集成电路。更通俗地来讲,我们可以把它理解为 CPU + GPU 的一种嵌入式芯片组合。
车载 Soc 和手机 Soc 基本类似。目前最主流的车载 Soc 是高通的骁龙 8155 芯片,下一代的 8295 芯片也由集度汽车实现了首发,鸿蒙座舱的 Soc 多数使用华为的麒麟 990A 芯片,不过也有车企开始更换为双 8155 的芯片组合。
MCU
单片机,全称单片微型计算机,又称微控制器单元(microcontroller unit),是把中央处理器、存储器、定时/计数器(timer/counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。
常见的车机开发板上一般同时包含一个 SOC 和一个 MCU,二者之间通过串口通信,协同工作。SOC 擅长处理多媒体信息,负责渲染用户界面以及控制音视频播放等等。MCU 的性能比较差,但是相对的功耗很低,实时性好,负责电源和车辆的信号控制。
AutoSAR
Adaptive AutoSAR 是一种适用于高级自动驾驶的软件架构平台,主要提供高性能的计算和通信,提供灵活的软件配置,支撑应用的更新。
Adaptive AutoSAR 的主要架构分为硬件层、ARA(AutoSAR Run-time For Adaptive 实时运行环境)以及应用层。
应用层包含的应用程序模块(AA)运行在 ARA 之上,每个 AA 以独立的进程运行。ARA 由功能集群提供的应用接口组成,它们属于自适应平台。自适应平台提供 Adaptive AutoSAR 的基本功能和标准服务。
每个 AA 可以向其他 AA 发送服务。基于这种架构,整车的功能之间可以解耦。
SOA
SOA(Service-Oriented Architecture)是一种基于业务实现的粗粒度松耦合的面向服务的分布式架构,既实现业务和技术的分离,又实现业务和技术的自由组合。
以位置服务为例,很多车内应用会用到位置信息,像天气、拍照、导航,这些应用根据自身服务有不同的需求,对位置信息的处理各不相同,SOA 就可以很好地解决这个问题。
SOA 原本是服务器开发中用到的技术,现如今也被用在车载操作系统领域,但是目前关于 SOA 的技术规范比较混乱,国内外主机厂商对于 SOA 的实现方式也有区别。
SOA 并不是车载操作系统必须的,其实目前为止已经上市的车型中很少采用了 SOA 架构,所以它还只是车载操作系统未来的一个发展方向。
Hypervisor
虚拟机管理器,是一种运行在硬件层和操作系统之间的中间软件层,是用来创建与执行虚拟机的软件。
Hypervisor 包含两种类型:裸机型和宿主型。
-
裸机型
裸机型 Hypervisor 最常见,直接安装在硬件资源之上,操作系统安装并运行在 Hypervisor 之上。
目前常见的虚拟机管理器就包括黑莓的 QNX 和英特尔的 ACRN 等等,还有很多。
-
宿主型
宿主型,又称基于操作系统的虚拟化。将虚拟化层安装在主机操作系统中,虚拟化软件以应用程序进程形式运行在主机操作系统中,而主机操作系统运行在物理硬件之上。
QNX
QNX 最初应用在仪表上,是第一个符合 ISO 26262 ASIL D 规范的实时操作系统,它能满足数字化仪表盘功能性安全的要求,同时也满足数据安全要求,通过了美国军方的 EAL4+,目前 QNX 由黑莓公司持有。
QNX 的应用范围非常广,从汽车到核电站、以及无人作战坦克的控制系统都有涉及。
因为 QNX 并不开源,针对 QNX 开发是需要支付一定的商业授权费用的。
Linux
Linux 是基于社区开源模式的多用户、多任务、支持多线程和多 CPU 的分时操作系统,因为 Linux 是在 GNU 公共许可权限下免费获得的,无需商业授权费用,用户可自主定制,开发成本相对较低。正因为开源,Linux 系统开发工具非常丰富,几乎所有应用芯片都支持 Linux。Linux 系统上的程序是编译执行的,执行效率比较高。
但是,Linux 内核复杂度较高,Linux V4.19 的内核代码有一千七百多万行,而且还在持续增长。正因如此,在安全性和启动速度等方面,Linux 要落后于 QNX。针对汽车的应用场景,AGL(Automotive Grade Linux)和 GENIVI 都在极力打造 Linux 生态系统,以加速 Linux 在车载系统上的应用。
Android
Android 车载操作系统基于 Linux 内核,主要功能模块集中在用户空间,在 Linux 内核中仅增加了用于进程间通信的 Binder 和用于内存共享的 ION,其突出优点是应用生态。Android 应用程序在 Android 虚拟机里是解释执行的,相对于编译执行来说,执行效率较低。
Google 于 2019 年开放了 Android Automotive,原本为移动互联设备开发的 Android 应用生态可迁移到 Android Automotive。
目前,Tier1 和车企多数都是基于 Android 自研车载操作系统。
ROM
只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM 所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM 所存数据稳定,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。在 Android 领域,ROM 有了更加丰富的意义,一般表示系统定制。
BSP
板级支持包(BSP,Board Support Package)是构建嵌入式操作系统所需的引导程序(Bootloader)、内核(Kernel)、根文件系统(Rootfs)和工具链(Toolchain)的完整软件资源包。
Vehicle HAL
汽车硬件抽象层,这是车载 Android 系统新增的硬件抽象层,它的作用是定义标准接口,让 CarService 可以忽略各个汽车厂商的具体实现。也就是说 CarService 负责调用 Vehicle HAL 定义的接口,而 Android Automotive OS 中 Vehicle HAL 并没有具体的实现细节,所以 Vehicle HAL 需要汽车制造商或芯片厂商来实现。
Dashboard & HUD
汽车仪表盘与抬头显示。
架构方案概述
- 针对安全可靠和应用生态诉求,采用多系统架构模式。QNX 由于实时安全可靠,实现仪表盘;Android 系统提供丰富的应用生态和强大的功能,满足用户信息和娱乐需求。
- 通信采用 CAN 事件总线和车载以太网,满足大流量高实时的通信诉求。
- Android ROM 定制打造小米汽车专属汽车系统。
车载应用分类
📷 [图片: 车载应用分类思维导图 — 应用类型分支总览(mindnote block, id=doxcnZxgzMZ03yUtxStsqKrtbch, token=DdNgbiqfomXByfnJBZRcRissnid)]
📥 抓取自飞书 wiki 空间 7541192071952990209,obj_token: Pp2jdmT7ToLNdHxJX3Uc8gdUnQf