Learning AOSP - Android Linux Device Driver

Post on 15-Apr-2017

3218 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

Transcript

Learning AOSPAndroid Linux Device Drivers22nd August 2013

@nanikjava

ozandroid.info

bit.ly/12r7yOr

ANDROID & LINUX

ANDROID LINUX DRIVERS Android core low level

Software & Hardware drivers (mostly software)

Minimum tasks performed

Access via framework layer or library

MAINLINE VS VENDOR LINUX v3.3 driver merge (excl wakelock)

v3.5 wakelock merge

Patch prior to v3.5 (different directory)

Vendor “normally” releases Linux kernel

ANDROID DRIVERS ashmem (mm/ashmem.c) binder (drivers/staging/android/binder.c) lowmemorykiller (drivers/staging/android/lowmemorykiller.c) ram_console (drivers/staging/android/ram_console.c) timed_gpio (drivers/staging/android/timed_gpio.c) usb – otg, adb, gadget, accessories, etc (drivers/usb/gadget) logger (drivers/staging/android/logger.c) alarm (drivers/staging/android/alarm.c) wakelock (kernel/power/wakelock.c)

LAYERS INTERACTION

BINDER Kernel

drivers/staging/binder.c

Framework frameworks/base/core/java/android/os/Binder.java frameworks/base/core/jni/android_util_Binder.java frameworks/native/cmds/servicemanager/binder.c frameworks/native/cmds/servicemanager/service_manager.c

Virtual Filesystem /sys/kernel/debug/binder → debugging /dev/binder → used internally by framework

Kernel drivers/staging/android/logger.c

Framework frameworks/base/core/java/android/util/Log.java frameworks/base/core/jni/android_util_Log.cpp system/core/liblog/logd_write.c

Virtual Filesystem /dev/events /dev/main /dev/radio /dev/system

LOGGER

USB

LINUX CONFIG

CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ASHMEM=y CONFIG_ANDROID_LOGGER=y CONFIG_ANDROID_TIMED_OUTPUT=y CONFIG_ANDROID_LOW_MEMORY_KILLER=y

BENEFITS

Troubleshooting/Debugging

Extending framework and/or services

Helped in writing native code

RESOURCES

source.android.com

androidxref.com

Source code

top related