Evolution ● Android Inc founded in 2003 ● Acquired by Google in 2005 ● Open Handset Alliance founded in 2007 (Samsung, LG, HTC, TI, Nvdia, Intel,ARM, TMobile, Google, ...) ● HTC Dream in 2008 android is announced in 2007 OHA: develop open standards for mobile devices. vertical integration: mobile operator, software, semiconductor, handset manufacturer
Evolution ● Tablet version: February 2011 ● Merge phone / tablet: Octobre 2011 http://faqoid.com/advisor/android-versions.php Device for consumer 1.5 April 30, 2009 cupcake 1.6 September 15, 2009 donut 2.0/2.1 October 26, 2009 eclair 2.2 May 20, 2010 froyo 2.3 December 6, 2010 2.3.7 September 21, 2011 (gingerbread 40% in april 2013) 3.0 February 22, 2011 4.0.1 October 19, 2011 (ics 29%) 4.1.1 July 9, 2012 (jb 25%)
Evolution "First" device: T mobile G1 Motorola Xoom Freescale imx53 Flagship device (supported by AOSP: you can flash it) Nexus 4 Nexus 10 pandaboard pandaboard since 4.0. Android is officialy not general consumer only?
Is Android Embedded? ● Compatibility Definition Document (JellyBean 4.1) : ○ 340 Mo RAM ○ OpenGL ES 1.0 et 2.0 ○ Browser < 1300 ms ● Gingerbread (2.3) ○ 128 Mo RAM What is embedded designated task? Android can run many application hardware contraint? Android is often tuned to fullfil a specific task on a specific hardware.
Start with Android ● Ask your manufacturer ○ Boards available for all Android version ○ Should provide: ■ Kernel ■ Hardware support libraries ■ AOSP patches Be careful to which part is binary or not, some manufacturer provide a full android package with lots of prebuilt binaries. A good manufacturer should let you download a specific version from google and only add hardware specific code / blob. Update / security fix is also a concern when choosing a manufacturer.
Start with Android SOC support Android patches: Binder, PM (wakelock), paranoid network, ... Effort to merge patches in kernel.org Write your own driver for your device
Start with Android "external" project: sqlite, webkit, ssl google project: surface manager (X/Wayland like) media framework (GStreamer like) Bionic: libc rewrite NOT posix no c++ exception no System V ipc incomplete thread support ... => carreful when porting C/C++ code to android
Start with Android Your app written in java, uses services from the framework that run on the Android Runtime, that call C written library, that use bionic to call kernel services.
Pros and Cons ● Android : fully integrated The library you need is already here: webkit, opengl, gps, webcam, ... SDK with doc The low level stack is already choosen
Pros and Cons ● Linux Embedded: lot of choices You need to build your own system and add your own tool: webcam api, gps api, ... It is ok if : * You already have an expertise * you have specific needs (performance, footprint, ...)
Pros and Cons ● User centric ○ App is king ○ GUI ○ Touch screen ○ RS232? CAN? ○ Lot of apps ready to use You can build your own support for the protocols you need, but you'll need to do it again for next version
Pros and Cons ● User centric ○ App is king ○ GUI ○ Touch screen ○ RS232? CAN? ○ Lot of apps ready to use You can throw birds on pigs. It's only thing that matters no?