HAL(하드웨어 추상화 계층) 개요

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Android 8.0 이상에서는 더 많은 모듈식 새 아키텍처를 채택하기 위해 하위 수준 레이어가 다시 작성됩니다. Android 8.0 이상을 실행하는 기기는 아래 나열된 몇 가지 예외를 제외하고 HIDL로 작성된 HAL을 지원해야 합니다. 이러한 HAL은 바인더화되거나 통과될 수 있습니다. Android 11에서는 AIDL로 작성된 HAL도 지원됩니다. 모든 AIDL HAL은 바인더화됩니다.

  • 바인더화 HAL . HAL 인터페이스 정의 언어(HIDL) 또는 Android 인터페이스 정의 언어(AIDL)로 표현된 HAL입니다. 이러한 HAL은 이전 버전의 Android에서 사용된 기존 HAL과 레거시 HAL을 모두 대체합니다. 바인더화된 HAL에서 Android 프레임워크와 HAL은 바인더 IPC(프로세스 간 통신) 호출을 사용하여 서로 통신합니다. Android 8.0 이상으로 실행되는 모든 기기는 바인더화된 HAL만 지원해야 합니다.

  • 패스스루 HAL . HIDL로 래핑된 일반 또는 레거시 HAL 이러한 HAL은 기존 HAL을 래핑하고 바인더화 및 동일 프로세스(통과) 모드에서 HAL을 제공할 수 있습니다. Android 8.0으로 업그레이드하는 기기는 패스스루 HAL을 사용할 수 있습니다.

HAL 모드 요구 사항

장치 지나가 다 결합제
Android 8.0으로 실행 패스스루 HAL 에 나열된 HAL은 패스스루여야 합니다. 다른 모든 HAL은 바인더화됩니다(공급업체 확장인 HAL 포함).
안드로이드 8.0으로 업그레이드 패스스루 HAL 에 나열된 HAL은 패스스루여야 합니다. 바인더화 HAL에 나열된 HAL 은 바인더화되어야 합니다.
공급업체 이미지에서 제공하는 다른 모든 HAL은 패스스루 또는 바인더화 모드일 수 있습니다. 완전한 Treble 호환 장치에서는 이들 모두를 바인더화해야 합니다.

바인더화된 HAL

Android에서는 실행 장치인지 업그레이드 장치인지에 관계없이 모든 Android 장치에서 다음 HALS를 바인더화해야 합니다.

  • android.hardware.biometrics.fingerprint@2.1 . 더 이상 Android 8.0에 없는 `fingerprintd를 대체합니다.
  • android.hardware.configstore@1.0 . 안드로이드 8.0의 새로운 기능.
  • android.hardware.dumpstate@1.0 . 이 HAL에서 제공하는 원래 인터페이스는 shimmed할 수 없으며 변경되었습니다. 이 때문에 dumpstate_board 는 지정된 기기에서 다시 구현해야 합니다(이는 선택적 HAL임).
  • android.hardware.graphics.allocator@2.0 . 신뢰할 수 있는 프로세스와 신뢰할 수 없는 프로세스 간에 파일 설명자를 공유할 필요가 없도록 Android 8.0에서 바인더화해야 합니다.
  • android.hardware.radio@1.0 . 자체 프로세스에 있는 rild 에서 제공하는 인터페이스를 대체합니다.
  • android.hardware.usb@1.0 . 안드로이드 8.0의 새로운 기능.
  • android.hardware.wifi@1.0 . Android 8.0의 새로운 기능으로 system_server 에 로드된 레거시 Wi-Fi HAL 라이브러리를 대체합니다.
  • android.hardware.wifi.supplicant@1.0 . 기존 wpa_supplicant 프로세스에 대한 HIDL 인터페이스.

통과 HAL

Android에서는 출시 기기인지 업그레이드 기기인지에 관계없이 모든 Android 기기에서 다음 HAL이 패스스루 모드에 있어야 합니다.

  • android.hardware.graphics.mapper@1.0 . 메모리가 상주하는 프로세스에 매핑합니다.
  • android.hardware.renderscript@1.0 . 동일한 프로세스에서 항목을 전달합니다( openGL 과 동일).

위에 나열되지 않은 모든 HAL은 실행 기기용으로 바인더화되어야 합니다.

동일 프로세스 HAL

동일 프로세스 HAL(SP-HAL)은 항상 사용되는 동일한 프로세스에서 열립니다. 여기에는 HIDL로 표현되지 않은 모든 HAL과 바인더화되지 않은 일부 HAL이 포함됩니다. SP-HAL 집합의 멤버십은 예외 없이 Google에서만 제어합니다.

SP-HAL에는 다음이 포함됩니다.

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (Android 시스템에서 제공, 항상 통과)
  • android.hardware.graphics.mapper@1.0</code>
  • android.hardware.renderscript@1.0