Automotive

Android 車両 HAL アイコン

自動車の多くのサブシステムは、さまざまなバストポロジを介して、他のサブシステムや車載インフォテインメント(IVI)システムと相互に接続しています。正確なバスの種類とプロトコルは、メーカーによって(同じブランドの車種によっても)大きく異なります。Controller Area Network(CAN)バス、Local Interconnect Network(LIN)バス、Media Oriented Systems Transport(MOST)、BroadR-Reach などの車載グレードのイーサネットや TCP/IP ネットワークなどがあります。

Android Automotive ハードウェア抽象化レイヤ(HAL)は、物理トランスポート レイヤに関係なく、Android フレームワークに対する一貫したインターフェースを提供します。この車両 HAL は、Android Automotive の実装を開発するためのインターフェースです。

システム インテグレータは、機能固有のプラットフォームの HAL インターフェース(HVAC など)を、技術固有のネットワーク インターフェース(CAN バスなど)に接続することで、車両 HAL モジュールを実装できます。一般的な実装には、CAN バスアクセスなどのための独自のリアルタイム オペレーティング システム(RTOS)を実行する専用のマイクロコントローラ ユニット(MCU)を含めることができ、シリアルリンクを介して Android Automotive を実行する CPU に接続できます。専用の MCU の代わりに、仮想 CPU としてバスアクセスを実装することもできます。実装が車両 HAL のインターフェース要件を満たしている限り、各パートナーの判断でハードウェアに適したアーキテクチャを選択できます。

アーキテクチャ

車両 HAL は、自動車と車両ネットワーク サービス間のインターフェースの定義です。

Android の車両 HAL アーキテクチャ

図 1. 車両 HAL と Android の自動車向けアーキテクチャ

  • 自動車 APICarSensorManager などの 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 の制御にはシステムアプリのみに付与されているシステム権限が必要なため、システムアプリのみが HVAC を制御できます。