自動車

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 の自動車向けアーキテクチャ

  • 自動車 API。CarHvacManager や CarSensorManager などの API が含まれます。サポートされる API の詳細については、/platform/packages/services/Car/car-lib をご覧ください。
  • CarService/platform/packages/services/Car/ にあります。
  • VehicleNetworkService。ビルトイン セキュリティで車両 HAL を制御します。アクセスできるのはシステム コンポーネントのみです(サードパーティ製アプリなどの非システム コンポーネントでは、代わりに自動車 API を使用する必要があります)。OEM は、vns_policy.xmlvendor_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 の制御にはシステムアプリのみに付与されているシステム権限が必要なため、システムアプリのみが HVAC を制御できます。

検証

AOSP には、開発に使用する次のテストリソースが含まれています。

  • hardware/libhardware/tests/vehicle/vehicle-hal-tool.c
    車両 HAL を読み込み、シンプルな操作を実行するためのコマンドライン ネイティブなツール。開発の初期段階でシステムを稼働させるのに便利です。
  • packages/services/Car/tests/carservice_test/
    モックされた車両 HAL のプロパティを使用した自動車サービスのテストが含まれます。プロパティごとに、想定される動作がテストで実装されます。これは想定される動作を理解するための出発点として適しています。
  • hardware/libhardware/modules/vehicle/
    基本的なリファレンス実装。