자동차

Android 차량 HAL 아이콘

많은 차량 하위 시스템이 다양한 버스 토폴로지를 통해 상호 연결되어 있으며 IVI(차량용 인포테인먼트 시스템) 시스템과 연결되어 있습니다. 정확한 버스 유형과 프로토콜은 제조업체마다 다르며 심지어 동일한 브랜드의 다른 차량 모델 간에도 차이가 있습니다. 예를 들어 CAN(계측 제어기 통신망) 버스, LIN(차량용 직렬 통신망) 버스, MOST(Media Oriented Systems Transport), BroadR-Reach와 같은 차량용 이더넷 및 TCP/IP 네트워크가 있습니다.

Android Automotive HAL(하드웨어 추상화 계층)은 물리적 전송 레이어와 상관없이 Android 프레임워크에 일관된 인터페이스를 제공합니다. 이 차량 HAL은 Android Automotive 구현을 개발하기 위한 인터페이스입니다.

시스템 통합자는 기능별 플랫폼 HAL 인터페이스(예: HVAC)를 기술 전용 네트워크 인터페이스(예: CAN 버스)와 연결하여 차량 HAL 모듈을 구현할 수 있습니다. 일반적인 구현에는 CAN 버스 액세스 또는 그와 유사한 용도로 RTOS(독점적 실시간 운영체제)를 실행하는 전용 MCU(Microcontroller Unit)를 포함하고 있을 수 있으며, MCU는 직렬 링크를 통해 Android Automotive를 실행하는 CPU에 연결될 수 있습니다. 전용 MCU 대신 버스 액세스를 가상화된 CPU로 구현할 수도 있습니다. 구현이 차량 HAL의 인터페이스 요구사항을 충족하는 경우 하드웨어에 적합한 아키텍처를 선택하는 것은 각 파트너의 책임입니다.

아키텍처

차량 HAL은 자동차와 차량 네트워크 서비스 간의 인터페이스 정의입니다.

Android 차량 HAL 아키텍처

그림 1. 자동차 HAL 및 Android 자동차 아키텍처

  • 자동차 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은 데이터에 액세스할 때 다음의 보안 수준을 지원합니다.

  • 권한이 있는 앱에 액세스할 수 있음(Car Service를 통해)
  • 권한 없이 액세스할 수 있음(Car Service를 통해)

차량 속성에 직접 액세스하는 것은 selinux 액세스 보호가 적용된 차량 네트워크가 있는 일부 시스템 구성요소에만 허용됩니다. 대부분의 애플리케이션은 Car Service의 추가 게이트키핑을 거칩니다. 예를 들어 HVAC는 시스템 앱에만 부여된 시스템 권한을 필요로 하기 때문에 시스템 애플리케이션만 HVAC를 제어할 수 있습니다.