Android Car automotive解析

--------本文摘自google官方關于automotive架構講解內容。轉載請注明出處。---------

借助各種總線拓撲,很多汽車子系統都可以實現互連以及與車載信息娛樂 (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是汽車與車輛網絡服務之間的接口定義:

圖1.車載HAL與Android Automotive架構

如下是對相關類的解析:

  • Car API:包含 CarHvacManager 和 CarSensorManager 等 API。如需詳細了解受支持的 API,請參閱 /platform/packages/services/Car/car-lib。

  • CarService:位于 /platform/packages/services/Car/。

  • VehicleNetworkService:通過內置安全機制控制車載 HAL。僅限訪問系統組件(第三方應用等非系統組件需使用 Car API)。原始設備制造商 (OEM) 可以通過 vns_policy.xml 和 vendor_vns_policy.xml 控制訪問權限。位于 /platform/packages/services/Car/vehicle_network_service/;要查看用于訪問車輛網絡的庫,請參閱 /platform/packages/services/Car/libvehiclenetwork/。

  • 車載 HAL:定義 OEM 可以實現的車輛屬性的接口。包含屬性元數據(例如,車輛屬性是否為 int 以及允許使用哪些更改模式)。位于 hardware/libhardware/include/hardware/vehicle.h。要了解基本參考實現的相關信息,請參閱 hardware/libhardware/modules/vehicle/。

有關更多詳情,請參閱車輛屬性

安全性

車載 HAL 支持 3 個級別的數據訪問安全性:

  • 僅限系統(由 vns_policy.xml 控制)

  • 允許擁有權限的應用訪問(通過汽車服務)

  • 無需任何權限即可訪問(通過汽車服務)

僅允許部分系統組件直接訪問車輛屬性,而車輛網絡服務是把關程序。大多數應用需通過汽車服務的額外把關(例如,只有系統應用可以控制 HVAC,因為這需要僅授予系統應用的系統權限)。

驗證

AOSP 包含開發過程中使用的以下測試資源:

  • hardware/libhardware/tests/vehicle/vehicle-hal-tool.c
    加載車載 HAL 并執行簡單操作的命令行原生工具。它有助于系統在開發的早期階段啟動并運行。

  • packages/services/Car/tests/carservice_test/
    包含使用模擬車載 HAL 屬性進行的汽車服務測試。每個屬性的預期行為都會在測試中實現,這是了解預期行為的絕佳起點。

  • hardware/libhardware/modules/vehicle/
    基本參考實現。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容