Android Automotive
theme: smartblue
Android Automotive
版本變更
| 版本 | 日期 | 修改人 | 描述 | ------------ | ------------ | ------------- | ------------ V1.0 | 2022.06.18 | 越過山風 | Android Automotive
目錄
- Android Automotive概述
- Android Automotive與Android
- Android Automotive與Android Auto
- Android Automotive架構
Android Automotive概述
Android Automotive是直接在車載硬體上執行的Android平臺,預安裝了車機音影片娛樂的應用,以及其他一些第二方以及第三方的Android應用
Android Automotive是由Google在2017年推出的Android平臺的車載資訊娛樂系統(In-Vehicle Infotainment 簡稱IVI),2019年宣佈對第三方開發者開放開發許可權。
Android Automotive汽車子系統之間相互連線,可以通過匯流排拓撲實現了車載音影片娛樂系統的互聯互通。
常見匯流排拓撲如下:
-
CAN(Controller Area Network) 匯流排:控制器區域網絡,ISO國際標準化的序列通訊協議。由德國博世公司開發,最終成為國際標準(ISO 11898)。在北美和西歐,CAN匯流排協議已經成為汽車計算機控制系統的標準匯流排。
-
LIN(Local Interconnect Network) 匯流排:局域網際網路絡,針對汽車分散式電子系統而定義的一種低成本的序列通訊網路,是對CAN等其它汽車多路網路的一種補充,適用於對網路的頻寬、效能或容錯功能沒有過高要求的應用,基於SCI(UART)資料格式,採用單主控制器/多從裝置的模式,是UART中的一種特殊情況。
除此之外,還有面向媒體的系統傳輸 (MOST) 匯流排以及汽車級乙太網和 TCP/IP 網路(如 BroadR-Reach)
同時,Android Automotive通過硬體抽象層(VEHICLE HAL)為Android汽車開發提供了一致的硬體抽象層介面,從而無需過多的考慮物理傳輸層。
正因如此,系統整合供應商可以將平臺特定功能的HAL介面與特定技術的網路介面(如CAN,UART)等介面進行連線,以實現HAL模組功能。
例如,可以通過運行了RTOS實時作業系統的微控制單元MCU,用於進行CAN匯流排訪問或類似操作,然後再通過序列鏈路連線到運行了Android Automotive的CPU。
通過統一的硬體抽象層,每個合作伙伴都可以選擇適合自己的硬體架構。
Android Automotive與Android
Android Automotive與整個Android之間有如下的關係
-
Android Automotive是基於Android平臺。Android Automotive不是Android的分支或者並行開發的分支。與手機和平板電腦等Android裝置使用相同的程式碼庫,可以利用現有的安全模型,開發者工具和基礎架構,並保持了高度的可定製性,可移植行,完全免費提供並且開源。
-
Android Automotive擴充套件了Android平臺,意在打造一個支援車載娛樂的資訊系統,其增加了對汽車的特性,要求及技術的支援,是一個全棧式的車載資訊娛樂開放平臺。
Android Automotive與Android Auto
- Android Auto是在使用者手機上執行的一個互聯投屏子系統,將支援Android Auto的一些手機應用(例如Spotify)及車載資訊娛樂功能(如訊息,通話,媒體,導航)通過USB連線或者無線連線投射到車載資訊娛樂系統進行互動,這裡的車載資訊娛樂系統可以是基於Android平臺的,也可以是基於Linux平臺的,從而複用了手機上的部分功能。Android Auto 支援為汽車投屏開發設計手機端的應用程式。
- Android Automotive是一個基於車載硬體直接執行的,開源的,高可定製的作業系統和平臺,為資訊娛樂提供強大的技術支援。Android Automotive 支援通過Android開發車機端的應用程式。
Android Automotive架構
Android Automotive架構如上圖,簡單說明如下
-
CAR API:Android Automotive 汽車Framework層面向汽車APP開發特有的介面,該API類似於Android原生的Framework API,以
android.car.jar
提供給APP使用,對應的程式碼詳見:/platform/packages/services/Car/car-lib
-
CAR SERVICE:Android Automotive 汽車系統核心服務,實現了系統中與車相關的服務,對應的程式碼詳見
/platform/packages/services/Car/
-
VEHICLE HAL: 車載HAL,定義了OEM可以實現的車輛屬性的介面,定義詳見
hardware/libhardware/include/hardware/vehicle.h
, 其實現詳見hardware/libhardware/modules/vehicle/