Обзор аппаратно-зависимого уровня (HAL)

Уровень абстрагирования оборудования (HAL) – это тип уровня абстрагирования со стандартным интерфейсом, который могут реализовать поставщики оборудования. HAL позволяет поставщикам оборудования реализовывать низкоуровневые функции, специфичные для устройства, не затрагивая и не изменяя код на более высоких уровнях.

Обязательные условия

Ниже приведены определения терминов, используемых в этом разделе документации.

Язык описания интерфейсов Android (AIDL)
Язык, похожий на Java, который используется для определения интерфейсов независимо от используемого языка программирования. AIDL позволяет наладить связь между клиентами и сервисами HAL.
HAL с привязкой
HAL, который взаимодействует с другими процессами с помощью вызовов межпроцессного взаимодействия Binder (IPC). HAL, использующие Binder, выполняются в процессе, отдельном от клиента, который их использует. HAL, связанные с Binder, регистрируются в диспетчере сервисов, чтобы клиенты могли получить доступ к их возможностям. HAL, написанные для Android 8 и более поздних версий, являются связанными с Binder
.
Клиент HAL
Процесс, который обращается к сервису HAL.
Интерфейс HAL
Общий интерфейс, используемый клиентом и сервисом HAL для связи.
Сервис HAL

Код, относящийся к оборудованию, например код, который взаимодействует с камерой устройства. В разделе поставщика необходимо реализовать все обязательные уровни абстракции оборудования, перечисленные в матрице совместимости для целевой версии. Дополнительную информацию о матрицах совместимости можно найти в разделе Матрицы совместимости.

Вы также можете создать новый интерфейс HAL или расширить интерфейс HAL, чтобы поддерживать уникальные возможности оборудования.

Язык описания аппаратного интерфейса (HIDL)

Язык, используемый для определения интерфейсов независимо от языка программирования. HIDL обеспечивает связь между клиентами HAL и службами HAL.

Уровень абстрагирования оборудования (HAL) для одного процесса (SP)

Ограниченный набор обернутых HAL. Членство в наборе контролируется Google. В SP HAL входят:

  • Стабильный HAL C mapper 5
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (предоставляется системой Android, всегда оборачивается)
  • android.hardware.renderscript@1.0
Обернутый HAL

Сервис HAL, созданный до Android 8, но обернутый в оболочку AIDL или HIDL для работы с Android 8 и более поздними версиями.

Что дальше?