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 cpumodels.t,v 1.6 2002/01/17 21:47:45 joel Exp
|
7 |
|
|
@c
|
8 |
|
|
|
9 |
|
|
@chapter CPU Model Variations
|
10 |
|
|
|
11 |
|
|
XXX enhance using portability presentation from CS595 class. See
|
12 |
|
|
general/portability.ppt.
|
13 |
|
|
|
14 |
|
|
Since the text in the next section was written, RTEMS view of
|
15 |
|
|
portability has grown to distinguish totally portable, CPU
|
16 |
|
|
family dependent, CPU model dependent, peripheral chip dependent
|
17 |
|
|
and board dependent. This text was part of a larger paper that
|
18 |
|
|
did not even cover portability completely as it existed when this
|
19 |
|
|
was written and certainly is out of date now. :)
|
20 |
|
|
|
21 |
|
|
|
22 |
|
|
@section Overview of RTEMS Portability
|
23 |
|
|
|
24 |
|
|
RTEMS was designed to be a highly portable, reusable software component.
|
25 |
|
|
This reflects the fundamental nature of embedded systems in which hardware
|
26 |
|
|
components, ranging from boards to peripherals to even the processor
|
27 |
|
|
itself, are selected specifically to meet the requirements of a particular
|
28 |
|
|
project.
|
29 |
|
|
|
30 |
|
|
@subsection Processor Families
|
31 |
|
|
|
32 |
|
|
Since there are a wide variety of embedded systems, there are a wide
|
33 |
|
|
variety of processors targeting embedded systems. RTEMS alleviates some of
|
34 |
|
|
the burden on the embedded systems programmer by providing a consistent,
|
35 |
|
|
high-performance environment regardless of the target processor. RTEMS
|
36 |
|
|
has been ported to a variety of microprocessor families including:
|
37 |
|
|
|
38 |
|
|
@itemize @bullet
|
39 |
|
|
|
40 |
|
|
@item Motorola ColdFire
|
41 |
|
|
|
42 |
|
|
@item Motorola MC68xxx
|
43 |
|
|
|
44 |
|
|
@item Motorola MC683xx
|
45 |
|
|
|
46 |
|
|
@item Intel ix86 (i386 and above)
|
47 |
|
|
|
48 |
|
|
@item Intel i960
|
49 |
|
|
|
50 |
|
|
@item MIPS
|
51 |
|
|
|
52 |
|
|
@item PowerPC 4xx, 5xx, 6xx, 7xx, and 8xx
|
53 |
|
|
|
54 |
|
|
@item SPARC
|
55 |
|
|
|
56 |
|
|
@item Hewlett-Packard PA-RISC
|
57 |
|
|
|
58 |
|
|
@item AMD A29K
|
59 |
|
|
|
60 |
|
|
@end itemize
|
61 |
|
|
|
62 |
|
|
|
63 |
|
|
In addition, there is a port of RTEMS to UNIX that uses standard UNIX
|
64 |
|
|
services to simulate the embedded environment.
|
65 |
|
|
|
66 |
|
|
Each RTEMS port supplies a well-defined set of services that are the
|
67 |
|
|
foundation for the highly portable RTEMS and POSIX API implementations.
|
68 |
|
|
When porting to a new processor family, one must provide the processor
|
69 |
|
|
dependent implementation of these services. This set of processor
|
70 |
|
|
dependent core services includes software to perform interrupt
|
71 |
|
|
dispatching, context switches, and manipulate task register sets.
|
72 |
|
|
|
73 |
|
|
The RTEMS approach to handling varying processor models reflects the
|
74 |
|
|
approach taken by the designers of the processors themselves. In each
|
75 |
|
|
processor family, there is a core architecture that must be implemented on
|
76 |
|
|
all processor models within the family to provide any level of
|
77 |
|
|
compatibility. Many of the modern RISC architectures refer to this as the
|
78 |
|
|
Architectural Definition. The Architectural Definition is intended to be
|
79 |
|
|
independent of any particular implementation. Additionally, there is a
|
80 |
|
|
feature set which is allowed to vary in a defined way amongst the
|
81 |
|
|
processor models. These feature sets may be defined as Optional in the
|
82 |
|
|
Architectural Definition, be left as implementation defined
|
83 |
|
|
characteristics, or be processor model specific extensions. Support for
|
84 |
|
|
floating point, virtual memory, and low power mode are common Optional
|
85 |
|
|
features included in an Architectural Definition.
|
86 |
|
|
|
87 |
|
|
The processor family dependent software in RTEMS includes a definition of
|
88 |
|
|
which features are present in each supported processor model. This often
|
89 |
|
|
makes adding support for a new processor model within a supported family
|
90 |
|
|
as simple as determining which features are present in the new processor
|
91 |
|
|
implementation. If the new processor model varies in a way previously
|
92 |
|
|
unaccounted for, then this must be addressed. This could be the result of
|
93 |
|
|
a new Optional feature set being added to the Architectural Definition.
|
94 |
|
|
Alternatively, this particular processor model could have a new and
|
95 |
|
|
different implementation of a feature left as undefined in the
|
96 |
|
|
Architectural Definition. This would require software to be written to
|
97 |
|
|
utilize that feature.
|
98 |
|
|
|
99 |
|
|
There is a relatively small set of features that may vary in a processor
|
100 |
|
|
family. As the number of processor models in the family grow, the
|
101 |
|
|
addition of each new model only requires adding an entry for the new model
|
102 |
|
|
to the single feature table. It does not require searching for every
|
103 |
|
|
conditional based on processor model and adding the new model in the
|
104 |
|
|
appropriate place. This significantly eases the burden of adding a new
|
105 |
|
|
processor model as it centralizes and logically simplifies the process.
|
106 |
|
|
|
107 |
|
|
@subsection Boards
|
108 |
|
|
|
109 |
|
|
Being portable both between models within a processor family and across
|
110 |
|
|
processor families is not enough to address the needs of embedded systems
|
111 |
|
|
developers. Custom board development is the norm for embedded systems.
|
112 |
|
|
Each of these boards is optimized for a particular project. The processor
|
113 |
|
|
and peripheral set have been chosen to meet a particular set of system
|
114 |
|
|
requirements. The tools in the embedded systems developers’ toolbox must
|
115 |
|
|
support their project’s unique board. RTEMS addresses this issue via the
|
116 |
|
|
Board Support Package.
|
117 |
|
|
|
118 |
|
|
RTEMS segregates board specific code to make it possible for the embedded
|
119 |
|
|
systems developer to easily replace and customize this software. A
|
120 |
|
|
minimal Board Support Package includes device drivers for a clock tick,
|
121 |
|
|
console I/O, and a benchmark timer (optional) as well as startup and
|
122 |
|
|
miscellaneous support code. The Board Support Package for a project may
|
123 |
|
|
be extended to include the device drivers for any peripherals on the
|
124 |
|
|
custom board.
|
125 |
|
|
|
126 |
|
|
@subsection Applications
|
127 |
|
|
|
128 |
|
|
One important design goal of RTEMS was to provide a bridge between the
|
129 |
|
|
application software and the target hardware. Most hardware dependencies
|
130 |
|
|
for real-time applications can be localized to the low level device
|
131 |
|
|
drivers which provide an abstracted view of the hardware. The RTEMS I/O
|
132 |
|
|
interface manager provides an efficient tool for incorporating these
|
133 |
|
|
hardware dependencies into the system while simultaneously providing a
|
134 |
|
|
general mechanism to the application code that accesses them. A well
|
135 |
|
|
designed real-time system can benefit from this architecture by building a
|
136 |
|
|
rich library of standard application components which can be used
|
137 |
|
|
repeatedly in other real-time projects. The following figure illustrates
|
138 |
|
|
how RTEMS serves as a buffer between the project dependent application
|
139 |
|
|
code and the target hardware.
|
140 |
|
|
|
141 |
|
|
@section Coding Issues
|
142 |
|
|
|
143 |
|
|
XXX deal with this as it applies to score/cpu. Section name may
|
144 |
|
|
be bad.
|