Historically used most widely in mobile devices such as smartphones and tablets, the Android operating system (OS) has taken on new markets outside this space. Developers using ARM processors tend to gravitate toward Android for its flexibility, power and versatility. Based on the open source Linux kernel, Android retains many of the characteristics of open source software, even with Google’s acquisition of Android, it morphed into a hybrid model – between a commercial and open source OS. However, the benefit to Android is that it is license free and protected from claims by the open source community. Android is pre-configured with a powerful set of capabilities. Google defines the middleware, multimedia frameworks and key system firmware associated with the OS, which differs from open source OSes such as Linux where developers must integrate these capabilities into the open source kernel.
The number of Android smartphone applications was exceeded 400,000 (as of October 2011), which proves its magnitude of growth. Frequent releases of Android and a roadmap for the future show longevity and commitment to the OS. The most recent release was Android 4.0, or Ice Cream Sandwich, which merged the smartphone and tablet pieces of the OS into a single version.
New frontiers for Android
Android has seen extensive market share in the mobile phone market, and it’s migrating to similar markets. These markets include tablets, thin client personal computers, wireless video conferencing systems and televisions featuring GoogleTV.
The smartphone sleek touch screen interfaces are so popular that these types of interfaces are proliferating into every day products used in the home and commercially. Because of its flexibility, Android is also being applied to rugged personal digital assistants (PDAs), smart home appliances, medical diagnostic user interfaces and even industrial systems.
From a functional perspective, most of these applications share several basic aspects. They all place particular importance on multimedia content, feature robust, graphically-oriented and intuitive touch-based user interfaces and a communications component – all strength of Android!
Designers for these new, sleek products who are contemplating migration from an existing application to the Android environment should note the differences between Linux and Android. There are many similar capabilities, such as multimedia processing, file system calls, cocs, driver patches and other software modules. However, they are not the same, even though Android is build upon a Linux kernel. Designers will need to do some re-coding when moving from Linux to Android.
Optimized for ARM cores
The Android OS is a perfect fit for ARM processor cores, specifically the ARM Cortex-A cores, including ARM Cortex-A8 offerings. The low power consumption and functionality of a netbook class CPU for embedded systems makes the ARM Cortex-A8 a perfect fit for mobile embedded systems. ARM Cortex-A8 devices include an ARM Advanced SIMD technology known as NEON to accelerate operations such as codecs or graphics pixel manipulations can improve performance over straight ARM or THUMB code significantly. TI ARM devices include the NEON Advanced SIMD engine. ARM9 cores are widely deployed in embedded systems, but Android is not optimized for this core. It can certainly function on an ARM9 device, but performance is significantly hindered when running Android.
Android-based systems usually feature multimedia applications, and developers should note how the video, audio and graphics are processed by the system. A lot of the multimedia codecs – encoders and decoders – are pre-configured with Android at low-resolutions, since they are targeted at ARM Cortex-A8 general-purpose cores. But many of the industry processors, such as TI’s OMAP mobile applications processors, DaVinci video processors and C6000 DSP + ARM processors combine the ARM and DSP processing cores. This is helpful because the DSP core can offload processing tasks from the ARM core and accelerate multimedia processing beyond capabilities of the ARM core.
Android development tools
Java and C/C++ are the two programming languages Android offers developers. Java utilizes the Android software development kit (SDK) and the Dalvik virtual machine optimized for mobile devices. Java will run anywhere that supports Java. The Android Native Development Kit (NDK) is used with C/C++ code, which limits the code to a specific CPU architecture. However, since Android devices are mostly ARM-based, it’s definitely not a severe limitation. This is a bigger problem for x86 vendors that want to use Android. The Java only applications run without modification, but if an application requires some NDK code developed for ARM, it needs to be manually ported to the x86 device.
When evaluating Android, developers can use a complete emulation environment to build an application before having physical hardware. This environment can be downloaded from http://developer.android.com/sdk to run on an Apple, Linux or Windows personal computer.
An Android Development Tools (ADT) plug-in from Google Is featured in the popular Eclipse integrated development environment (IDE). Eclipse comes equipped with many tools to quickly set up a project, develop an application user interface, add components based on the Android Framework Application Programming Interface (API), debug code with tools from the Android SK and export completed code. TI’s Code Composer Studio v.5 IDE (Fig. 1) is based on Eclipse and extends it with features such as advanced debug capabilities (i.e. Linux Aware Debug), hardware debugging, profiling, simulation and others. If developers implement Code Composer Studio and the ADT plug-in, they can debug Android Java and C/C++ code, the Linux kernel, code for a DSP and more all within the same IDE. Developers can also debug code running on the Android emulator with Code Composer Studio and the ADT plug-in.