1 |
1026 |
ivang |
@c
|
2 |
|
|
@c COPYRIGHT (c) 1988-2002.
|
3 |
|
|
@c On-Line Applications Research Corporation (OAR).
|
4 |
|
|
@c All rights reserved.
|
5 |
|
|
@c
|
6 |
|
|
@c intro.t,v 1.11 2002/01/17 21:47:46 joel Exp
|
7 |
|
|
@c
|
8 |
|
|
|
9 |
|
|
@chapter Introduction
|
10 |
|
|
|
11 |
|
|
The purpose of this document is to guide you through the process of
|
12 |
|
|
installing a GNU cross development environment to use with RTEMS.
|
13 |
|
|
|
14 |
|
|
If you are already familiar with the concepts behind a cross compiler and
|
15 |
|
|
have a background in Unix, these instructions should provide the bare
|
16 |
|
|
essentials for performing a setup of the following items:
|
17 |
|
|
|
18 |
|
|
@itemize @bullet
|
19 |
|
|
@item GNU C/C++ Cross Compilation Tools for RTEMS on your build-host system
|
20 |
|
|
@item RTEMS OS for the target
|
21 |
|
|
@item GDB Debugger
|
22 |
|
|
@end itemize
|
23 |
|
|
|
24 |
|
|
The remainder of this chapter provides background information on real-time
|
25 |
|
|
embedded systems and cross development and an overview of other
|
26 |
|
|
resources of interest on the Internet. If you are not familiar with
|
27 |
|
|
real-time embedded systems or the other areas, please read those sections.
|
28 |
|
|
These sections will help familiarize you with the
|
29 |
|
|
types of systems RTEMS is designed to be used in and the cross development
|
30 |
|
|
process used when developing RTEMS applications.
|
31 |
|
|
|
32 |
|
|
@section Real-Time Embedded Systems
|
33 |
|
|
|
34 |
|
|
Real-time embedded systems are found in practically every facet of our
|
35 |
|
|
everyday lives. Today's systems range from the common telephone, automobile
|
36 |
|
|
control systems, and kitchen appliances to complex air traffic control
|
37 |
|
|
systems, military weapon systems, and production line control including
|
38 |
|
|
robotics and automation. However, in the current climate of rapidly changing
|
39 |
|
|
technology, it is difficult to reach a consensus on the definition of a
|
40 |
|
|
real-time embedded system. Hardware costs are continuing to rapidly decline
|
41 |
|
|
while at the same time the hardware is increasing in power and functionality.
|
42 |
|
|
As a result, embedded systems that were not considered viable two years ago
|
43 |
|
|
are suddenly a cost effective solution. In this domain, it is not uncommon
|
44 |
|
|
for a single hardware configuration to employ a variety of architectures and
|
45 |
|
|
technologies. Therefore, we shall define an embedded system as any computer
|
46 |
|
|
system that is built into a larger system consisting of multiple technologies
|
47 |
|
|
such as digital and analog electronics, mechanical devices, and sensors.
|
48 |
|
|
|
49 |
|
|
Even as hardware platforms become more powerful, most embedded systems are
|
50 |
|
|
critically dependent on the real-time software embedded in the systems
|
51 |
|
|
themselves. Regardless of how efficiently the hardware operates, the
|
52 |
|
|
performance of the embedded real-time software determines the success of the
|
53 |
|
|
system. As the complexity of the embedded hardware platform grows, so does
|
54 |
|
|
the size and complexity of the embedded software. Software systems must
|
55 |
|
|
routinely perform activities which were only dreamed of a short time ago.
|
56 |
|
|
These large, complex, real-time embedded applications now commonly contain
|
57 |
|
|
one million lines of code or more.
|
58 |
|
|
|
59 |
|
|
Real-time embedded systems have a complex set of characteristics that
|
60 |
|
|
distinguish them from other software applications. Real-time embedded
|
61 |
|
|
systems are driven by and must respond to real world events while adhering to
|
62 |
|
|
rigorous requirements imposed by the environment with which they interact.
|
63 |
|
|
The correctness of the system depends not only on the results of
|
64 |
|
|
computations, but also on the time at which the results are produced. The
|
65 |
|
|
most important and complex characteristic of real-time application systems is
|
66 |
|
|
that they must receive and respond to a set of external stimuli within rigid
|
67 |
|
|
and critical time constraints.
|
68 |
|
|
|
69 |
|
|
A single real-time application can be composed of both soft and hard
|
70 |
|
|
real-time components. A typical example of a hard real-time system is a
|
71 |
|
|
nuclear reactor control system that must not only detect failures, but must
|
72 |
|
|
also respond quickly enough to prevent a meltdown. This application also has
|
73 |
|
|
soft real-time requirements because it may involve a man-machine interface.
|
74 |
|
|
Providing an interactive input to the control system is not as critical as
|
75 |
|
|
setting off an alarm to indicate a failure condition. However, the
|
76 |
|
|
interactive system component must respond within an acceptable time limit to
|
77 |
|
|
allow the operator to interact efficiently with the control system.
|
78 |
|
|
|
79 |
|
|
@section Cross Development
|
80 |
|
|
|
81 |
|
|
Today almost all real-time embedded software systems are developed in a
|
82 |
|
|
@b{cross development} environment using cross development tools. In the cross
|
83 |
|
|
development environment, software development activities are typically
|
84 |
|
|
performed on one computer system, the @b{build-host} system, while the result of the
|
85 |
|
|
development effort (produced by the cross tools) is a software system that
|
86 |
|
|
executes on the @b{target} platform. The requirements for the target platform are
|
87 |
|
|
usually incompatible and quite often in direct conflict with the requirements
|
88 |
|
|
for the build-host. Moreover, the target hardware is often custom designed for a
|
89 |
|
|
particular project. This means that the cross development toolset must allow
|
90 |
|
|
the developer to customize the tools to address target specific run-time
|
91 |
|
|
issues. The toolset must have provisions for board dependent initialization
|
92 |
|
|
code, device drivers, and error handling code.
|
93 |
|
|
|
94 |
|
|
The build-host computer is optimized to support the code development cycle with
|
95 |
|
|
support for code editors, compilers, and linkers requiring large disk drives,
|
96 |
|
|
user development windows, and multiple developer connections. Thus the build-host
|
97 |
|
|
computer is typically a traditional UNIX workstation such as those available
|
98 |
|
|
from SUN or Silicon Graphics, or a PC running either a version of MS-Windows
|
99 |
|
|
or UNIX. The build-host system may also be required to execute
|
100 |
|
|
office productivity applications to allow the software developer
|
101 |
|
|
to write documentation, make presentations, or track the project's
|
102 |
|
|
progress using a project management tool. This necessitates that the
|
103 |
|
|
build-host computer be general purpose with resources such as a
|
104 |
|
|
thirty-two or sixty-four bit processor, large amounts of
|
105 |
|
|
RAM, a monitor, mouse, keyboard, hard and floppy disk drives, CD-ROM drive,
|
106 |
|
|
and a graphics card. It is likely that the system will be multimedia capable
|
107 |
|
|
and have some networking capability.
|
108 |
|
|
|
109 |
|
|
Conversely, the target platform generally has limited traditional computer
|
110 |
|
|
resources. The hardware is designed for the particular functionality and
|
111 |
|
|
requirements of the embedded system and optimized to perform those tasks
|
112 |
|
|
effectively. Instead of hard drives and keyboards, it is composed of
|
113 |
|
|
sensors, relays, and stepper motors. The per-unit cost of the target platform
|
114 |
|
|
is typically a critical concern. No hardware component is included without
|
115 |
|
|
being cost justified. As a result, the processor of the target system is
|
116 |
|
|
often from a different processor family than that of the build-host system and
|
117 |
|
|
usually has lower performance. In addition to the processor families
|
118 |
|
|
designed only for use in embedded systems, there are versions of nearly every
|
119 |
|
|
general-purpose processor specifically tailored for real-time embedded
|
120 |
|
|
systems. For example, many of the processors targeting the embedded market
|
121 |
|
|
do not include hardware floating point units, but do include peripherals such
|
122 |
|
|
as timers, serial controllers, or network interfaces.
|
123 |
|
|
|
124 |
|
|
@section Resources on the Internet
|
125 |
|
|
|
126 |
|
|
This section describes various resources on the Internet which are of
|
127 |
|
|
use to RTEMS users.
|
128 |
|
|
|
129 |
|
|
@c
|
130 |
|
|
@c Online Tool Documentation
|
131 |
|
|
@c
|
132 |
|
|
|
133 |
|
|
@subsection Online Tool Documentation
|
134 |
|
|
|
135 |
|
|
Each of the tools in the GNU development suite comes with documentation.
|
136 |
|
|
It is in the reader's and tool maintainers' interest that one read the
|
137 |
|
|
documentation before posting a problem to a mailing list or news group.
|
138 |
|
|
The RTEMS Project provides formatted documentation for the primary
|
139 |
|
|
tools in the cross development toolset including BINUTILS, GCC,
|
140 |
|
|
NEWLIB, and GDB at
|
141 |
|
|
@uref{http://www.oarcorp.com/rtemsdoc-4.5.0, http://www.oarcorp.com/rtemsdoc-4.5.0}.
|
142 |
|
|
|
143 |
|
|
Much of the documentation is available at other sites on the Internet.
|
144 |
|
|
The following is a list of URLs where one can find HTML versions of
|
145 |
|
|
the GNU manuals:
|
146 |
|
|
|
147 |
|
|
@table @b
|
148 |
|
|
|
149 |
|
|
@item Free Software Foundation
|
150 |
|
|
@uref{http://www.gnu.org/manual/manual.html, http://www.gnu.org/manual/manual.html}
|
151 |
|
|
|
152 |
|
|
@item Delorie Software
|
153 |
|
|
@uref{http://www.delorie.com/gnu/docs, http://www.delorie.com/gnu/docs}
|
154 |
|
|
|
155 |
|
|
@end table
|
156 |
|
|
|
157 |
|
|
|
158 |
|
|
@subsection RTEMS Mailing List
|
159 |
|
|
|
160 |
|
|
@uref{mailto:rtems-users@@OARcorp.com,rtems-users@@OARcorp.com}
|
161 |
|
|
|
162 |
|
|
This mailing list is dedicated to the discussion of issues related
|
163 |
|
|
to RTEMS, including GNAT/RTEMS. If you have questions about RTEMS,
|
164 |
|
|
wish to make suggestions, or just want to pick up hints, this is a
|
165 |
|
|
good list to monitor. Subscribe by sending an empty mail message to
|
166 |
|
|
@uref{mailto:rtems-users-subscribe@@OARcorp.com,rtems-users-subscribe@@OARcorp.com}. Messages sent
|
167 |
|
|
to @uref{mailto:rtems-users@@OARcorp.com,rtems-users@@OARcorp.com}
|
168 |
|
|
are posted to the list.
|
169 |
|
|
|
170 |
|
|
@subsection CrossGCC Mailing List
|
171 |
|
|
|
172 |
|
|
@uref{mailto:crossgcc@@sources.redhat.com,crossgcc@@sources.redhat.com}
|
173 |
|
|
|
174 |
|
|
This mailing list is dedicated to the use of the GNU tools in
|
175 |
|
|
cross development environments. Most of the discussions
|
176 |
|
|
focus on embedded issues. Information on subscribing
|
177 |
|
|
to this mailing list is included in the
|
178 |
|
|
@uref{http://www.objsw.com/CrossGCC/,CrossGCC FAQ}.
|
179 |
|
|
|
180 |
|
|
The CrossGCC FAQ as well as a number of patches and utilities
|
181 |
|
|
of interest to cross development system users are available
|
182 |
|
|
at @uref{ftp://ftp.cygnus.com/pub/embedded/crossgcc}.
|
183 |
|
|
|
184 |
|
|
@subsection GCC Mailing Lists
|
185 |
|
|
|
186 |
|
|
|
187 |
|
|
The GCC Project is hosted at @uref{http://gcc.gnu.org,http://gcc.gnu.org}.
|
188 |
|
|
They maintain multiple mailing lists that are described at the web site
|
189 |
|
|
along with subscription information.
|
190 |
|
|
|