source: rtems-docs/c_user/preface.rst @ 489740f

4.115
Last change on this file since 489740f was 489740f, checked in by Chris Johns <chrisj@…>, on 05/20/16 at 02:47:09

Set SPDX License Identifier in each source file.

  • Property mode set to 100644
File size: 8.7 KB
Line 
1.. comment SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. COMMENT: COPYRIGHT (c) 1988-2008.
4.. COMMENT: On-Line Applications Research Corporation (OAR).
5.. COMMENT: All rights reserved.
6
7Preface
8#######
9
10In recent years, the cost required to develop a software product has increased
11significantly while the target hardware costs have decreased.  Now a larger
12portion of money is expended in developing, using, and maintaining software.
13The trend in computing costs is the complete dominance of software over
14hardware costs.  Because of this, it is necessary that formal disciplines be
15established to increase the probability that software is characterized by a
16high degree of correctness, maintainability, and portability.  In addition,
17these disciplines must promote practices that aid in the consistent and orderly
18development of a software system within schedule and budgetary constraints.  To
19be effective, these disciplines must adopt standards which channel individual
20software efforts toward a common goal.
21
22The push for standards in the software development field has been met with
23various degrees of success.  The Microprocessor Operating Systems Interfaces
24(MOSI) effort has experienced only limited success.  As popular as the UNIX
25operating system has grown, the attempt to develop a standard interface
26definition to allow portable application development has only recently begun to
27produce the results needed in this area.  Unfortunately, very little effort has
28been expended to provide standards addressing the needs of the real-time
29community.  Several organizations have addressed this need during recent years.
30
31The Real Time Executive Interface Definition (RTEID) was developed by Motorola
32with technical input from Software Components Group.  RTEID was adopted by the
33VMEbus International Trade Association (VITA) as a baseline draft for their
34proposed standard multiprocessor, real-time executive interface, Open Real-Time
35Kernel Interface Definition (ORKID).  These two groups are currently working
36together with the IEEE P1003.4 committee to insure that the functionality of
37their proposed standards is adopted as the real-time extensions to POSIX.
38
39This emerging standard defines an interface for the development of real-time
40software to ease the writing of real-time application programs that are
41directly portable across multiple real-time executive implementations.  This
42interface includes both the source code interfaces and run-time behavior as
43seen by a real-time application.  It does not include the details of how a
44kernel implements these functions.  The standard's goal is to serve as a
45complete definition of external interfaces so that application code that
46conforms to these interfaces will execute properly in all real-time executive
47environments.  With the use of a standards compliant executive, routines that
48acquire memory blocks, create and manage message queues, establish and use
49semaphores, and send and receive signals need not be redeveloped for a
50different real-time environment as long as the new environment is compliant
51with the standard.  Software developers need only concentrate on the hardware
52dependencies of the real-time system.  Furthermore, most hardware dependencies
53for real-time applications can be localized to the device drivers.
54
55A compliant executive provides simple and flexible real-time multiprocessing.
56It easily lends itself to both tightly-coupled and loosely-coupled
57configurations (depending on the system hardware configuration).  Objects such
58as tasks, queues, events, signals, semaphores, and memory blocks can be
59designated as global objects and accessed by any task regardless of which
60processor the object and the accessing task reside.
61
62The acceptance of a standard for real-time executives will produce the same
63advantages enjoyed from the push for UNIX standardization by AT&T's System V
64Interface Definition and IEEE's POSIX efforts.  A compliant multiprocessing
65executive will allow close coupling between UNIX systems and real-time
66executives to provide the many benefits of the UNIX development environment to
67be applied to real-time software development.  Together they provide the
68necessary laboratory environment to implement real-time, distributed, embedded
69systems using a wide variety of computer architectures.
70
71A study was completed in 1988, within the Research, Development, and
72Engineering Center, U.S. Army Missile Command, which compared the various
73aspects of the Ada programming language as they related to the application of
74Ada code in distributed and/or multiple processing systems.  Several critical
75conclusions were derived from the study.  These conclusions have a major impact
76on the way the Army develops application software for embedded
77applications. These impacts apply to both in-house software development and
78contractor developed software.
79
80A conclusion of the analysis, which has been previously recognized by other
81agencies attempting to utilize Ada in a distributed or multiprocessing
82environment, is that the Ada programming language does not adequately support
83multiprocessing.  Ada does provide a mechanism for multi-tasking, however, this
84capability exists only for a single processor system.  The language also does
85not have inherent capabilities to access global named variables, flags or
86program code.  These critical features are essential in order for data to be
87shared between processors.  However, these drawbacks do have workarounds which
88are sometimes awkward and defeat the intent of software maintainability and
89portability goals.
90
91Another conclusion drawn from the analysis, was that the run time executives
92being delivered with the Ada compilers were too slow and inefficient to be used
93in modern missile systems.  A run time executive is the core part of the run
94time system code, or operating system code, that controls task scheduling,
95input/output management and memory management.  Traditionally, whenever
96efficient executive (also known as kernel) code was required by the
97application, the user developed in-house software.  This software was usually
98written in assembly language for optimization.
99
100Because of this shortcoming in the Ada programming language, software
101developers in research and development and contractors for project managed
102systems, are mandated by technology to purchase and utilize off-the-shelf third
103party kernel code.  The contractor, and eventually the Government, must pay a
104licensing fee for every copy of the kernel code used in an embedded system.
105
106The main drawback to this development environment is that the Government does
107not own, nor has the right to modify code contained within the kernel.  V&V
108techniques in this situation are more difficult than if the complete source
109code were available. Responsibility for system failures due to faulty software
110is yet another area to be resolved under this environment.
111
112The Guidance and Control Directorate began a software development effort to
113address these problems.  A project to develop an experimental run time kernel
114was begun that will eliminate the major drawbacks of the Ada programming
115language mentioned above. The Real Time Executive for Multiprocessor Systems
116(RTEMS) provides full capabilities for management of tasks, interrupts, time,
117and multiple processors in addition to those features typical of generic
118operating systems.  The code is Government owned, so no licensing fees are
119necessary.  RTEMS has been implemented in both the Ada and C programming
120languages.  It has been ported to the following processor families:
121
122- Adapteva Epiphany
123
124- Altera NIOS II
125
126- Analog Devices Blackfin
127
128- Atmel AVR
129
130- ARM
131
132- Freescale (formerly Motorola) MC68xxx
133
134- Freescale (formerly Motorola) MC683xx
135
136- Freescale (formerly Motorola) ColdFire
137
138- Intel i386 and above
139
140- Lattice Semiconductor LM32
141
142- NEC V850
143
144- MIPS
145
146- Moxie Processor
147
148- OpenRISC
149
150- PowerPC
151
152- Renesas (formerly Hitachi) SuperH
153
154- Renesas (formerly Hitachi) H8/300
155
156- Renesas M32C
157
158- SPARC v7, v8, and V9
159
160Since almost all of RTEMS is written in a high level language, ports to
161additional processor families require minimal effort.
162
163RTEMS multiprocessor support is capable of handling either homogeneous or
164heterogeneous systems.  The kernel automatically compensates for architectural
165differences (byte swapping, etc.) between processors.  This allows a much
166easier transition from one processor family to another without a major system
167redesign.
168
169Since the proposed standards are still in draft form, RTEMS cannot and does not
170claim compliance.  However, the status of the standard is being carefully
171monitored to guarantee that RTEMS provides the functionality specified in the
172standard.  Once approved, RTEMS will be made compliant.
173
174This document is a detailed users guide for a functionally compliant real-time
175multiprocessor executive.  It describes the user interface and run-time
176behavior of Release 4.10.99.0 of the C interface to RTEMS.
Note: See TracBrowser for help on using the repository browser.