Embedded Android

50
Dominik Helleberg | inovex GmbH Embedded Android

description

Embedded Android Talk @ Mobile Tec Con 2013 #mtc13

Transcript of Embedded Android

Page 1: Embedded Android

Dominik Helleberg | inovex GmbH

Embedded Android

Page 2: Embedded Android

Dominik Helleberg

Mobile Development

Android

Ingress Level 7

http://dominik-helleberg.de/+

Page 3: Embedded Android

Embedded Android?

http://developer.android.com/design/index.html

Page 4: Embedded Android
Page 5: Embedded Android

https://twitter.com/Arubin/status/27808662429

Page 6: Embedded Android

Why?

Page 7: Embedded Android

http://commons.wikimedia.org/wiki/File:Helvar_Touchscreen_924.jpg

Page 8: Embedded Android

http://ajaishukla.blogspot.de/2009/03/visit-to-ins-shivalik-indias-newest.html

Page 9: Embedded Android

http://commons.wikimedia.org/wiki/File:Rh%C3%A4tische_Bahn_kaartlezer.JPG

Page 10: Embedded Android
Page 11: Embedded Android
Page 12: Embedded Android
Page 13: Embedded Android
Page 14: Embedded Android

Apps

Java

Kernel

Libs HAL Init

Framework / API

System Services

Dalvik / Runtime / Zygote

Page 15: Embedded Android
Page 16: Embedded Android

Tooling

Libraries

User Interface

Developers

Open Source

Hardware Support

Technology Architecture

Page 17: Embedded Android

http://e.ubmelectronics.com/2013EmbeddedStudy/index.html

Page 18: Embedded Android

http://e.ubmelectronics.com/2013EmbeddedStudy/index.html

Page 19: Embedded Android

Stock Apps

Framework / API

User Apps

Java System Services

Dalvik / Runtime / Zygote

Kernel

Libs HAL Init

Page 20: Embedded Android

Stock Apps

Framework / API

User Apps

Java System Services

Dalvik / Runtime / Zygote

Kernel

Libs Init

https://android.googlesource.com/ HAL

Page 21: Embedded Android

Architecture by example - GPS Stock Apps

Framework / API

User Apps

Java System Services

Dalvik / Runtime / Zygote

Kernel

Libs HAL Init

Page 22: Embedded Android

Architecture by example - GPS Stock Apps User Apps

locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER, 0, 0, locationListener);

Page 23: Embedded Android

frameworks/base/location/java/android/location/LocationManager.java

Architecture by example - GPS

Framework / API System Services

try { mService.requestLocationUpdates(request,

transport, intent, packageName); } catch (RemoteException e) { Log.e(TAG, "RemoteException", e); }

Page 24: Embedded Android

frameworks/base/location/java/android/location/LocationManager.java

private final ILocationManager mService;

Architecture by example - GPS

Framework / API System Services

Page 25: Embedded Android

frameworks/base/location/java/android/location/ILocationManager.aidl

Architecture by example - GPS

Framework / API System Services

void requestLocationUpdates( in LocationRequest request, in ILocationListener listener, in PendingIntent intent, String packageName);

Page 26: Embedded Android

frameworks/base/services/java/com/android/server/LocationManagerService.java

LocationProviderInterface provider =

mProvidersByName.get(name);...provider.setRequest(providerRequest,

worksource);

Architecture by example - GPS

Framework / API System Services

Page 27: Embedded Android

frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java

private native boolean native_start();

Architecture by example - GPS

Framework / API System Services

Page 28: Embedded Android

hardware/libhardware/include/hardware/gps.h

/** Represents the standard GPS interface. */typedef struct { int (*init)( GpsCallbacks* callbacks );

/** Starts navigating. */ int (*start)( void );...

Architecture by example - GPS

Libs HAL Init

Page 29: Embedded Android

development/tools/emulator/system/gps/gps_qemu.c

device/samsung/manta/gps/gps.exynos5.so

Architecture by example - GPS

Libs HAL Init

Page 30: Embedded Android

Apps

Java

Kernel

Libs HAL Init

Framework / API

System Services

Dalvik / Runtime / Zygote

Page 31: Embedded Android
Page 32: Embedded Android

§  Freescale BSP

§  7 GB Source

§  Compile Time ~ 45 minutes

§  „Deployment Time“ ~ 5-10 minutes

§  Dependencies ususally fail at runtime

§  You can change everything... Maybe you shouldn‘t ;)

Page 33: Embedded Android

§  Custom WiFi

§  Custom Recovery

§  New APIs for eINK Display

§  Custom USB and Storage

§  System updates

§  Boot time optimization

