Welcome to this special issue on embedded systems, which are information-processing systems embedded in larger products, such as cars, airplanes, and fabrication or communication equipment. In most embedded systems, information processing is invisible to the user. The main reason for buying such a system is not information processing, but the system's overall functionality. Embedded systems must also be efficient in terms of weight, cost, size, and energy consumption. Moreover, they must be dependable and in many cases must meet real-time constraints. The market for embedded systems will grow significantly over the next years. For example, Kontron, one of the leading vendors of embedded computers, expects 40% annual growth over the next four years in the voice-traffic network-equipment market ( http://www.icsadvent.com/applications/ap_convergence.cfm).
Early embedded systems often used special-purpose hardware. Nowadays, accommodating design changes, error correction, and product upgrades requires more flexibility. Today's systems provide such flexibility through processors and software, along with some special-purpose hardware. As a result, about 95% of all processors used worldwide are in embedded systems; many of these processors are still 8-bit-wide. In some application areas, the complexity of the embedded system's software doubles every two years. 1
Thus, emphasizing design techniques for such systems is critical.
The design of embedded systems should include application knowledge and should be based on a specification of the required functionality. Various specification languages exist: For many systems, C is the first choice, but others use an assembly language, Java, or a graphical language.
shows a possible, albeit simplified, design flow. Design steps in a typical flow include
• decomposing the specification into processes,
• mapping processes to special-purpose hardware or processors,
• compiling processes for the target processor,
• scheduling processes in time,
• designing specialized hardware,
• merging the results of software and hardware design,
• validating the design at various phases, and
• planning tests.
Certain issues—performance, size, cost, energy consumption, and dependability—are important at every step.
Figure 1. Possible design flow for an embedded system.
This special issue considers a selected set of these design steps and their supporting tools. In the first article, Dongkun Shin et al. present a design environment that helps analyze and minimize energy consumption. This environment can be very useful to software engineers who aren't familiar with energy-related issues. An article by Angela Krstic et al. analyzes the consequences of processors' increasing clock rates. The authors show that running self-tests on embedded processors can facilitate testing processors at full speed.
The third article, by Ing-Jer Huang et al., proposes techniques for adding test hardware to processors. These techniques can greatly simplify debugging and help validate the final design. Processor independence is a key feature to this proposal. The fourth article, by Martijn Rutten et al., describes template-based multiprocessor architectures for multimedia applications. The demand for increased processing power, along with the manufacturability of multiprocessors on a chip, is making multiprocessor architectures a hot topic.
In another article, Rainer Leupers highlights the special requirements of compilers for embedded processors. He stresses techniques to make compilers efficient for embedded processors. The last article, by Pierre Paulin and Miguel Santana, discusses techniques for solving compiler-related problems in industry. Using these techniques, STMicroelectronics can discontinue using assembly-language programming.
Please enjoy this special issue.
is a professor in the Computer Science Department at the University of Dortmund, Germany. His research interests include code generation for embedded processors, embedded systems, hardware-software codesign, high-level test generation, and high-level synthesis. Marwedel has a PhD in physics from the University of Kiel, Germany. He is a member of the IEEE Computer Society, the ACM, and the Gesellschaft für Informatik.