1
Embedded Android
Linaro Connect Europe 2012
Karim Yaghmour
@karimyaghmour
karim.yaghmour@opersys.com
2
These slides are made available to you under a Creative Commons Share-
Alike 3.0 license. The full terms of this license...
3
About
● Author of:
● Introduced Linux Trace Toolkit in 1999
● Originated Adeos and relayfs (kernel/relay.c)
● Training, ...
4
Agenda
● Reasons for looking at Android
● What did we have before Android?
● What does Android give us?
● Challenges
● T...
5
1. Reasons for looking at Android
● Android-specific:
● User Interface
● Cool factor
● API
● ...
● Same as embedded Linu...
6
2. What did we have before Android?
Embedded Linux
● A set of ad-hoc methods to package the Linux kernel with a (minimal...
7
8
3. What does Android give us?
● ... apart from its increasingly well known UX ...
● Fully-integrated Eclipse IDE
● SDK/N...
9
10
4. Challenges
● Documentation / Information
● Stack Limitations
● Stack Customization
● Boot time
● Legacy Integration
...
11
4.1. Documentation / Information
● Official doc for app dev is great
● Official doc for platform dev is practically non...
12
4.2. Stack Limitations
● Key functionality not supported by default:
● Ethernet
● AM/FM radio
● Real-time
● Supported f...
13
4.3. Stack Customization
● Lots of default packages
● Modularity wasn't really part of the design
● No “make menuconfig...
14
4.4. Boot time
● Very lengthy boot process
● Bootloader
● Kernel
● Init
● Zygote
● System services
● DEX optimization
●...
15
4.5. Legacy Integration
● What if I ... ?:
● have been using my custom rootfs forever
● really need glibc
● have a huge...
16
17
18
4.6. Development Hardware
● Can I use a standard phone?
● Not really
● Even if you could – some things can only be done...
19
4.7. Build Times
● Horrible
● On quad-core i7 w/ 8GB RAM:
● GB = 20min
● ICS = 55min
● JB = 75min
● Even Google's own g...
20
4.8. Headless Use
+ =
“And then GNU came back for revenge ...” -- Tarantino's sequel
21
4.8.1. Why?
● Took me a long time to wrap my head around
● “Why don't you just use embedded Linux?”
● What's “Embedded ...
22
4.8.2. Possibilities
● No Java:
● TinyAndroid:
$ BUILD_TINY_ANDROID=true make ­j4
● AOSP w/ custom products .mk file
● ...
23
4.8.3. Tiny Android
● 3MB filesystem
● Minimal root fs
● init
● toolbox + shell
● adb
● bionic + utility libs
● No “sys...
24
4.8.4. AOSP w/ custom product .mk
● Have a look at:
● build/target/product/*.mk
● Create your own device under “/device...
25
4.8.5. Full stack
● Disable:
● SurfaceFlinger
● WindowManager
● WallpaperService
● InputMethodManager
● SystemUI
● Don'...
26
5. Trends
● On the embedded side
● On the consumer side
27
5.1. Embedded trends
● Rise of cheap 32-bit CPUs
● Rise of inexpensive storage
● Rise of inexpensive eval boards
● Beag...
28
5.2. Consumer trends
● Rise of touch-based devices
● Race with Apple on features / price
● Mobile devices outselling PC...
29
Source:
“From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer,
Ars Technica, August 2012
htt...
30
Source:
“From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer,
Ars Technica, August 2012
htt...
31
Source:
“From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer,
Ars Technica, August 2012
htt...
32
Thank you ...
karim.yaghmour@opersys.com
Upcoming SlideShare
Loading in …5
×

LCE12: Android Mini-Summit (Embedded Android)

818
-1

Published on

Resource: LCE12
Name: Android Mini-Summit (Embedded Android)
Date: 31-10-2012
Speaker: Karim Yaghmour

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
818
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

LCE12: Android Mini-Summit (Embedded Android)

  1. 1. 1 Embedded Android Linaro Connect Europe 2012 Karim Yaghmour @karimyaghmour karim.yaghmour@opersys.com
  2. 2. 2 These slides are made available to you under a Creative Commons Share- Alike 3.0 license. The full terms of this license are here: https://creativecommons.org/licenses/by-sa/3.0/ Attribution requirements and misc., PLEASE READ: ● This slide must remain as-is in this specific location (slide #2), everything else you are free to change; including the logo :-) ● Use of figures in other documents must feature the below “Originals at” URL immediately under that figure and the below copyright notice where appropriate. ● You are free to fill in the “Delivered and/or customized by” space on the right as you see fit. ● You are FORBIDEN from using the default “About” slide as-is or any of its contents. ● You are FORBIDEN from using any content provided by 3rd parties without the EXPLICIT consent from those parties. (C) Copyright 2012, Opersys inc. These slides created by: Karim Yaghmour Originals at: www.opersys.com/community/docs Delivered and/or customized by
  3. 3. 3 About ● Author of: ● Introduced Linux Trace Toolkit in 1999 ● Originated Adeos and relayfs (kernel/relay.c) ● Training, Custom Dev, Consulting, ...
  4. 4. 4 Agenda ● Reasons for looking at Android ● What did we have before Android? ● What does Android give us? ● Challenges ● Trends
  5. 5. 5 1. Reasons for looking at Android ● Android-specific: ● User Interface ● Cool factor ● API ● ... ● Same as embedded Linux: ● Cost ● Licensing ● Openness / Availability ● Ability to customize ● ...
  6. 6. 6 2. What did we have before Android? Embedded Linux ● A set of ad-hoc methods to package the Linux kernel with a (minimal) filesystem. ● FS content “to be determined” case-by-case ● APIs are specific to each device/build ● “Core software”: ● BusyBox ● U-Boot ● GNU Toolchain ● Your flavor of: ● glibc or uClibc or eglibc ● yocto or buildroot or eldk or ltib or ptxdist or ... ● No serious UX framework
  7. 7. 7
  8. 8. 8 3. What does Android give us? ● ... apart from its increasingly well known UX ... ● Fully-integrated Eclipse IDE ● SDK/NDK ● ADB ● Fastboot ● Published, well-known, and very rich APIs ● A large and growing developer community ● And still we can use the usual suspects: ● GNU toolchain, BusyBox, u- boot, glibc, ... An actual standardized dev. env. across all product lines
  9. 9. 9
  10. 10. 10 4. Challenges ● Documentation / Information ● Stack Limitations ● Stack Customization ● Boot time ● Legacy Integration ● Development Hardware ● Build Times ● Headless Use
  11. 11. 11 4.1. Documentation / Information ● Official doc for app dev is great ● Official doc for platform dev is practically non-existent ● A few official forums: ● android-building ● android-platform ● android-porting ● Conference talks / presentations ● Scattered documentation all over the web ● Upcoming book (disclaimer applies):
  12. 12. 12 4.2. Stack Limitations ● Key functionality not supported by default: ● Ethernet ● AM/FM radio ● Real-time ● Supported functionality doesn't expose everything: ● BlueZ ● USB ● wpa_supplicant ● Bionic isn't a full glibc replacement: ● No SystemV IPC ● No locales ● etc.
  13. 13. 13 4.3. Stack Customization ● Lots of default packages ● Modularity wasn't really part of the design ● No “make menuconfig” ● Can't easily select/change: ● Which packages to include ● Which system services are running ● Packages' features ● Ex: ● Can relatively easily replace default home screen ● Modifying status bar requires digging in code
  14. 14. 14 4.4. Boot time ● Very lengthy boot process ● Bootloader ● Kernel ● Init ● Zygote ● System services ● DEX optimization ● Key apps ● Unlikely to be able to speed this through trimming ... ● Try: ● Suspend to flash ● Checkpointing
  15. 15. 15 4.5. Legacy Integration ● What if I ... ?: ● have been using my custom rootfs forever ● really need glibc ● have a huge stack based on “legacy Linux” ● don't want to deal with AOSP's build system ● want BusyBox ● want to unify with a std Linux desktop ● need things the AOSP doesn't provide ● have a ton of Linux drivers and want those to be used by Android ● ... ● Know this: filesystem integration is trivial: ● Change build system to copy your custom rootfs ● Change init scripts to start you own daemons ● Use sockets to communicate ● Know this too: std Linux desktop integration is NOT
  16. 16. 16
  17. 17. 17
  18. 18. 18 4.6. Development Hardware ● Can I use a standard phone? ● Not really ● Even if you could – some things can only be done in the platform ● Which board is best to evaluate Android? ● BeagleBone / BeagleBoard ● PandaBoard ● OrigenBoard ● iMX ● DragonBoard ● AM335x Start Kit ● Still: ● Nothing that has a phone/tablet form-factor + is entirely open
  19. 19. 19 4.7. Build Times ● Horrible ● On quad-core i7 w/ 8GB RAM: ● GB = 20min ● ICS = 55min ● JB = 75min ● Even Google's own guys are at around 30min for JB. ● This is a big, unresolved pain
  20. 20. 20 4.8. Headless Use + = “And then GNU came back for revenge ...” -- Tarantino's sequel
  21. 21. 21 4.8.1. Why? ● Took me a long time to wrap my head around ● “Why don't you just use embedded Linux?” ● What's “Embedded Linux” anyway? ● NEW: Nexus Q
  22. 22. 22 4.8.2. Possibilities ● No Java: ● TinyAndroid: $ BUILD_TINY_ANDROID=true make ­j4 ● AOSP w/ custom products .mk file ● The full-blown stack without: ● SurfaceFlinger ● WindowManager ● WallpaperService ● InputMethodManager
  23. 23. 23 4.8.3. Tiny Android ● 3MB filesystem ● Minimal root fs ● init ● toolbox + shell ● adb ● bionic + utility libs ● No “system/framework/” ● No “system/app”
  24. 24. 24 4.8.4. AOSP w/ custom product .mk ● Have a look at: ● build/target/product/*.mk ● Create your own device under “/device” and have fun ● Disable zygote at startup ● Remove all apks ● ...
  25. 25. 25 4.8.5. Full stack ● Disable: ● SurfaceFlinger ● WindowManager ● WallpaperService ● InputMethodManager ● SystemUI ● Don't let SurfaceFlinger Client try to open binder to SurfaceFlinger ● Feed bogus values back from SurfaceFlinger Client ● Disable qemud (emulator artefact) ● Tweak internals by disabling key calls: ● In ActivityStack.java: – startHomeActivityLocked() – setAppStartingWindow() ● wm.detectSafeMode() ● wm.systemReady() ● wm.reclaimSuraceMemoryLocked()
  26. 26. 26 5. Trends ● On the embedded side ● On the consumer side
  27. 27. 27 5.1. Embedded trends ● Rise of cheap 32-bit CPUs ● Rise of inexpensive storage ● Rise of inexpensive eval boards ● BeagleBoards ● BeagleBone ● RaspberryPi ● For all practical purposes, this hardware is disposable ● Arduino / Maker / DIY trend ● ...
  28. 28. 28 5.2. Consumer trends ● Rise of touch-based devices ● Race with Apple on features / price ● Mobile devices outselling PCs since 2010 ● Increasingly inexpensive low-end touch-based devices
  29. 29. 29 Source: “From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer, Ars Technica, August 2012 http://arstechnica.com/business/2012/08/from-altair-to-ipad-35-years-of-personal-computer-market-share/ This material is (C) 2012, Ars Technica and is NOT CC-BY-SA.
  30. 30. 30 Source: “From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer, Ars Technica, August 2012 http://arstechnica.com/business/2012/08/from-altair-to-ipad-35-years-of-personal-computer-market-share/ This material is (C) 2012, Ars Technica and is NOT CC-BY-SA.
  31. 31. 31 Source: “From Altair to iPad: 35 years of personal computer market share”, Jeremy Reimer, Ars Technica, August 2012 http://arstechnica.com/business/2012/08/from-altair-to-ipad-35-years-of-personal-computer-market-share/ This material is (C) 2012, Ars Technica and is NOT CC-BY-SA.
  32. 32. 32 Thank you ... karim.yaghmour@opersys.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×