mirror of
https://git.rtems.org/rtems-docs/
synced 2025-06-06 10:29:14 +08:00
210 lines
8.9 KiB
ReStructuredText
210 lines
8.9 KiB
ReStructuredText
Preface
|
||
#######
|
||
|
||
In recent years, the cost required to develop a
|
||
software product has increased significantly while the target
|
||
hardware costs have decreased. Now a larger portion of money is
|
||
expended in developing, using, and maintaining software. The
|
||
trend in computing costs is the complete dominance of software
|
||
over hardware costs. Because of this, it is necessary that
|
||
formal disciplines be established to increase the probability
|
||
that software is characterized by a high degree of correctness,
|
||
maintainability, and portability. In addition, these
|
||
disciplines must promote practices that aid in the consistent
|
||
and orderly development of a software system within schedule and
|
||
budgetary constraints. To be effective, these disciplines must
|
||
adopt standards which channel individual software efforts toward
|
||
a common goal.
|
||
|
||
The push for standards in the software development
|
||
field has been met with various degrees of success. The
|
||
Microprocessor Operating Systems Interfaces (MOSI) effort has
|
||
experienced only limited success. As popular as the UNIX
|
||
operating system has grown, the attempt to develop a standard
|
||
interface definition to allow portable application development
|
||
has only recently begun to produce the results needed in this
|
||
area. Unfortunately, very little effort has been expended to
|
||
provide standards addressing the needs of the real-time
|
||
community. Several organizations have addressed this need
|
||
during recent years.
|
||
|
||
The Real Time Executive Interface Definition (RTEID)
|
||
was developed by Motorola with technical input from Software
|
||
Components Group. RTEID was adopted by the VMEbus International
|
||
Trade Association (VITA) as a baseline draft for their proposed
|
||
standard multiprocessor, real-time executive interface, Open
|
||
Real-Time Kernel Interface Definition (ORKID). These two groups
|
||
are currently working together with the IEEE P1003.4 committee
|
||
to insure that the functionality of their proposed standards is
|
||
adopted as the real-time extensions to POSIX.
|
||
|
||
This emerging standard defines an interface for the
|
||
development of real-time software to ease the writing of
|
||
real-time application programs that are directly portable across
|
||
multiple real-time executive implementations. This interface
|
||
includes both the source code interfaces and run-time behavior
|
||
as seen by a real-time application. It does not include the
|
||
details of how a kernel implements these functions. The
|
||
standard’s goal is to serve as a complete definition of external
|
||
interfaces so that application code that conforms to these
|
||
interfaces will execute properly in all real-time executive
|
||
environments. With the use of a standards compliant executive,
|
||
routines that acquire memory blocks, create and manage message
|
||
queues, establish and use semaphores, and send and receive
|
||
signals need not be redeveloped for a different real-time
|
||
environment as long as the new environment is compliant with the
|
||
standard. Software developers need only concentrate on the
|
||
hardware dependencies of the real-time system. Furthermore,
|
||
most hardware dependencies for real-time applications can be
|
||
localized to the device drivers.
|
||
|
||
A compliant executive provides simple and flexible
|
||
real-time multiprocessing. It easily lends itself to both
|
||
tightly-coupled and loosely-coupled configurations (depending on
|
||
the system hardware configuration). Objects such as tasks,
|
||
queues, events, signals, semaphores, and memory blocks can be
|
||
designated as global objects and accessed by any task regardless
|
||
of which processor the object and the accessing task reside.
|
||
|
||
The acceptance of a standard for real-time executives
|
||
will produce the same advantages enjoyed from the push for UNIX
|
||
standardization by AT&T’s System V Interface Definition and
|
||
IEEE’s POSIX efforts. A compliant multiprocessing executive
|
||
will allow close coupling between UNIX systems and real-time
|
||
executives to provide the many benefits of the UNIX development
|
||
environment to be applied to real-time software development.
|
||
Together they provide the necessary laboratory environment to
|
||
implement real-time, distributed, embedded systems using a wide
|
||
variety of computer architectures.
|
||
|
||
A study was completed in 1988, within the Research,
|
||
Development, and Engineering Center, U.S. Army Missile Command,
|
||
which compared the various aspects of the Ada programming
|
||
language as they related to the application of Ada code in
|
||
distributed and/or multiple processing systems. Several
|
||
critical conclusions were derived from the study. These
|
||
conclusions have a major impact on the way the Army develops
|
||
application software for embedded applications. These impacts
|
||
apply to both in-house software development and contractor
|
||
developed software.
|
||
|
||
A conclusion of the analysis, which has been
|
||
previously recognized by other agencies attempting to utilize
|
||
Ada in a distributed or multiprocessing environment, is that the
|
||
Ada programming language does not adequately support
|
||
multiprocessing. Ada does provide a mechanism for
|
||
multi-tasking, however, this capability exists only for a single
|
||
processor system. The language also does not have inherent
|
||
capabilities to access global named variables, flags or program
|
||
code. These critical features are essential in order for data
|
||
to be shared between processors. However, these drawbacks do
|
||
have workarounds which are sometimes awkward and defeat the
|
||
intent of software maintainability and portability goals.
|
||
|
||
Another conclusion drawn from the analysis, was that
|
||
the run time executives being delivered with the Ada compilers
|
||
were too slow and inefficient to be used in modern missile
|
||
systems. A run time executive is the core part of the run time
|
||
system code, or operating system code, that controls task
|
||
scheduling, input/output management and memory management.
|
||
Traditionally, whenever efficient executive (also known as
|
||
kernel) code was required by the application, the user developed
|
||
in-house software. This software was usually written in
|
||
assembly language for optimization.
|
||
|
||
Because of this shortcoming in the Ada programming
|
||
language, software developers in research and development and
|
||
contractors for project managed systems, are mandated by
|
||
technology to purchase and utilize off-the-shelf third party
|
||
kernel code. The contractor, and eventually the Government,
|
||
must pay a licensing fee for every copy of the kernel code used
|
||
in an embedded system.
|
||
|
||
The main drawback to this development environment is
|
||
that the Government does not own, nor has the right to modify
|
||
code contained within the kernel. V&V techniques in this
|
||
situation are more difficult than if the complete source code
|
||
were available. Responsibility for system failures due to faulty
|
||
software is yet another area to be resolved under this
|
||
environment.
|
||
|
||
The Guidance and Control Directorate began a software
|
||
development effort to address these problems. A project to
|
||
develop an experimental run time kernel was begun that will
|
||
eliminate the major drawbacks of the Ada programming language
|
||
mentioned above. The Real Time Executive for Multiprocessor Systems
|
||
(RTEMS) provides full capabilities for management of tasks,
|
||
interrupts, time, and multiple processors in addition to those
|
||
features typical of generic operating systems. The code is
|
||
Government owned, so no licensing fees are necessary. RTEMS has
|
||
been implemented in both the Ada and C programming languages.
|
||
It has been ported to the following processor families:
|
||
|
||
- Altera NIOS II
|
||
|
||
- Analog Devices Blackfin
|
||
|
||
- Atmel AVR
|
||
|
||
- ARM
|
||
|
||
- Freescale (formerly Motorola) MC68xxx
|
||
|
||
- Freescale (formerly Motorola) MC683xx
|
||
|
||
- Freescale (formerly Motorola) ColdFire
|
||
|
||
- Intel i386 and above
|
||
|
||
- Lattice Semiconductor LM32
|
||
|
||
- NEC V850
|
||
|
||
- MIPS
|
||
|
||
- PowerPC
|
||
|
||
- Renesas (formerly Hitachi) SuperH
|
||
|
||
- Renesas (formerly Hitachi) H8/300
|
||
|
||
- Renesas M32C
|
||
|
||
- SPARC v7, v8, and V9
|
||
|
||
Support for other processor families, including RISC, CISC, and DSP, is
|
||
planned. Since almost all of RTEMS is written in a high level language,
|
||
ports to additional processor families require minimal effort.
|
||
|
||
RTEMS multiprocessor support is capable of handling
|
||
either homogeneous or heterogeneous systems. The kernel
|
||
automatically compensates for architectural differences (byte
|
||
swapping, etc.) between processors. This allows a much easier
|
||
transition from one processor family to another without a major
|
||
system redesign.
|
||
|
||
Since the proposed standards are still in draft form,
|
||
RTEMS cannot and does not claim compliance. However, the status
|
||
of the standard is being carefully monitored to guarantee that
|
||
RTEMS provides the functionality specified in the standard.
|
||
Once approved, RTEMS will be made compliant.
|
||
|
||
This document is a detailed users guide for a
|
||
functionally compliant real-time multiprocessor executive. It
|
||
describes the user interface and run-time behavior of Release
|
||
4.10.99.0 of the C interface
|
||
to RTEMS.
|
||
|
||
.. COMMENT: COPYRIGHT (c) 1988-2008.
|
||
|
||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
||
|
||
.. COMMENT: All rights reserved.
|
||
|
||
.. COMMENT: This chapter is missing the following figures:
|
||
|
||
.. COMMENT: Figure 1-1 RTEMS Application Architecture
|
||
|
||
.. COMMENT: Figure 1-2 RTEMS Internal Architecture
|
||
|