12
Learning AOSP Android Linux Device Drivers 22 nd August 2013 @nanikjava ozandroid.info bit.ly/12r7yOr

Learning AOSP - Android Linux Device Driver

Embed Size (px)

Citation preview

Page 1: Learning AOSP - Android Linux Device Driver

Learning AOSPAndroid Linux Device Drivers22nd August 2013

@nanikjava

ozandroid.info

bit.ly/12r7yOr

Page 2: Learning AOSP - Android Linux Device Driver

ANDROID & LINUX

Page 3: Learning AOSP - Android Linux Device Driver

ANDROID LINUX DRIVERS Android core low level

Software & Hardware drivers (mostly software)

Minimum tasks performed

Access via framework layer or library

Page 4: Learning AOSP - Android Linux Device Driver

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

Page 5: Learning AOSP - Android Linux Device Driver

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)

Page 6: Learning AOSP - Android Linux Device Driver

LAYERS INTERACTION

Page 7: Learning AOSP - Android Linux Device Driver

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

Page 8: Learning AOSP - Android Linux Device Driver

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

Page 9: Learning AOSP - Android Linux Device Driver

USB

Page 10: Learning AOSP - Android Linux Device Driver

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

Page 11: Learning AOSP - Android Linux Device Driver

BENEFITS

Troubleshooting/Debugging

Extending framework and/or services

Helped in writing native code

Page 12: Learning AOSP - Android Linux Device Driver

RESOURCES

source.android.com

androidxref.com

Source code