AAOS 架构图

241 阅读3分钟

架构图

image.png image.png

🗂️ 架构分层详解

1. 应用层 (Applications)

这是用户直接交互的层面,包含三类应用:

• ​​系统应用​​:AAOS 自带的默认应用,如启动器(Launcher)、车辆设置、空调控制、收音机等。汽车制造商(OEM)可以定制这些应用。

• ​​汽车专用应用​​:使用 ​​Android Jetpack Car App Library​​ 开发的第三方应用,这些应用遵循车载环境的特定设计规范,确保驾驶安全。

• ​​第三方应用​​:通过​​汽车版 Play 商店​​下载的常见 Android 应用(如音乐、播客、导航应用),但它们必须通过汽车兼容性测试。

2. Java API 框架 & 系统服务层

这是 Android 的核心,为应用提供 API。

• ​​Car API​​:这是 AAOS 与标准 Android 最大的不同之处。它提供了一组用于和车辆硬件交互的​​专属 API​​,例如:

- `CarVehicleProperties`:访问车辆属性(车速、油耗、里程、车门状态等)。
- `CarHVAC`:控制空调和加热系统。
- `CarInfo`:获取车辆信息(VIN码、车型等)。
- `CarDiagnostic`:读取诊断信息。

• ​​Car Service​​:系统中最重要的服务之一。它作为​​桥梁​​,连接着上层的应用和底层的车辆硬件。

- 应用调用 Car API 的请求会由 Car Service 处理。
- Car Service 通过 ​**​Vehicle HAL​**​ 与车辆总线通信。
-**​Android 系统服务​**​:标准 Android 的服务,如音频管理(AudioManager)、电源管理(PowerManager)、图形显示(SurfaceFlinger)等,它们都经过了车载环境的适配和增强。

3. 硬件抽象层 (HAL - Hardware Abstraction Layer)

HAL 定义了标准接口,允许更高级别的系统服务无需关心底层硬件的具体实现。

-**​车辆 HAL (VHAL)​**​:​**​AAOS 架构中最关键的一层​**​。它由 Google 定义,是 Car Service 与车辆网络(如 CAN总线)之间的​**​标准化接口​**​。
-**​OEM 的责任​**​:汽车制造商(OEM)或其供应商​**​必须根据 VHAL 接口实现具体的驱动​**​,将车辆信号(如车速、车门开关)映射到 VHAL 定义的属性上。
- 这样,上层应用无需关心车辆是哪个品牌或使用哪种网络协议,只需通过统一的 Car API 即可访问车辆数据。

4. 底层系统层

​Android Linux Kernel​​:AAOS 使用与手机类似的 Linux 内核,但包含了许多​​针对汽车的定制和优化​​,例如:

- 支持汽车特有的硬件(如 CAN 总线控制器、TPMS传感器)。
- 增强的电源管理,支持多种休眠和唤醒模式。
- 严格的安全性和权限控制。
-**​引导程序、设备驱动等​**​:启动系统和与硬件交互的基础。

5. 硬件层

-**​车辆网络​**​:如 ​**​CAN​**​、​**​LIN​**​、​**​MOST​**​、​**​ Automotive Ethernet​**​ 等。车辆上的各种电子控制单元(ECU)通过这些网络进行通信。
-**​汽车硬件​**​:​**​System-on-Chip (SoC)​**​(如高通、英特尔等提供的车规级芯片)、显示屏、麦克风阵列、扬声器、GPS接收器等。

⚠️ 重要注意事项

  1. ​与 Android Auto 的区别​​:

    • ​Android Auto​​ 是一个“投影”系统。你的手机是主机,将应用界面“投射”到车机屏幕上。
    • ​Android Automotive OS​​ 是一个​​完整的、嵌入在汽车里的操作系统​​。车机本身就是一台运行 Android 的计算机,无需手机即可独立运行所有应用。
  2. ​OEM 定制​​:虽然 AAOS 由 Google 提供基础框架,但汽车制造商(OEM)拥有极大的定制权,包括:

    • 实现 VHAL。
    • 定制系统应用(启动器、设置、空调控制等)的UI和功能。
    • 定义自己的车辆属性和服务。
    • 预装自己的应用或选择的第三方应用。
  3. ​安全性​​:AAOS 继承了 Android 的安全模型(如权限控制、沙箱机制),并针对汽车环境进行了强化,确保对关键车辆功能的访问受到严格限制。