Présentation de la couche d'abstraction matérielle (HAL)

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Dans Android 8.0 et versions ultérieures, les couches de niveau inférieur sont réécrites pour adopter une nouvelle architecture plus modulaire. Les appareils exécutant Android 8.0 et versions ultérieures doivent prendre en charge les HAL écrits en HIDL, à quelques exceptions près répertoriées ci-dessous. Ces HAL peuvent être bindérisés ou passthrough. Dans Android 11, les HAL écrits en AIDL sont également pris en charge. Tous les AIDL HAL sont liants.

  • HAL bindérisés . HAL exprimés en langage de définition d'interface HAL (HIDL) ou en langage de définition d'interface Android (AIDL). Ces HAL remplacent les HAL conventionnels et hérités utilisés dans les versions antérieures d'Android. Dans un HAL binderisé, le framework Android et les HAL communiquent entre eux à l'aide d'appels de communication inter-processus (IPC) de classeur. Tous les appareils lancés avec Android 8.0 ou version ultérieure doivent uniquement prendre en charge les HAL binderisés.

  • Passthrough HAL . HAL classiques ou hérités enveloppés dans HIDL Ces HAL enveloppent les HAL existantes et peuvent servir la HAL en modes binderized et même processus (passthrough). Les appareils mis à niveau vers Android 8.0 peuvent utiliser des HAL de relais.

Exigences du mode HAL

Dispositif Traverser Lié
Lancement avec Android 8.0 Les HAL répertoriées dans Passthrough HALs doivent être passthrough. Toutes les autres HAL sont liées (y compris les HAL qui sont des extensions de fournisseur).
Passez à Android 8.0 Les HAL répertoriées dans Passthrough HALs doivent être passthrough. Les HAL listés dans les HAL bindérisés doivent être bindérisés.
Tous les autres HAL fournis par l'image du fournisseur peuvent être en mode passthrough OU binderized. Dans un appareil entièrement compatible Treble, tous ces éléments doivent être liants.

HAL bindérisés

Android nécessite que les HALS suivants soient bindérisés sur tous les appareils Android, qu'il s'agisse d'appareils de lancement ou de mise à niveau :

  • android.hardware.biometrics.fingerprint@2.1 . Remplace `fingerprintd qui n'est plus dans Android 8.0.
  • android.hardware.configstore@1.0 . Nouveau dans Android 8.0.
  • android.hardware.dumpstate@1.0 . L'interface d'origine fournie par cette HAL n'a pas pu être calée et a été modifiée. Pour cette raison, dumpstate_board doit être réimplémenté sur un périphérique donné (il s'agit d'un HAL facultatif).
  • android.hardware.graphics.allocator@2.0 . Requis pour être lié dans Android 8.0 afin que les descripteurs de fichiers n'aient pas à être partagés entre les processus approuvés et non approuvés.
  • android.hardware.radio@1.0 . Remplace l'interface fournie par rild qui vit dans son propre processus.
  • android.hardware.usb@1.0 . Nouveau dans Android 8.0.
  • android.hardware.wifi@1.0 . Nouveau dans Android 8.0, remplace l'ancienne bibliothèque Wi-Fi HAL chargée dans system_server
  • android.hardware.wifi.supplicant@1.0 . Une interface HIDL sur le processus wpa_supplicant existant.

HAL de relais

Android nécessite que les HAL suivants soient en mode passthrough sur tous les appareils Android, qu'il s'agisse d'appareils de lancement ou de mise à niveau :

  • android.hardware.graphics.mapper@1.0 . Mappe la mémoire dans le processus dans lequel elle vit.
  • android.hardware.renderscript@1.0 . Passe des éléments dans le même processus (équivalent à openGL ).

Tous les HAL non répertoriés ci-dessus doivent être bindérisés pour les dispositifs de lancement.

HAL de même processus

Les HAL de même processus (SP-HAL) s'ouvrent toujours dans le même processus dans lequel elles sont utilisées. Ils incluent tous les HAL non exprimés en HIDL ainsi que certains qui ne sont pas liants. L'adhésion à l'ensemble SP-HAL est contrôlée uniquement par Google, sans exception.

Les SP-HAL incluent les éléments suivants :

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (fourni par le système Android, toujours passthrough)
  • android.hardware.graphics.mapper@1.0</code>
  • android.hardware.renderscript@1.0