HAL (Hardware-Abstraktionsschicht) – Übersicht

Eine Hardwareabstraktionsschicht (HAL) ist eine Art Abstraktionsschicht mit einer Standardschnittstelle, die Hardwareanbieter implementieren können. Mit einer HAL können Hardwareanbieter gerätespezifische Funktionen auf niedriger Ebene implementieren, ohne den Code in höheren Schichten zu beeinflussen oder zu ändern.

Erforderliche Bedingungen

Im Folgenden finden Sie eine Liste der Definitionen für Begriffe, die in diesem Abschnitt der Dokumentation verwendet werden:

Android Interface Definition Language (AIDL)
Eine Java-ähnliche Sprache, mit der Schnittstellen unabhängig von der verwendeten Programmiersprache definiert werden. AIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Diensten.
Binderisiertes HAL
Eine HAL, die mit anderen Prozessen über Binder-IPC-Aufrufe (Inter-Process Communication) kommuniziert. Binderisierte HALs werden in einem separaten Prozess vom Client ausgeführt, der sie verwendet. gebundene HALs sind bei einem Dienstmanager registriert, damit Clients auf ihre Funktionen zugreifen können. HALs, die für Android 8 und höher geschrieben sind, werden in Bindestriche geschrieben.
HAL-Client
Der Prozess, der auf den HAL-Dienst zugreift.
HAL-Schnittstelle
Die gemeinsame Schnittstelle, die sowohl vom HAL-Client als auch vom Dienst zur Kommunikation verwendet wird.
HAL-Dienst

Der hardwarespezifische Code, z. B. der Code, der zur Kamera Ihres Geräts führt. Sie müssen alle erforderlichen HALs, die in der Kompatibilitätsmatrix für den ausgewählten Release aufgeführt sind, in Ihre Anbieterpartition implementieren. Weitere Informationen zu Kompatibilitätsmatrizen finden Sie unter Kompatibilitätsmatrizen.

Sie können auch eine neue HAL-Schnittstelle erstellen oder die Schnittstelle einer HAL erweitern, um die einzigartigen Funktionen Ihrer Hardware zu unterstützen.

Hardware Interface Definition Language (HIDL)

Eine Sprache, mit der Oberflächen unabhängig von der verwendeten Programmiersprache definiert werden. HIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Diensten.

Same Process (SP) HAL

Eine eingeschränkte Anzahl von verpackten HALs. Die Mitgliedschaft im Set wird von Google verwaltet. Zu den SP-HALs gehören:

  • Stabile C-Mapper 5 HAL
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (vom Android-System bereitgestellt, immer gekapselt)
  • android.hardware.renderscript@1.0
Verpackte HAL

Ein HAL-Dienst, der vor Android 8 erstellt wurde, aber in einen AIDL- oder HIDL-Wrapper gewickelt wurde, um mit Android 8 und höher zu funktionieren.

Wie geht es weiter?