Android is today one of the leading platforms for mobile devices. The fact that Android is open source distinguishes it from most other mobile platforms like iOS and Windows Phone 7.
The large Android community uses this fact to port the original Android implementation to different devices: TVs, E-Readers or cameras, or to connect it to different kinds of peripheral hardware.
We have made use of the fact that Android is built upon a Linux kernel to extend it with real-time capabilities without losing any Android specific functionality, while preserving backward compatibility. An Android system with the ability to serve real-time requests enlarges the areas of application for Android devices to time-critical domains. For instance, real-time Android could then be used as a monitoring device in industrial plants or as a control platform for home automation.
The real-time extensions could also improve the core functionalities of Android itself by assuring the quality of speech processing or video playback. In the following we present an approach to improve realtime capabilities of Android 2.2 without losing any of its original features.
Further, we provide required interfaces for accessing real-time functionality on Java level, which is the common way of developing Android applications. To improve the reliability of the lower system level, we apply the RT_PREEMPT patch to the Linux kernel, which is the core part of the Android architecture.
Since Android applications are typically written in Java and executed inside Dalvik virtual machine (DVM), we introduce necessary modifications to the DVM and the memory management system as well.
Normally garbage collection becomes an issue in real-time systems if its invocation interrupts a process with real-time requirements or causes violations of predefined deadlines.
Instead, in our approach, we allow explicit freeing of memory at the Java programming level, without triggering the automatic garbage collection. Real-time related functionality is encapsulated in one system class and provided to the developer through corresponding application programming interfaces, just as it is done for the development of conventional, non-real-time Android applications.
To read this external content in full, download the complete paper from the author's online archives .