Design of Embedded Systems: New Challenges
by Gilbert Cabillic and Isabelle Puaut
Ongoing work at INRIA Rennes concerns embedded system software, and addresses the problems presented in providing an easy and safe framework for estimating software's resource consumption, which is a difficult task when done manually by a benchmarking approach. Further, by enabling dynamic download of Java applications, a discontinuity in the embedded application development life cycle is introduced. This is a new and significant contribution towards opening up the use of embedded systems.
Traditionally, the development of embedded software has had to take into account several constraints stemming from either the software or the embedded architecture. Avionic or robotic embedded software has inherent real-time constraints that need to be supported by the underlying operating system. Regarding the architecture, limited and customised resource features (eg shared memory multiprocessor with multiple frequencies, a small capacity of several models of memory, limited battery capacity) increase the complexity of building an embedded operating system.
To facilitate the development of embedded systems, we address two different challenges not met in existing embedded systems. Our first focus is on a resource consumption evaluation of embedded software (CPU, energy, or memory). Our second challenge aims to enable the use of Java for small embedded devices like cell-phones or Personal Digital Assistants. This will support the dynamic download of applications and will radically change the embedded application development life cycle.
Predicting Resource Consumption of Embedded Software: Static Worst-Case Execution Time Analysis and Beyond
Predicting the amount of resources required by embedded software is of prime importance for verifying that the system will fulfill its real-time and resource constraints. A particularly important point in the framework of hard real-time embedded systems is to predict the Worst-Case Execution Times (WCETs) of tasks, so that it can be proven that task deadlines will be met.
Our ongoing research concerns methods for automatically obtaining the upper bounds of application execution times on a given hardware. Static analysis of the source code of applications is used to identify worst-case execution scenarios; static analysis methods have been preferred to testing because the latter class of methods requires the exploration of all possible inputs for a piece of software to identify its longest execution path. Hardware models of processors are used to obtain WCET instruction sequences. The use of hardware models instead of the actual hardware allows static WCET analysis methods to be used earlier in the application development life cycle. In addition to allowing the verification of deadlines, static WCET analysis methods can help in selecting or dimensioning the hardware used in hard real-time embedded systems, and can serve in the comparison of different application implementation strategies. A result of our research on static WCET analysis is the open-source analyser Heptane (see Figure 1) aimed at obtaining WCETs on processors with in-order execution, equipped with caches and pipelined execution. The modularity of Heptane allows it to be ported to different target processors and programming languages.
|Figure 1: Heptane static WCET analysis tool.
Our belief is that an early estimation of the resource consumption of embedded software allows its suitability to the constraints of embedded systems (limited time, memory or energy) to be proven early in the application development life cycle. In the future, our ongoing work on static time estimation will be extended to the other scarce resources of embedded systems, such as energy consumption. This is a new and challenging issue for hard real-time embedded systems.
Bringing Java to Small Embedded Devices
Java offers several serious advantages that could broaden the use of the Wireless Personal Digital Assistants (WPDAs) for the user. Firstly, Java is portable and hence is independent of the hardware platform. This is very important for reducing the cost of application development in the pervasive embedded market. As Java can be run anywhere, the application development can be done on a desktop without the need for the target hardware platform. This is a strong discontinuity on the application development life cycle for embedded architectures. Secondly, Java supports dynamic loading of applications and can significantly contribute to extending the use of WPDAs (see Figure 2).
|Figure 2: Bringing Java on embedded devices.
For these reasons, Java is of great interest for these embedded environments. Nevertheless, even if Java shows much potential, one of its main drawbacks is the need for resources in order to run an application. These include memory volume, execution time and energy consumption, which are the typical resources examined for embedded system tradeoff conception. It is therefore clear that the success of Java is conditioned by the availability of a Java execution environment that will manage these resources efficiently.
Over the last four years, our ongoing research has been done in cooperation with Texas Instruments, and aims to provide a Java execution environment for WPDA architectures that permits a good tradeoff between execution time, energy and memory consumption. During this research, we first identified Java opcodes that will significantly influence the energy consumption. We then designed a new approach to construct a Java execution environment based on a modular decomposition. Using modularity, it is possible to specialise some parts of a Java Virtual Machine (Jvm) for one specific processor (eg to exploit low power features of Digital Signal Processing processors in order to minimise energy consumption). Lastly, we implemented our Jvm from scratch and validated it on a WPDA architecture based on an Omap Texas Instruments platform (a shared memory heterogeneous multiprocessor). Our current work is focusing on how to provide a high-performance Java embedded platform, based on strong hardware and software cooperation.
Nowadays, an embedded system is closed to the outside world and its development is difficult. Many systems are implemented using assembler or C language. Thanks to our research on Java, and in particular its performance, Java could become a very valuable tool for designers building embedded systems. For users, it will bring the openness of an embedded system. These features could also make it easier to deploy and design ubiquitous applications. For designers, it enables the use of a strong typed object language instead of basic languages like C, or assembler.
Gilbert Cabillic, INRIA
Tel: +33 2 99 84 72 92
Isabelle Puaut, INSA de Rennes, France
Tel: +33 2 99 84 73 10