8

Click here to load reader

Android Core Aula 3 - HAL (Hardware Abstraction Layer)

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

Page 1: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

Android Core

Felipe Silveirafelipesilveira.com.br Aula 3

Page 2: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

HAL - Hardware Abstraction Layer

Page 3: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

Hardware Abstraction Layer

Page 4: Android Core Aula 3 - HAL (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)

Page 5: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

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

Page 6: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

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.

Page 7: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

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

Page 8: Android Core Aula 3 - HAL (Hardware Abstraction Layer)

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