В чем основное преимущество наличия уровня HAL в Android?

Интересно, зачем нужен HAL? Я новичок во внутренностях андроида.

Ниже мое понимание.

Шаг 1:

Служба Android взаимодействует с файлом .cpp через JNI. Службы предоставляют интерфейс Binder для прикладного уровня.

Шаг 2:

файл cpp использует libhardware [ hw_get_module() ] для загрузки модуля HAL. [то есть: dlopen].

Шаг 3. [Модуль HAL]

Модуль HAL напрямую взаимодействует с аппаратным драйвером.

ПРИМЕЧАНИЕ. Поправьте меня, если я ошибаюсь?

Я мог понять ход процесса. но почему между ними требуется модуль HAL?

Каковы другие преимущества, кроме динамической загрузки HAL?


person Whoami    schedule 13.05.2014    source источник


Ответы (3)


Основное преимущество HAL заключается в том, что он абстрагирует различные реализации от разных поставщиков и предоставляет согласованный API для верхних уровней.

person Ramesh Prasad    schedule 13.05.2014

У разных поставщиков могут быть разные аппаратные конфигурации. Они могут поддерживать одну и ту же функциональность по-разному. HAL реализуются поставщиками оборудования, и Android не знает их внутренностей. Таким образом, HAL является аппаратно-зависимой реализацией (которая оптимизирована и настроена для базового оборудования) и предоставляет общий интерфейс для работы.

person Abhishek Bansal    schedule 12.08.2014

  • Android HAL [Hardware Abstraction Layer] (кратко) устраняет разрыв между аппаратным и программным обеспечением.
  • Приложение/платформа Android взаимодействует с базовым оборудованием через Java API, а не через системные вызовы.
  • Но Linux может обрабатывать только системные вызовы из приложения.
  • Таким образом, нам нужен связующий слой между фреймворком Android и системой Linux.
  • Android HAL позволяет приложению/платформе Android взаимодействовать с драйверами аппаратных устройств.
  • Для приложения Android HAL предоставляет API, через который служба может отправить запрос на устройство.
  • И HAL использует функции, предоставляемые системой Linux нижнего уровня, для обслуживания запроса от платформы Android.
  • HAL — это уровень c/c++, реализация которого зависит от поставщика.

Источник

person livemaker    schedule 09.04.2019