借助各种总线拓扑,很多汽车子系统都可以实现互连以及与车载信息娱乐 (IVI) 系统的连接。不同的制造商提供的确切总线类型和协议之间有很大差异(甚至同一品牌的不同车型之间也是如此),例如控制器局域网 (CAN) 总线、区域互连网路 (LIN) 总线、面向媒体的系统传输 (MOST) 总线以及汽车级以太网和 TCP/IP 网络(如 BroadR-Reach)。
Android Automotive 的硬件抽象层 (HAL) 为 Android 框架提供了一致的接口(无需考虑物理传输层)。此车载 HAL 是开发 Android Automotive 实现的接口。
系统集成商可以将特定于功能的平台 HAL 接口(如 HVAC)与特定于技术的网络接口(如 CAN 总线)连接,以实现车载 HAL 模块。典型的实现可能包括运行专有实时操作系统 (RTOS) 的专用微控制器单元 (MCU),该微控制器单元用于 CAN 总线访问或类似操作,可通过串行链路连接到运行 Android Automotive 的 CPU。除了专用 MCU,还可以将总线访问作为虚拟 CPU 来实现。只要实现符合车载 HAL 的接口要求,每个合作伙伴都可以选择适合硬件的架构。
架构
车载 HAL 是汽车与车辆网络服务之间的接口定义:
- Car API:内有包含
CarSensorManager
在内的 API。如需详细了解受支持的 API,请参阅/platform/packages/services/Car/car-lib
。 - CarService:位于
/platform/packages/services/Car/
。 - 车载 HAL:用于定义 OEM 可以实现的车辆属性的接口。包含属性元数据(例如,车辆属性是否为 int 以及允许使用哪些更改模式)。位于
hardware/libhardware/include/hardware/vehicle.h
。如需了解基本参考实现,请参阅hardware/libhardware/modules/vehicle/
。
如需了解详情,请参阅车辆属性。
安全性
车载 HAL 支持以下级别的数据访问安全性:
- 允许拥有权限的应用访问(通过汽车服务)
- 无需任何权限即可访问(通过汽车服务)
仅允许已连接具有 SELinux 访问保护功能的车辆网络的部分系统组件直接访问车辆属性。大多数应用需通过汽车服务的额外把关(例如,只有系统应用可以控制 HVAC,因为这需要仅授予系统应用的系统权限)。