The Software Engineering for Real-Time Systems (SERTS)
Laboratory is leading University of Maryland's efforts in
advancing software technology for embedded systems.
Embedded systems pervade nearly every aspect of our lives.
They can be found in VCRs, vending machines, and cellular
phones, as well as being critical components in complex industrial applications
such as manufacturing plants, flight and traffic controllers, and medical
systems. Even your car has ten to twenty embedded processors in it!
Industry has a significant demand for engineers experienced in
developing embedded real-time software. In fact, the growth of
the embedded systems market has been so substantial that
some experts cite a 25% growth rate each year, in an annual
market of more than $10 billion. The training offered by universities in
embedded systems, however, is growing by only a
fraction of that amount. As a result, many of the people creating embedded
software are engineers trained in other areas-
most notably hardware design, mechanical engineering, controls, or
communications. This lack of software engineering
expertise leads to lower quality software and higher development costs.
There are two fundamental methods of improving this serious
manpower problem: (1) educate more engineers in the field of embedded
real-time software; and (2) reduce the complexity of
embedded software, so that less expertise is needed to build
the systems. The first method is addressed by the educational
goals in SERTS, while the second method is addressed by the
research objectives.
The SERTS educational goals emphasize practical hands-on,
inter-disciplinary learning by designing and implementing real
embedded systems in a university laboratory. SERTS projects
include pinball machines, electric trains, cameras, microphones, and remote
control units. These projects have many of the same design and implementatio
issues as the systems developed by industry, but are much cheaper and safer,
making them ideal for student experimentation.
The SERTS research plan focuses on investigating advanced
real-time operating system (RTOS) technology for embedded
systems. By enhancing the operating system, it is possible to
create a virtual machine that is more user friendly, so less
expertise is required to program and debug the software. Such
an approach has been extremely successful in the general-purpose computing
domain. For example, Windows 95 is much
more user friendly and contains many more development tools
than its predecessor, MS-DOS. It attracts many users with little
computer expertise. Unfortunately, similar progress has not
occurred in the embedded systems domain. The functionality
and quality of today's RTOS is not much different than the
RTOS of 10 years ago, so significant computer engineering
expertise is still needed to build a reliable embedded system.
Key research challenges include creating a more friendly operating system
without sacrificing the performance, predictability, and reliability;
developing software components that only uses a small amount of memory, and
modeling specialized target hardware that is often difficult to generalize.
The SERTS RTOS research falls into two broad categories: (1)
operating system mechanisms that execute on the target
embedded platform; and (2) tools that execute within the host
development environment.
In the first category, we have three projects addressing the operating system
mechanisms. In one of these projects, we are investigating hardware/software
co-design of an RTOS and a microcontroller. This will reduce the overhead
incurred by more complex RTOS functions. As part of a second project, we are
creating an RTOS for microcontrollers and
digital signal processors to support dynamically reconfigurable
component-based software. This project includes research in
software modeling, scheduling, communication, memory management, device
drivers, and embedded networking. In the third project, we have identified the
key research issues for improving real-time error detection and handling, and
we are developing methods and techniques to address those issues.
In the second category, we are developing computer-aided
software engineering (CASE) tools that help designers implement embedded software. In one
of these projects, our goal is to develop a tool that automates the analysis, debugging,
and fine-tuning of an embedded system's temporal properties.
Existing CASE tools focus on the software specification and
design of embedded systems. However, they provide little-if
any-support after the software has been implemented. In a
second project, we are analyzing the memory performance in
digital signal processors, and creating a tool that aids designers
to structure and configure their applications to most efficiently
use memory, taking into account differences in performance
when accessing internal versus external memory.