A revolution has taken place in the open mobile operating-system (OS) arena since the launch of Google’s Android almost three years ago. The sheer market power of Google, the attractiveness of the platform’s open environment for developers, an expanding number of connected consumer electronics, and an estimated 40 Android-based handsets planned for shipping in 2010 have created significant momentum for the technology.
According to CNN, Android-based smart phones surpassed Apple iPhone shipments in the U.S. for the first quarter of 2010, clearly showing how Android is open for innovation. If the mobile industry buzz is to be believed, the increasing prominence of Android may be instrumental in triggering the merger of Nokia S60 and Symbian and the subsequent creation of a whole new roadmap for the mobile platform industry.
Over the past few years, quite a few Linux-based open mobile OS platforms have emerged: Bada from Samsung, LiMO from the LiMO Foundation, Moblin from Intel, Maemo from Nokia, MeeGO from Intel & Nokia (MeeGO = Moblin + Maemo), Android from Google, and ALP from Access. But Android’s well crafted software stack with software development kits (SDKs) and Novell developer kits (NDKs), ease of programming, Google’s support, large user community, and periodic releases have made it a global, open OS for the wireless future.
Android has even successfully transcended beyond the mobile terminals space and is generating an increasing interest in the consumer electronics, automotive, home entertainment, video surveillance, and industrial equipment/control domains. Although Android is the quintessential fit for ARM processor technologies, commercial ports of Android are available on PowerPC, SH4 (Renesas), MIPS, and x86 platforms today. This portability makes it the most widely available mobile OS among all the other Linux-based open platforms.
Android offers the unique advantage of having a complete set of software for the device—an operating system, middleware, and key mobile applications—all bundled in a single package. Unlike the closed mobile phone OSs, such as iPhone OS 3.0, RIM, or Windows Mobile, Android is completely open, although both of its flavors have their share of challenges while offering distinct levels of user experience.
Android’s Winning Edge
Android is maintaining its winning edge over other competitive Linux-based open mobile OSs. According to Gartner, 6.8 million Android handsets were sold in 2009, which is a 3.9% share of global smart-phone sales. That’s up from 0.5% in 2008, and it continues to grow.
Continue to next page
The Android Market applications store is growing by leaps and bounds with more than 35,000 paid and free mobile applications, which Android users can readily download and use, while being a lot easier to access and manage than iPhone’s App Store, for example.
Smart-phone OEMs such as HTC and Motorola and independent software vendors like Ikivo have reaped the benefits and introduced rich and compelling user interfaces and applications on Android. The availability of these advanced and next-generation user experiences has catapulted Android straight into the league of the iPhone (Fig. 1).
Beyond The Mobile Phone
The core design of the Android OS is strongly influenced by the ARM processor architecture, which made it the de facto choice for mobile phones as the first complete phone software stack based on Linux. Since Android is based on Linux, there’s a window of opportunity to make it available on other processor technologies and thereby extend it beyond the mobile-phone space.
The device OEM community has shown a keen interest in customizing Android for the typical non-ARM embedded areas such as consumer electronics, automotive, and home automation. Currently, Android is available on platforms such as MIPS, PowerPC, SH4, and x86 processor technologies besides ARM. The availability of Android across device categories and processor technologies, from cell phones to other consumer electronics, automotive, and home devices, has enabled developers to create an application once and then use it across devices with minimal porting efforts.
The task of porting Android to other processor technologies is not trivial, as Android is heavily influenced by the ARM architecture. So, what does it take to port Android to other processor technologies?
Android is a Dalvik VM (Java Virtual Machine) mobile software platform based on Linux. It is different from the VMs used in the standard J2ME platforms. J2ME platforms use Kilobyte Virtual Machine (KVM) and C Virtual Machine (CVM) for J2ME’s Connected Limited Device Configuration (CLDC) and Connected Device Configuration (CDC) configurations, respectively.
Continue to next page
However, it is not mandatory as per the CLDC and CDC specifications for KVM or CVM to be used in J2ME environment. Only a VM that adheres to the requirements of the J2ME specification is required. Many device manufacturers license the KVM or CVM from Sun Microsystems for their J2ME implementation. They are not required for J2ME compliance.
Porting Android To An ARM-Based Board
Porting Android to an ARM processor-based board is relatively easy compared to porting to a non-ARM based board. There are two steps. First, designers need a stable Linux board support package (BSP), including the bootloader, Linux Kernel, and the device drivers for the ARM board. Two options are available.
With the first option, the Linux BSP (ideally with Linux 2.6.29 Kernel or later) for the board is already available, either from the OEM or silicon vendor or as a free download. Making it stable in your environment will require some work, though, and you may have to develop additional drivers to fully support your board. Or, you can purchase a commercial release from third parties. In the second option, you can develop the Linux BSP from scratch. Obviously, this will require time and effort to develop, test, and harden the BSP before it can be used on the target board.
There are two things to keep in mind. First, it is better to use the same version of the Linux Kernel that the Android release is based on, as it will ease the Android porting effort on the Linux BSP. And second, you also may have to apply patches to the Linux Kernel for the target processor-specific functionalities. These patches are typically available from the silicon vendors.
Once a stable Linux BSP is available, the next step would be to port Android on it. Download the Android-specific patches from Google’s Android site and apply them on the Linux Kernel. This will create an Android kernel that can then be downloaded on the board.
Figure 2 explains the Android porting steps required on an ARM processor-based board. The diagram assumes the Linux BSP is developed from scratch. If a Linux BSP is already available that is fully configured for the target board, then the first step in the porting process won’t be required or may be partially required for integrating additional device drivers for the board.
Porting Android To A Non-ARM-Based Board
Porting Android to a non-ARM based board is not trivial either, as it will require processor-specific adaptations. In addition to the porting steps mentioned above, more steps are required after a stable Linux BSP is available for the board. Let us assume that we are porting Android on the Renesas SH4 Super-H processor.
To port Android on a different processor architecture like SH4 (Super-H), the following steps are essential. Approximately 4000 to 4500 lines of code must be updated for the port:
• Modify the Android build system to support the SH4 architecture.
• Port the Dalvik VM for SH4.
• Include architecture and build support.
• Include optimizations for Dalvik acceleration.
• Extend Bionic run-time library/linker support to accommodate the SH4 architecture.
• Hardware-specific adjustments are needed to leverage audio, video, and graphics.
• Port the Android media framework, especially the codecs.
• Port other libraries.
• Integrate Android-specific Linux Kernel patches into the board’s BSP.
• Support the SH4 architecture technology in the Android SDK and Android targets in the customizable development system.
• Conduct the platform and integration testing of Android stack components. Very thorough testing is required.
Continue to next page
Among these steps, the porting of the Dalvik VM and Bionic C library for the SH4 are the most critical and complex activities. Upon completing the porting activity, a thorough testing is mandated to validate the port.
While these explanations of the Android porting process on both ARM-based and non-ARM-based target platforms are brief, the actual implementation will require low-level and platform-level expertise and a thorough understanding of the target environment, especially for the non-ARM platforms.
Open Versus Closed Mobile OSs
Both the open (e.g., Android) and closed mobile OSs (e.g., iPhone, BlackBerry OS) have their shares of advantages and disadvantages. We won’t bring Symbian into the closed OS bracket, as Nokia has positioned it as an open OS through the Open Symbian Foundation (OSF).
Among closed OSs, both RIM (BlackBerry OS) and Apple (iPhone OS) are very successful in offering their solutions on proprietary platforms that only run on their smart phones. Apple especially has revolutionized the smart-phone look and feel with its state of the art next-generation user interface. The iPhone OS platform is under the complete control of Apple, and the applications are well aware of the hardware and the OS running underneath. Fragmentation is almost nonexistent.
Android, in contrast, is open and supported by the members of the Open Handset Alliance (OHA) in the form of released smart phones based on Android, including those from HTC, Samsung, and Motorola. Since Android is open, OEMs can manipulate it to suit their needs. As a result, multiple flavors of Android are running on different hardware.
If this continues unchecked, Android will lose the cohesive platform ideology. On the positive side, any OEM or operator/OEM combination can build smart phones based on Android right from the ground up on new hardware without paying any licensing fee. Today, Android runs on a plethora of devices, including cell phones, automotive, home appliances, and other consumer electronics devices like HDTVs and set-top boxes.
Another advantage for Android is the choice of processors. Android runs on a variety of processors, from 500-MHz ARM Cortex-A8 to MIPS Core-based processors to the 1-GHz Qualcomm Snapdragon. It’s also being ported to the Power architecture and Renesas SH4 Super-H processors. This makes Android the single most widely available OS. In comparison, iPhone OS is available only on Samsung ARM Cortex-A8 processors mainly used in the cell-phone space.
While Apple’s App Store is much richer than it, the Android Market is rapidly gaining ground with more than 65,000 applications available today. And finally, Android has the support of multitasking and background notifications. iPhone OS 3.0 does not have these features, though iPhone OS 4.0 may include these elements going forward.
Continue to next page
After two years, Android has the advantage over its close competitors, at least for now. In every release of Android—from Version 2.1 (Éclair on Linux Kernel 2.6.29) to planned future releases like Version 2.2 (FroYo on Linux Kernel 2.6.32) to Gingerbread (Linux Kernel 2.6.33 or 34)—Android is constantly offering new innovative features. The adoption of Android beyond the mobile phone space is also increasing with every passing day, and new gizmos like e-readers, netbooks, and tablets are surfacing.
More recently, MeeGO, the new entrant in the Open OS bandwagon, is being touted as the Android killer. Interestingly, though, Intel, one of the prime sponsors of MeeGO, is also a member of the OHA and there was an effort in place for porting Android on Intel’s Moorestown Atom processor-based smart-phone platform. Now, Android has been successfully ported on the Moorestown SoC. Well, it’s up to you to decide. But Android seems to have scored again and continues to be open for innovation.
Abhimanyu Das has more than 20 years of industry experience in the embedded systems, hardware, and telecom domains. He is currently an assistant vice president of technology at Aricent Technologies (Holdings) Ltd. His major interest areas include mobile handset design, LTE, FPGA/ASIC design, and 3G/4G technologies. He can be reached at firstname.lastname@example.org.