Click here to load reader
Upload
felipe-silveira
View
299
Download
1
Embed Size (px)
DESCRIPTION
Terceira aula do curso "Android Core", sobre uma das mais importantes estruturas de um sistema android: o HAL - Hardware Abstraction Layer
Citation preview
Android Core
Felipe Silveirafelipesilveira.com.br Aula 3
HAL - Hardware Abstraction Layer
Hardware Abstraction Layer
Hardware Abstraction Layer● Abstração dos drivers de dispositivos● Composto por várias shared libraries● O Android framework foi desenhado para acessar o
HAL, e não a camada de kernel (drivers) diretamente● Justificativa:
- Minimizar as diferenças de drivers entre diferentes dispositivos- Adicionar algumas funções a alguns drivers (framebuffer, por exemplo)- Questões de licenças (evitando a alteração de arquivos GPL)
Tipos de HAL● Módulos de hardware, localizados em /vendor/lib/hw e
/system/lib/hw
● Bibliotecas OpenGL, localizadas em /vendor/lib/egl e /system/lib/egl
Módulos de HardwareResponsáveis por controlar componentes como:
● audio● camera● framebuffer● gps● gralloc - gerenciamento de framebuffer e GPU buffer● lights - controle dos leds do sistema● sensors - módulo que contém vários sensores, como
acelerometro, sensor de pressão, sensor de proximidade, etc.
Convenção de nomes
Os módulos de hardware são nomeados sempre seguindo o formato: module_id.<modifier>.so
Onde modifier pode ser:● ro.hardware● ro.product.board● ro.board.platform● ro.arch● default
libhardware interface genérica
É uma interface que deve ser implementada por todos os 'HAL' definidos no sistema.
Definido em: hardware/libhardware/include/hardware/hardware.h