Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
“ Learning AOSP”

Hardware Abstraction Layer

Nanik Tolaram
@nanikjava
(kernel).ozandroid.info
plus.google.com/+NanikT
Thank You !
Architecture
Questions !


What is HAL ?



Why is it such a big deal ?



Why do we care ?



What hardware is part of HAL ?



W...
Hardware Layer
What is HAL ?


Cater for non-GPL vendor code



Included in Android image as blob (.so)



Freeing developer to focus ...
Hardware
Nexus 7 (2012) [“grouper” ] : Camera, Sensors, Wi-Fi, Bluetooth,
GPS, Touch Panel, Orientation Sensor, Graphics,...
Framework and HAL
HAL Stubs
Android provides the interface that vendors must implement
(/hardware/libhardware/include/hardware)
 HAL proce...
Example - Power HAL
DisplayPowerState.java
DisplayPowerState.java

PowerManagerService.java
PowerManagerService.java

com_...
Example – LCD Backlight
DisplayPowerState.java
DisplayPowerState.java

LightsService.java
LightsService.java

com_android_...
HAL Structure
(1)

hw_module_t
hw_module_t

hw_device_t
hw_device_t

Device specific structure
contain hw_module_t
which i...
Thank You
Upcoming SlideShare
Loading in …5
×

"Learning AOSP" - Android Hardware Abstraction Layer (HAL)

16,173 views

Published on

Sydney's Android Australia Group meetup on 18/November/2013. Topic discussion was around Android's HAL (Hardware Abstraction Layer)

"Learning AOSP" - Android Hardware Abstraction Layer (HAL)

  1. 1. “ Learning AOSP” Hardware Abstraction Layer Nanik Tolaram @nanikjava (kernel).ozandroid.info plus.google.com/+NanikT
  2. 2. Thank You !
  3. 3. Architecture
  4. 4. Questions !  What is HAL ?  Why is it such a big deal ?  Why do we care ?  What hardware is part of HAL ?  What is relationship between Android and HAL ?
  5. 5. Hardware Layer
  6. 6. What is HAL ?  Cater for non-GPL vendor code  Included in Android image as blob (.so)  Freeing developer to focus on their app (Camera3 multiple camera support - KitKat)  Software layer that interact with kernel drivers *NOT* to hardware  /system/lib/hw and /vendor/lib/hw
  7. 7. Hardware Nexus 7 (2012) [“grouper” ] : Camera, Sensors, Wi-Fi, Bluetooth, GPS, Touch Panel, Orientation Sensor, Graphics, NFC, DRM Nexus 7 (2013) [“razor”] : Camera, Sensors, Wi-Fi, Bluetooth, GPS, Graphics, NFC, DRM, Audio, Sensors, Media, DSP, USB Nexus 5 [“hammerhead”] : Camera, Sensors, Wi-Fi, Bluetooth, GPS, Graphics, NFC, Audio, GSM, Camera, Media, DSP, USB
  8. 8. Framework and HAL
  9. 9. HAL Stubs Android provides the interface that vendors must implement (/hardware/libhardware/include/hardware)  HAL process 1. 2. 3. 4. 5. Java application call hardware framework service API Framework service call internal API HAL framework loads hardware library Obtain device structure from memory Call HAL stub function
  10. 10. Example - Power HAL DisplayPowerState.java DisplayPowerState.java PowerManagerService.java PowerManagerService.java com_android_server_power_PowerManagerService.cpp com_android_server_power_PowerManagerService.cpp power.c power.c /sys/devices/system/cpu/cpufreq/interactive/timer_rate /sys/devices/system/cpu/cpufreq/interactive/timer_rate /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load /sys/devices/system/cpu/cpufreq/interactive/input_boost /sys/devices/system/cpu/cpufreq/interactive/input_boost
  11. 11. Example – LCD Backlight DisplayPowerState.java DisplayPowerState.java LightsService.java LightsService.java com_android_server_LightsService.cpp com_android_server_LightsService.cpp device/asus/grouper/liblights/lights.c device/asus/grouper/liblights/lights.c /sys/class/backlight/pwm-backlight/brightness /sys/class/backlight/pwm-backlight/brightness
  12. 12. HAL Structure (1) hw_module_t hw_module_t hw_device_t hw_device_t Device specific structure contain hw_module_t which is queried by Android framework from HAL library through hw_get_module function 'open' generally called to obtain device implementation structure (2) camera_device camera_device nfc_nci_device nfc_nci_device audio_hw_device audio_hw_device different structure implementation for different hardware hw_module_methods_t hw_module_methods_t * * open (..) open (..)
  13. 13. Thank You

×