§  Battery Life Management

Page 34: Embedded Android

§  Custom WiFi

§  Custom Recovery

§  New APIs for eINK Display

§  Custom USB and Storage

§  System updates

§  Boot time optimization

§  Battery Life Management

Page 35: Embedded Android

New APIs for eINK Display

§  300 – 900 ms refresh

§  Update Modes to reduce ghosting

http://commons.wikimedia.org/wiki/File:EInk_Refresh.gif http://commons.wikimedia.org/wiki/File:EInk_simplified.png

Page 36: Embedded Android

Custom USB and Storage

Internal SD-Card

Ext. SD-Card

USB

Page 37: Embedded Android

invalidate()  externalStorage()  

TolinoApp Auth | Shop | Cloud-Storage | Settings | WiFi Auth | Local Storage

Java

Kernel

Libs HAL Init

Framework / API

System Services

Dalvik / Runtime / Zygote

Page 38: Embedded Android

bootloader

kernel

init

service manager

zygote

daemons

boot animiation

System Server

Package Manager

Activity Manager

Power Manager

...

launcher

Page 39: Embedded Android
Page 40: Embedded Android

bootloader

kernel

init

service manager

zygote

daemons

boot animiation

System Server

Package Manager

Activity Manager

Power Manager

...

launcher

Page 41: Embedded Android
Page 42: Embedded Android

/sys/devices/system/cpu/cpuX/cpufreq/stats/time_in_state      160000  632455  400000  781  800000  8825      deepSleepTime  =    

 SystemClock.elapsedRealtime()  -­‐  (Σ  (all  cpu_states));  

deepSleepTime  =      SystemClock.elapsedRealtime()  -­‐    SystemClock.uptimeMillis();  

Page 43: Embedded Android

$  adb  shell  dumpsys  batteryinfo      ....  Statistics  since  last  charge:      System  starts:  0,  currently  on  battery:  false      Time  on  battery:  4d  0h  38m  8s  373ms  (5,3%)  realtime,  5m  55s  182ms  (0,0%)  uptime      Total  run  time:  75d  13h  54m  39s  222ms  realtime,  5h  16m  0s  646ms  uptime,        Screen  on:  5m  46s  126ms  (0,1%),  Input  events:  0,  Active  phone  call:  0ms  (0,0%)      Screen  brightnesses:  dark  8s  614ms  (2,5%),  medium  5m  37s  512ms  (97,5%)      Kernel  Wake  lock  "PowerManagerService":  5s  613ms    (25  times)  realtime      Kernel  Wake  lock  "alarm":  1s  676ms    (9  times)  realtime      Kernel  Wake  lock  "android_usb":  2s  222ms    (1  times)  realtime      Kernel  Wake  lock  "power-­‐supply":  13ms    (1  times)  realtime      Kernel  Wake  lock  "KeyEvents":  93ms    (449  times)  realtime      Kernel  Wake  lock  "main":  5m  46s  194ms    (1  times)  realtime      Total  received:  0B,  Total  sent:  0B      Total  full  wakelock  time:  0ms  ,  Total  partial  waklock  time:  5s  576ms        Signal  levels:  No  activity      Signal  scanning  time:  0ms        Radio  types:  No  activity      Radio  data  uptime  when  unplugged:  0  ms      Wifi  on:  0ms  (0,0%),  Wifi  running:  0ms  (0,0%),  Bluetooth  on:  0ms  (0,0%)    

Page 44: Embedded Android

$  adb  shell  bugreport  >  bugreport.txt    $  java  -­‐jar  chkbugreport-­‐0.4-­‐185.jar  bugreport.txt    

https://github.com/sonyxperiadev/ChkBugReport

Page 45: Embedded Android
Page 46: Embedded Android
Page 47: Embedded Android

http://beagleboard.org/Products/BeagleBone%20Black

Page 48: Embedded Android

http://www.oreilly.de/catalog/9781449308292/index.html

Page 49: Embedded Android

Credits http://www.ouya.tv/about/ https://mediacenter.motorola.com/Image-Gallery/MOTOACTV-Golf-Edition-8c1.aspx http://www.tolino.de https://www.honeywellaidc.com/en-US/resources/image-library/Pages/default.aspx?Category=7800&keywords=7800&title=7800&description=7800 https://android-build.linaro.org/ http://source.android.com/source/building.html http://nvidianews.nvidia.com/Releases/NVIDIA-Untethers-Gaming-With-Project-SHIELD-8ee.aspx http://www.android-user.de/Apps/Auerswald-Comfortel-3500-Das-IP-Telefon-mit-Android-2.3-im-Test

Page 50: Embedded Android

DANKE!