HAL (Hardware-Abstraktionsschicht) – Übersicht

Eine Hardwareabstraktionsschicht (HAL) ist eine Art Abstraktionsschicht mit einer Standardschnittstelle für Hardwareanbieter implementieren. Ein HAL ermöglicht Hardware, Anbietern untergeordneter, gerätespezifischer Funktionen zu implementieren, ohne und den Code auf höheren Ebenen ändern.

Erforderliche Begriffe

Im Folgenden finden Sie eine Liste mit Definitionen der in diesem Abschnitt der Dokumentation:

Android Interface Definition Language (AIDL)
Eine Java-ähnliche Sprache, mit der Schnittstellen unabhängig von der verwendeten Programmiersprache. AIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Diensten.
Binderisiertes HAL
Ein HAL, der mit anderen Prozessen kommuniziert mit Binder Inter-Process Communication (IPC) Anrufe. Gebundene HALs werden in einem anderen Prozess ausgeführt als der Client, der sie verwendet. Gebundene HALs werden bei einem Dienstmanager registriert, damit Clients auf ihre Fähigkeiten zugreifen können. Für Android 8 und höher geschriebene HALs sind zu binden.
HAL-Client
Der Prozess, der auf den HAL-Dienst zugreift.
HAL-Schnittstelle
Die gemeinsame Schnittstelle, über die sowohl der HAL-Client als auch der Dienst kommunizieren.
HAL-Dienst

Den hardwarespezifischen Code, etwa den Code, der eine spezifische in die Kamera des Geräts. Sie müssen alle erforderlichen HALs implementieren, die in der Kompatibilitätsmatrix für den Release, den Sie in Ihrer Anbieterpartition auswählen. 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, die besonderen Funktionen Ihrer Hardware.

Hardware Interface Definition Language (HIDL)

Eine Sprache, mit der Schnittstellen unabhängig vom Programmiersprache. HIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Dienste.

HAL (Same Process, SP)

Ein eingeschränkter Satz verpackter HALs. Die Mitgliedschaft im Satz wird durch Google. Zu den SP HALs gehören:

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

Ein HAL-Dienst, der vor Android 8 erstellt wurde, aber in eine AIDL- oder HIDL-Wrapper für Android 8 und höher.

Wie geht es weiter?