#
Android on Atom Processor
Targeting Intel
Silicon India, 2012
Hyderabad
Mobilitas © 2012 5 October 2012
#
Agenda
• The Intel x86 platform - Intel Atom processor
• Understanding the Android internal architecture and the layers that matter for porting
• The android-x86 project
• Demo of Android running
• Lenovo and VirtualBox
• A case study of Android graphics drivers for Intel platform
• Intel x86 from developer point of view
• Creating a demo application and running it on Lenovo and VirtualBox targets
Mobilitas © 2012 2
#
Background
• Currently, Chief Technology Officer of Mobilitas Technologies
• Was earlier working at
o Intel
o Was working at the Visual and Parallel Computing group, involved in the development of display graphics kernel drivers for Intel hardware focussing on Android
o Developed Intel display drivers to the Android (3.2, 4.0.3) x86 platform
o Nokia
o Involved in the development of the N800, N810, N900, N9 devices
o Developing middleware and kernel drivers for the MeeGo platform
Mobilitas © 2012 3
#
The Mobile Market (Ref: Intel Developer Forum 2010)
Mobilitas © 2012 4
#
Intel Atom Processor (1/2)
• Is based on the standard Intel x86 architecture
• Low power, Low cost and low performance processors compared to regular core-duo, i3/i5/i7
• One core, two threads (4 in recently launched CloverTrail)
• Two instructions per clock cycle
• Is in the range of 2-2.5 watts power range
• Intel GMA 600 graphics – Integrated 2D/3D graphics, OpenGL ES2.0, 2.1, hardware accelerated HD video encode/decode
• Intel Burst Performance Technology
• Intel Hyper-Threading Technology
• Intel Smart Idle Technology
Mobilitas © 2012 5
#
Intel Atom processor (2/2)
• Atom processors available earlier too for Netbooks
• Shrinking processor technology (Medfield is 32nm)
• Peripherals support for various kinds of applications
o Flash controller, MPEG decoder, Graphics and display processor, Audio processor, Ethernet, USB, UART, GPIO, SPI, Timer, Security processor with AES, DES, SHA, RSA etc. on board
Ref: Intel website
Mobilitas © 2012 6
#
Demystifying Android Platform
Mobilitas © 2012 7
#
Linux at the core of Android
• Linux has a scalable architecture
• Android uses Linux as its core OS and creates an application framework around it
• Hardware support
• Core kernel is mostly independent of hardware
• Well-defined support for modules enables an easy way to support new hardware
• Extensive support (ranging from routers to heavy duty servers)
• Easy configuration to port it to a new hardware
• Has been supported on the Intel x86 platform from almost its inception
Mobilitas © 2012 8
#
Hardware specific layers and components
• Everything that is native code (C / C++) is
hardware specific
• Linux kernel
• Device drivers
• The Android native layer
o Native libraries
• The Android runtime
o Dalvik machine
o DVM
Non-hardware specific layers
o Application framework
o Applications (written in Java)
Mobilitas © 2012 9
#
Then What!
Okay, how do I get my Android running on Intel hardware!?
Mobilitas © 2012 10
#
The Android-x86 project
• www.android-x86.org
• An Open Source project with the aim of porting the Android OS to Intel x86 based hardware
• Apache Public License 2.0
• Formed initially to provide just patches of Android for x86
• Pre-built images available for netbooks, desktops and virtual machines
• Provides the tool set, instructions and read-made images for specific hardware
• Application behavior can be directly tested on the host platform (which happens to be x86 for 95% of the development machines)
Mobilitas © 2012 11
#
Android x86 porting - Development tools
• The Android x86 compiler
• Git repository of Android source code
• The kernel config file to support x86
• The board support package xml files (BSP)
• Android.mk for native libraries / applications
• The x86 SDK from Intel website or android-x86.org
|-- bionic
| |-- libc
| | |-- arch-x86
| | |-- kernel
| | | |-- arch-arm
| | | |-- arch-x86
| |-- libstdc++
| |-- libthread_db
|-- bootable
|-- dalvik
|-- external
| |-- bluetooth
| |-- busybox
| |-- kernel-headers
|-- frameworks
| | |-- services
| | | |-- audioflinger
| | | |-- sensorservice
| | | |-- surfaceflinger
| | |-- telephony
| |-- media
|-- hardware
| |-- broadcom
| |-- intel
| |-- libhardware
|-- libcore
|-- ndk
|-- packages
|-- prebuilt
| |-- android-arm
| |-- android-x86
| |-- darwin-x86_64
| |-- ndk
| |-- sdk
|-- sdk
|-- system
`-- vendor Mobilitas © 2012 12
#
What it takes to port Android to x86
• Main components of a hardware platform (SoC)
o GPU - provides hardware acceleration for graphics display
Could be an in-build display card or an external card (like nVidia)
o Wireless devices - wifi / 3G / LTE / bluetooth
o Touch devices
o Audio
o USB
• Intel display driver has good support for VGA, DVI, DP and HDMI support
• Wireless, USB, touch, audio drivers have had good support in Linux
Mobilitas © 2012 13
#
What it takes to port Android to x86
Android
framework
(Java)
x86 Compiler
Native
binaries
x86 device
drivers Linux kernel
Board Support
Package
generates
Native
application
link
link
Flash Test
Mobilitas © 2012 14
#
Android on x86 - Demo
• Android on Lenovo S10-3t Netbook
• Source code from android-x86 project
• Ported code available for S10-3t
• Demo of Android running in ”VirtualBox” virtual machine
Mobilitas © 2012 15
#
Intel x86 display driver - a case study (1/3)
• http://intellinuxgraphics.org/
• Linux drivers available for Intel x86 display driver since more than a decade
• Driver named i915
• All Linux based distributions (Ubuntu / SuSE / ...) use the i915 graphics driver via X-server (or recently via Wayland)
• Android can work on a desktop using the i915 driver with the standard Linux kernel
Mobilitas © 2012 16
#
Intel x86 display driver - a case study (2/3)
i915.ko
libdrm.so libdrm_intel.so
intel-video-xf86
X-Server
X client library
i915.ko
libdrm.so libdrm_intel.so
gralloc
Surface Flinger
Android Window
Manager
Mobilitas © 2012 17
#
Intel x86 display driver - a case study (3/3)
• i915 driver
• does the hardware programming and provides support for displays (LVDS, VGA, eDP, HDMI, …)
• provides ioctl’s to the user space to access limited hardware functionality
• libdrm.so and libdrm_intel.so
• Uses the ioctl’s and provides an API level access
• The Android graphics gralloc layer
• is a generalized abstraction layer for hardware access
• API dictated by Google
• exposes a fixed API towards Android framework
• Surface Flinger
• Is the rendering manager responsible for Android rendering
• Uses OpenGL for 3D graphics Mobilitas © 2012 18
#
What about Application developers!
• If you app uses native layers, then they have to be recompiled for x86
• Any app that uses the Android Java SDK should not have any problem
• Developers life made easier
o Support for virtual machine based Android
o Any application that works on native x86 can (!) be easily ported to Android
• Enables innovation by hooking in any of the hardware that already works with Intel machines, which can then easily be ported to Android
• Make use of the hardware acceleration wherever possible (in Eclipse, this can be enabled for GPU, for example)
Mobilitas © 2012 19
#
Developing app for Intel Atom - a walkthrough
• Download Intel Atom x86 image for Android ICS from the Intel website
• Create a target in the Android emulator for x86
• If you want to build one yourself, download the Android sources for x86 from android-x86.org
• Develop the application in your favorite editor (Eclipse being the widly used one)
• If the application is pure Java based, then nothing special to be done
• If it is a native application, then it should be accompanied by an Android.mk file (similar to a Makefile)
• Build the application using the command:
$> ndk-build APP_ABI=x86
• Run the application and choose the x86 target in the emulator
• Transfer the application to the target and test Mobilitas © 2012 20
#
Building an x86 based application - demo
• Demo on VirtualBox virtual machine
• Demo on Lenovo S10-3t
Mobilitas © 2012 21
#
Atom processor in the market
• Tunnel Creek
• Intel’s First Generation Intel® AtomTM Processor-based System-on-Chip for Embedded
• Applications
Industrial Automation
IP Media Phone
Electronic Cash Register
In-Vehicle Infotainment
• Xolo
• Intel Medfield SoC based first phone, marketed by Lava India Ltd.
• Also released phones in Europe with Orange telecom provider and in China with Lenovo
• Based on a single core Atom processor
Mobilitas © 2012 22
#
Processor Chipset Intel Atom Processor Z2460
CPU 1.6 GHz Intel® Atom™ with Hyper Threading
Graphics core Clock speed 400 MHz
Operating System Android 2.3 (Gingerbread) - (upgradable to Android 4.0)
Sensors Accelerometer, Gyroscope, Magnetometer, Ambient light sensor, Proximity sensor
Audio Dual Speakers Yes, 0.3 W each
Digital Microphones 2
Video Video recording &
playback
Full HD 1080p@30fps
Video codecs
supported
MPEG4, 3GPP, WMC, H.264, VP8
Video Player Android Video Player, doubleTwist
Connectivity USB (2.0 High speed), Blutooth (v2.1), NFC Antenna (13.56MHz), WLAN support, Modem
(Intel XMM6260)
Xolo phone – some interesting specs.
Mobilitas © 2012 23
#
Questions
?
Mobilitas © 2012 24
#
Thank You
Sateesh Kavuri
Chief Technology Officer, Mobilitas Technologies
Bangalore
www.mobilitas.co
Mobilitas © 2012 25
#
Disclaimer
• The information provided herein is available publicly and does not contain any internal information of any company (Google, Intel)
• Intel, AtomTM, i3, i5 and i7 are trademarks of Intel Inc.
• Android is a trademark of Google Inc.
• VirtualBox is a registered trademark of Oracle Inc.
Mobilitas © 2012 26