[ae68ff0] | 1 | @c |
---|
[2723df7] | 2 | @c COPYRIGHT (c) 1989-2007. |
---|
[ae68ff0] | 3 | @c On-Line Applications Research Corporation (OAR). |
---|
| 4 | @c All rights reserved. |
---|
| 5 | @c |
---|
[139b2e4a] | 6 | @c $Id$ |
---|
| 7 | @c |
---|
[ae68ff0] | 8 | |
---|
| 9 | @chapter Directory Structure |
---|
| 10 | |
---|
| 11 | The RTEMS directory structure is designed to meet |
---|
| 12 | the following requirements: |
---|
| 13 | |
---|
| 14 | @itemize @bullet |
---|
| 15 | @item encourage development of modular components. |
---|
| 16 | |
---|
| 17 | @item isolate processor and target dependent code, while |
---|
| 18 | allowing as much common source code as possible to be shared |
---|
[aa41429] | 19 | across multiple processors and target boards. |
---|
[ae68ff0] | 20 | |
---|
| 21 | @item allow multiple RTEMS users to perform simultaneous |
---|
| 22 | compilation of RTEMS and its support facilities for different |
---|
| 23 | processors and targets. |
---|
| 24 | @end itemize |
---|
| 25 | |
---|
| 26 | The resulting directory structure has processor and |
---|
[aa41429] | 27 | board dependent source files isolated from generic files. When |
---|
| 28 | RTEMS is configured and built, object directories and |
---|
| 29 | an install point will be automatically created based upon |
---|
| 30 | the target CPU family and BSP selected. |
---|
| 31 | |
---|
| 32 | The placement of object files based upon the selected BSP name |
---|
| 33 | ensures that object files are not mixed across CPUs or targets. |
---|
| 34 | This in combination with the makefiles allows the specific |
---|
[ae68ff0] | 35 | compilation options to be tailored for a particular target |
---|
| 36 | board. For example, the efficiency of the memory subsystem for |
---|
| 37 | a particular target board may be sensitive to the alignment of |
---|
| 38 | data structures, while on another target board with the same |
---|
| 39 | processor memory may be very limited. For the first target, the |
---|
| 40 | options could specify very strict alignment requirements, while |
---|
[818ab36a] | 41 | on the second the data structures could be @i{packed} to conserve |
---|
[ae68ff0] | 42 | memory. It is impossible to achieve this degree of flexibility |
---|
| 43 | without providing source code. |
---|
[aa41429] | 44 | |
---|
[818ab36a] | 45 | The RTEMS source tree is organized based on the following variables: |
---|
[ae68ff0] | 46 | |
---|
| 47 | @itemize @bullet |
---|
| 48 | |
---|
[aa41429] | 49 | @item functionality, |
---|
| 50 | @item target processor family, |
---|
| 51 | @item target processor model, |
---|
| 52 | @item peripherals, and |
---|
| 53 | @item target board. |
---|
[ae68ff0] | 54 | |
---|
| 55 | @end itemize |
---|
| 56 | |
---|
[aa41429] | 57 | Each of the following sections will describe the |
---|
| 58 | contents of the directories in the RTEMS source |
---|
| 59 | tree. The top of the tree will be referenced |
---|
| 60 | as @code{$@{RTEMS_ROOT@}} in this discussion. |
---|
[ae68ff0] | 61 | |
---|
| 62 | @c |
---|
[aa41429] | 63 | @c Top Level Tree |
---|
[ae68ff0] | 64 | @c |
---|
| 65 | |
---|
[aa41429] | 66 | @c @ifset use-ascii |
---|
[ae68ff0] | 67 | @example |
---|
| 68 | @group |
---|
[aa41429] | 69 | rtems-VERSION |
---|
| 70 | | |
---|
[2723df7] | 71 | +--------+----+----+----+--+-----+---+-------+--------+ |
---|
| 72 | | | | | | | | | | |
---|
| 73 | aclocal automake c contrib cpukit doc make testsuites tools |
---|
[ae68ff0] | 74 | @end group |
---|
| 75 | @end example |
---|
[aa41429] | 76 | @c @end ifset |
---|
[ae68ff0] | 77 | |
---|
| 78 | @ifset use-tex |
---|
| 79 | @end ifset |
---|
| 80 | |
---|
| 81 | @ifset use-html |
---|
| 82 | @html |
---|
| 83 | @end html |
---|
| 84 | @end ifset |
---|
| 85 | |
---|
| 86 | @table @code |
---|
[aa41429] | 87 | @item $@{RTEMS_ROOT@}/aclocal/ |
---|
| 88 | This directory contains the custom M4 macros which are available to |
---|
| 89 | the various GNU autoconf @code{configure.ac} scripts throughout |
---|
| 90 | the RTEMS source tree. GNU autoconf interprets @code{configure.ac} |
---|
| 91 | files to produce the @code{configure} files used to tailor |
---|
| 92 | RTEMS build for a particular host and target environment. The |
---|
| 93 | contents of this directory will not be discussed further in this |
---|
| 94 | document. |
---|
| 95 | |
---|
| 96 | @item $@{RTEMS_ROOT@}/automake/ |
---|
| 97 | This directory contains the custom GNU automake fragments |
---|
| 98 | which are used to support the various @code{Makefile.am} |
---|
| 99 | files throughout the RTEMS source tree. The |
---|
| 100 | contents of this directory will not be discussed |
---|
| 101 | further in this document. |
---|
| 102 | |
---|
| 103 | @item $@{RTEMS_ROOT@}/c/ |
---|
| 104 | This directory is the root of the portions of the RTEMS source |
---|
| 105 | tree which must be built tailored for a particular CPU model |
---|
| 106 | or BSP. The contents of this directory will be discussed |
---|
| 107 | in the @ref{Directory Structure c/ Directory} section. |
---|
| 108 | |
---|
| 109 | @item $@{RTEMS_ROOT@}/contrib/ |
---|
| 110 | This directory contains contributed support software. Currently |
---|
| 111 | this directory contains the RPM specifications for cross-compilers |
---|
[2723df7] | 112 | hosted on GNU/Linux that target various operating systems |
---|
| 113 | including MinGW, Cygwin, FreeBSD, and Solaris. The |
---|
[aa41429] | 114 | cross-compilers produced using these specifications are then |
---|
[2723df7] | 115 | used in a Canadian cross build procedure to produce the various |
---|
| 116 | RTEMS toolsets on a GNU/Linux host. |
---|
| 117 | |
---|
| 118 | This directory also contains RPM specifications for the |
---|
| 119 | prebuilt cross-compilation toolsets provided by the |
---|
| 120 | RTEMS project. There are separate subdirectories |
---|
| 121 | for each of the components in the RTEMS Cross Compilation |
---|
| 122 | Environment unde the @code{contrib/crossrpms/} directory. |
---|
| 123 | This directory is configured, built, and installed separately |
---|
| 124 | from the RTEMS executive and tests. This directory will not |
---|
| 125 | be discussed further in this document. |
---|
| 126 | |
---|
[aa41429] | 127 | |
---|
| 128 | @item $@{RTEMS_ROOT@}/cpukit/ |
---|
| 129 | This directory is the root for all of the "multilib'able" |
---|
| 130 | portions of RTEMS. This is a GNU way of saying the the |
---|
| 131 | contents of this directory can be compiled like the |
---|
| 132 | C Library (@code{libc.a}) and the functionality is |
---|
| 133 | neither CPU model nor BSP specific. The source code |
---|
| 134 | for most RTEMS services reside under this directory. |
---|
| 135 | The contents of this directory will be discussed |
---|
[2723df7] | 136 | in the @ref{Directory Structure CPU Kit Directory} section. |
---|
[aa41429] | 137 | |
---|
| 138 | @item $@{RTEMS_ROOT@}/doc/ |
---|
| 139 | This directory is the root for all RTEMS documentation. |
---|
| 140 | The source for RTEMS is written in GNU TeXinfo and |
---|
| 141 | used to produce HTML, PDF, and "info" files. |
---|
| 142 | The RTEMS documentation is configured, built, |
---|
| 143 | and installed separately from the RTEMS executive and tests. |
---|
| 144 | The contents of this directory will be discussed |
---|
| 145 | in the @ref{Directory Structure Documentation Directory} section. |
---|
| 146 | |
---|
| 147 | @item $@{RTEMS_ROOT@}/make/ |
---|
| 148 | This directory contains files which support the |
---|
| 149 | RTEMS Makefile's. From a user's perspective, the |
---|
| 150 | most important parts are found in the @code{custom/} |
---|
| 151 | subdirectory. Each ".cfg" file in this directory |
---|
| 152 | is associated with a specific BSP and describes |
---|
| 153 | the CPU model, compiler flags, and procedure to |
---|
| 154 | a produce an executable for the target board. |
---|
| 155 | These files are described in detail in the |
---|
| 156 | @b{RTEMS BSP and Device Driver Development Guide} |
---|
| 157 | and will not be discussed further in this document. |
---|
| 158 | |
---|
[2723df7] | 159 | @item $@{RTEMS_ROOT@}/testsuites/ |
---|
| 160 | This directory contains the test suites for the |
---|
| 161 | various RTEMS APIs and support libraries. This |
---|
| 162 | contents of this directory are discussed in the |
---|
| 163 | @ref{Directory Structure testsuites/ Test Suites} section. |
---|
[aa41429] | 164 | |
---|
| 165 | @item $@{RTEMS_ROOT@}/tools/ |
---|
| 166 | This directory contains RTEMS specific support utilities which |
---|
| 167 | execute on the development host. These utilities are divided |
---|
| 168 | into subdirectories based upon whether they are used in the process |
---|
| 169 | of building RTEMS and applications, are CPU specific, or are |
---|
| 170 | used to assist in updating the RTEMS source tree and applications. |
---|
| 171 | The support utilities used in the process of building RTEMS are |
---|
| 172 | described in @ref{RTEMS Specific Utilities}. These are the |
---|
| 173 | only components of this subtree that will be discussed in this |
---|
| 174 | document. |
---|
[ae68ff0] | 175 | |
---|
[aa41429] | 176 | @end table |
---|
[ae68ff0] | 177 | |
---|
| 178 | |
---|
| 179 | |
---|
[aa41429] | 180 | @c |
---|
| 181 | @c c/ Directions |
---|
| 182 | @c |
---|
[818ab36a] | 183 | @section c/ Directory |
---|
[ae68ff0] | 184 | |
---|
[aa41429] | 185 | The @code{$@{RTEMS_ROOT@}/c/} directory was formerly |
---|
| 186 | the root directory of all RTEMS source code. At this time, it contains |
---|
| 187 | the root directory for only those RTEMS components |
---|
| 188 | which must be compiled or linked in a way that is specific to a |
---|
| 189 | particular CPU model or board. This directory contains the |
---|
| 190 | following subdirectories: |
---|
| 191 | |
---|
| 192 | @table @code |
---|
| 193 | @item $@{RTEMS_ROOT@}/c/src/ |
---|
| 194 | This directory is logically the root for the RTEMS components |
---|
| 195 | which are CPU model or board dependent. Thus this directory |
---|
[2723df7] | 196 | is the root for the BSPs and the Ada Test Suites as well |
---|
[aa41429] | 197 | as CPU model and BSP dependent libraries. The contents of |
---|
| 198 | this directory are discussed in the |
---|
| 199 | @ref{Directory Structure c/src/ Directory} section. |
---|
| 200 | |
---|
| 201 | @item $@{RTEMS_ROOT@}/c/make/ |
---|
| 202 | This directory is used to generate the file @code{target.cfg} |
---|
| 203 | which is installed as part of the Application Makefiles. This |
---|
| 204 | file contains settings for various Makefile variables to |
---|
| 205 | tailor them to the particular CPU model and BSP configured. |
---|
[ae68ff0] | 206 | |
---|
| 207 | @end table |
---|
| 208 | |
---|
[aa41429] | 209 | @c |
---|
| 210 | @c c/src/ Directory |
---|
| 211 | @c |
---|
[818ab36a] | 212 | @subsection c/src/ Directory |
---|
[ae68ff0] | 213 | |
---|
[aa41429] | 214 | As mentioned previously, this directory is logically |
---|
| 215 | the root for the RTEMS components |
---|
| 216 | which are CPU model or board dependent. The |
---|
| 217 | following is a list of the subdirectories in this |
---|
| 218 | directorie and a description of each. |
---|
[ae68ff0] | 219 | |
---|
[aa41429] | 220 | @table @code |
---|
[2723df7] | 221 | @item $@{RTEMS_ROOT@}/c/src/ada/ |
---|
| 222 | This directory contains the Ada95 language bindings to the |
---|
| 223 | RTEMS Classic API. |
---|
| 224 | |
---|
[aa41429] | 225 | @item $@{RTEMS_ROOT@}/c/src/ada-tests/ |
---|
| 226 | This directory contains the test suite for the Ada |
---|
| 227 | language bindings to the Classic API. |
---|
| 228 | |
---|
| 229 | @item $@{RTEMS_ROOT@}/c/src/lib/ |
---|
[818ab36a] | 230 | This directory contains the directories @code{libbsp} |
---|
| 231 | and @code{libcpu/} which contain the source code for |
---|
| 232 | the Board Support Packages (BSPs) and CPU Model |
---|
| 233 | specific source code for RTEMS. |
---|
| 234 | |
---|
| 235 | The @code{libbsp/} is organized based upon the CPU |
---|
| 236 | family and boards BSPs. The contents of @code{libbsp/} |
---|
| 237 | are discussed briefly in |
---|
| 238 | @ref{Directory Structure c/src/lib/libbsp BSP Directory} |
---|
| 239 | and presented in detail in the |
---|
| 240 | @b{RTEMS BSP and Device Driver Development Guide}. |
---|
| 241 | |
---|
| 242 | The @code{libcpu/} directory is also organized by |
---|
| 243 | CPU family with further divisions based upon CPU |
---|
| 244 | model and features that are shared across CPU models |
---|
| 245 | such as caching and DMA. |
---|
[aa41429] | 246 | |
---|
| 247 | @item $@{RTEMS_ROOT@}/c/src/libchip/ |
---|
| 248 | This directory contains device drivers for various |
---|
| 249 | peripheral chips which are designed to be CPU and |
---|
| 250 | board dependent. This directory contains a variety |
---|
| 251 | of drivers for serial devices, network interface |
---|
| 252 | controllers, and real-time clocks. |
---|
| 253 | |
---|
| 254 | @item $@{RTEMS_ROOT@}/c/src/librdbg/ |
---|
| 255 | This directory contains the Ethernet-based remote debugging |
---|
| 256 | stub. This software must be built to be intimately aware |
---|
| 257 | of a particular CPU model. |
---|
| 258 | |
---|
| 259 | @item $@{RTEMS_ROOT@}/c/src/librtems++/ |
---|
[818ab36a] | 260 | This directory contains C++ classes which map to the RTEMS |
---|
| 261 | Classic API. |
---|
[aa41429] | 262 | |
---|
| 263 | @item $@{RTEMS_ROOT@}/c/src/make/ |
---|
[818ab36a] | 264 | This directory is used to generate the bulk of the supporting |
---|
| 265 | rules files which are installed as part of the Application Makefiles. |
---|
| 266 | This file contains settings for various Makefile variables to |
---|
| 267 | tailor them to the particular CPU model and BSP configured. |
---|
[aa41429] | 268 | |
---|
| 269 | @item $@{RTEMS_ROOT@}/c/src/optman/ |
---|
[818ab36a] | 270 | This directory contains stubs for the RTEMS Classic API |
---|
| 271 | Managers which are considered optional and whose use |
---|
| 272 | may be explicitly forbidden by an application. All of the |
---|
| 273 | directive implementations in this Optional Managers |
---|
| 274 | return @code{E_NOTCONFIGURED}. |
---|
[aa41429] | 275 | |
---|
| 276 | @item $@{RTEMS_ROOT@}/c/src/wrapup/ |
---|
[818ab36a] | 277 | This directory is responsible for taking the individual |
---|
| 278 | libraries and objects built in each of the components |
---|
| 279 | in the RTEMS source tree and bundling them together to form |
---|
| 280 | the single RTEMS library @code{librtemsbsp.a}. This |
---|
| 281 | library contains all BSP and CPU model specific software. |
---|
[aa41429] | 282 | |
---|
| 283 | @end table |
---|
[ae68ff0] | 284 | |
---|
| 285 | @c |
---|
[818ab36a] | 286 | @c c/src/lib/libbsp BSP Directory |
---|
[ae68ff0] | 287 | @c |
---|
| 288 | |
---|
[818ab36a] | 289 | @subsubsection c/src/lib/libbsp BSP Directory |
---|
[ae68ff0] | 290 | |
---|
| 291 | The "libbsp" directory contains a directory for each CPU family supported |
---|
| 292 | by RTEMS. Beneath each CPU directory is a directory for each BSP for that |
---|
| 293 | processor family. |
---|
| 294 | |
---|
| 295 | @c |
---|
| 296 | @c Tree 7 - C BSP Library |
---|
| 297 | @c |
---|
| 298 | |
---|
[db91520] | 299 | The "libbsp" directory provides all the BSPs provided with this |
---|
[ae68ff0] | 300 | release of the RTEMS executive. The subdirectories are |
---|
| 301 | divided, as discussed previously, based on specific processor |
---|
| 302 | family, then further breaking down into specific target board |
---|
| 303 | environments. The "shmdr" subdirectory provides the |
---|
| 304 | implementation of a shared memory driver which supports the |
---|
| 305 | multiprocessing portion of the executive. In addition, two |
---|
| 306 | starting point subdirectories are provided for reference. The |
---|
| 307 | "no_cpu" subdirectory provides a template BSP which can be used |
---|
| 308 | to develop a specific BSP for an unsupported target board. The |
---|
| 309 | "stubdr" subdirectory provides stubbed out BSPs. These files |
---|
| 310 | may aid in preliminary testing of the RTEMS development |
---|
| 311 | environment that has been built for no particular target in mind. |
---|
| 312 | |
---|
| 313 | Below each CPU dependent directory is a directory for each target BSP |
---|
| 314 | supported in this release. |
---|
| 315 | |
---|
| 316 | Each BSP provides the modules which comprise an RTEMS BSP. The |
---|
| 317 | modules are separated into the subdirectories "clock", "console", |
---|
| 318 | "include", "shmsupp", "startup", and "timer" as shown in the following |
---|
| 319 | figure: |
---|
| 320 | |
---|
| 321 | @c |
---|
| 322 | @c Tree 8 - Each BSP |
---|
| 323 | @c |
---|
| 324 | |
---|
[818ab36a] | 325 | @c @ifset use-ascii |
---|
[ae68ff0] | 326 | @example |
---|
| 327 | @group |
---|
| 328 | Each BSP |
---|
| 329 | | |
---|
| 330 | +-----------+----------+-----+-----+----------+----------+ |
---|
| 331 | | | | | | | |
---|
| 332 | clock console include shmsupp startup timer |
---|
| 333 | @end group |
---|
| 334 | @end example |
---|
[818ab36a] | 335 | @c @end ifset |
---|
[ae68ff0] | 336 | |
---|
[818ab36a] | 337 | @c |
---|
[2723df7] | 338 | @c CPU Kit Directory |
---|
[aa41429] | 339 | @c |
---|
[2723df7] | 340 | @section CPU Kit Directory |
---|
[ae68ff0] | 341 | |
---|
[818ab36a] | 342 | @c The @code{cpukit/} directory structure is as follows: |
---|
[ae68ff0] | 343 | |
---|
| 344 | @c |
---|
[2723df7] | 345 | @c CPU Kit Tree |
---|
[ae68ff0] | 346 | @c |
---|
| 347 | |
---|
[818ab36a] | 348 | @c @ifset use-ascii |
---|
| 349 | @c @example |
---|
| 350 | @c @group |
---|
[2723df7] | 351 | @c cpukit |
---|
[818ab36a] | 352 | @c | |
---|
| 353 | @c +-----------+----------+-----------+----------+ |
---|
| 354 | @c | | | | | |
---|
| 355 | @c posix rtems sapi score wrapup |
---|
| 356 | @c @end group |
---|
| 357 | @c @end example |
---|
| 358 | @c @end ifset |
---|
[ae68ff0] | 359 | |
---|
[818ab36a] | 360 | The @code{cpukit/} directory contains a set of subdirectories which |
---|
| 361 | contains the source files comprising the executive portion of |
---|
| 362 | the RTEMS development environment as well as portable support |
---|
| 363 | libraries such as support for the C Library and filesystems. |
---|
| 364 | The API specific and "SuperCore" (e.g. @code{score/} directory) |
---|
| 365 | source code files are separated into distinct directory trees. |
---|
[ae68ff0] | 366 | |
---|
[818ab36a] | 367 | The following is a description of each of the subdirectories |
---|
| 368 | under @code{cpukit/}: |
---|
[ae68ff0] | 369 | |
---|
[818ab36a] | 370 | @table @code |
---|
[ae68ff0] | 371 | |
---|
[818ab36a] | 372 | @item $@{RTEMS_ROOT@}/cpukit/aclocal/ |
---|
| 373 | This directory contains the custom M4 macros which are available to |
---|
| 374 | the various GNU autoconf @code{configure.ac} scripts throughout |
---|
| 375 | the CPU Kit portion of the RTEMS source tree. |
---|
| 376 | GNU autoconf interprets @code{configure.ac} |
---|
| 377 | files to produce the @code{configure} files used to tailor |
---|
| 378 | RTEMS build for a particular host and target environment. The |
---|
| 379 | contents of this directory will not be discussed further in this |
---|
| 380 | document. |
---|
[ae68ff0] | 381 | |
---|
[818ab36a] | 382 | @item $@{RTEMS_ROOT@}/cpukit/automake/ |
---|
| 383 | This directory contains files which are "Makefile fragments." |
---|
| 384 | They are included as required by the various @code{Makefile.am} |
---|
| 385 | files throughout the CPU Kit portion of the RTEMS source tree. |
---|
| 386 | |
---|
[2723df7] | 387 | @item $@{RTEMS_ROOT@}/cpukit/ftpd/ |
---|
| 388 | This directory contains the RTEMS ftpd server. |
---|
| 389 | |
---|
| 390 | @item $@{RTEMS_ROOT@}/cpukit/httpd/ |
---|
| 391 | This directory contains the port of the GoAhead |
---|
| 392 | web server to RTEMS. |
---|
| 393 | |
---|
[818ab36a] | 394 | @item $@{RTEMS_ROOT@}/cpukit/include/ |
---|
| 395 | This directory contains header files which are private to |
---|
| 396 | RTEMS and not considered to be owned by any other component |
---|
| 397 | in the CPU Kit. |
---|
| 398 | |
---|
| 399 | @item $@{RTEMS_ROOT@}/cpukit/itron/ |
---|
| 400 | This directory contains the implementation of the |
---|
| 401 | ITRON API. |
---|
| 402 | |
---|
| 403 | @item $@{RTEMS_ROOT@}/cpukit/libblock/ |
---|
| 404 | This directory contains support code for using |
---|
| 405 | Block Devices such as hard drives, floppies, and |
---|
| 406 | CD-ROMs. It includes the generic IO primitives |
---|
| 407 | for block device drivers, disk caching support, |
---|
| 408 | and a RAM disk block device driver. |
---|
| 409 | |
---|
| 410 | @item $@{RTEMS_ROOT@}/cpukit/libcsupport/ |
---|
| 411 | This directory contains the RTEMS specific support routines |
---|
| 412 | for the Newlib C Library. This includes what are referred |
---|
| 413 | to as system calls and found in section 2 of the traditional |
---|
| 414 | UNIX manual. In addition, it contains a thread-safe |
---|
| 415 | implementation of the Malloc family of routines as well |
---|
| 416 | as BSD and POSIX services not found in Newlib. |
---|
| 417 | |
---|
| 418 | @item $@{RTEMS_ROOT@}/cpukit/libfs/ |
---|
| 419 | This directory contains the various non-networked |
---|
| 420 | filesystem implementations for RTEMS. It includes |
---|
| 421 | the In-Memory FileSystem (IMFS), the mini-IMFS, |
---|
| 422 | and FAT filesystems. |
---|
| 423 | |
---|
[2723df7] | 424 | @item $@{RTEMS_ROOT@}/cpukit/libi2c/ |
---|
| 425 | This directory contains the RTEMS I2C framework. |
---|
| 426 | |
---|
| 427 | @item $@{RTEMS_ROOT@}/cpukit/libmd/ |
---|
| 428 | This directory contains a port of the standard MD5 |
---|
| 429 | checksum code. |
---|
| 430 | |
---|
| 431 | @item $@{RTEMS_ROOT@}/c/src/libmisc/ |
---|
| 432 | This directory contains support facilities which |
---|
| 433 | are RTEMS specific but otherwise unclassified. In |
---|
| 434 | general, they do not adhere to a standard API. |
---|
| 435 | Among the support facilities in this directory are |
---|
| 436 | a @code{/dev/null} device driver, the Stack |
---|
| 437 | Overflow Checker, a mini-shell, the CPU and |
---|
| 438 | rate monotonic period usage monitoring libraries, |
---|
| 439 | and a utility to "dump a buffer" in a nicely |
---|
| 440 | formatted way similar to many ROM monitors. |
---|
| 441 | |
---|
[818ab36a] | 442 | @item $@{RTEMS_ROOT@}/cpukit/libnetworking/ |
---|
| 443 | This directory contains the port of the FreeBSD |
---|
| 444 | TCP/IP stack to RTEMS. |
---|
| 445 | |
---|
| 446 | @item $@{RTEMS_ROOT@}/cpukit/librpc/ |
---|
| 447 | This directory contains the port of the FreeBSD |
---|
| 448 | RPC/XDR source to RTEMS. |
---|
| 449 | |
---|
| 450 | @item $@{RTEMS_ROOT@}/cpukit/posix/ |
---|
| 451 | This directory contains the RTEMS implementation |
---|
| 452 | of the threading portions of the POSIX API. |
---|
| 453 | |
---|
[2723df7] | 454 | @item $@{RTEMS_ROOT@}/cpukit/pppd/ |
---|
| 455 | This directory contains a port of the free implementation |
---|
| 456 | of the PPPD network protocol. |
---|
| 457 | |
---|
[818ab36a] | 458 | @item $@{RTEMS_ROOT@}/cpukit/rtems/ |
---|
| 459 | This directory contains the implementation of the |
---|
| 460 | Classic API. |
---|
| 461 | |
---|
| 462 | @item $@{RTEMS_ROOT@}/cpukit/sapi/ |
---|
| 463 | This directory contains the implementation of RTEMS |
---|
| 464 | services which are required but beyond the realm |
---|
| 465 | of any standardization efforts. It includes |
---|
| 466 | initialization, shutdown, and IO services. |
---|
| 467 | |
---|
| 468 | @item $@{RTEMS_ROOT@}/cpukit/score/ |
---|
| 469 | This directory contains the "SuperCore" of RTEMS. |
---|
| 470 | All APIs are implemented in terms of SuperCore services. |
---|
| 471 | For example, Classic API tasks, POSIX threads, and ITRON |
---|
| 472 | tasks are all implemented in terms of SuperCore threads. |
---|
| 473 | This provides a common infrastructure and a high degree |
---|
| 474 | of interoperability between the APIs. For example, |
---|
| 475 | services from all APIs may be used by any task/thread |
---|
| 476 | independent of the API used to create it. |
---|
| 477 | |
---|
| 478 | Within the @code{score/} directory the CPU dependent modules are found. |
---|
| 479 | The @code{score/cpu/} subdirectory contains a subdirectory for each |
---|
[2723df7] | 480 | target CPU supported by this release of the RTEMS |
---|
[818ab36a] | 481 | executive. Each processor directory contains the CPU dependent |
---|
| 482 | code necessary to host RTEMS. The @code{no_cpu} directory provides a |
---|
| 483 | starting point for developing a new port to an unsupported |
---|
| 484 | processor. The files contained within the @code{no_cpu} directory |
---|
| 485 | may also be used as a reference for the other ports to specific |
---|
| 486 | processors. |
---|
[ae68ff0] | 487 | |
---|
[2723df7] | 488 | @item $@{RTEMS_ROOT@}/cpukit/shttpd/ |
---|
| 489 | This directory contains the port of the Simple HTTPD |
---|
| 490 | web server to RTEMS. |
---|
| 491 | |
---|
| 492 | @item $@{RTEMS_ROOT@}/cpukit/telnet/ |
---|
| 493 | This directory contains the RTEMS telnetd server. |
---|
| 494 | |
---|
[818ab36a] | 495 | @item $@{RTEMS_ROOT@}/cpukit/wrapup/ |
---|
| 496 | This directory is responsible for taking the individual |
---|
| 497 | libraries and objects built in each of the components |
---|
| 498 | in the RTEMS CPU Kit source tree and bundling them |
---|
| 499 | together to form the single RTEMS library @code{librtemscpu.a}. This |
---|
| 500 | library contains all BSP and CPU model specific software. |
---|
[ae68ff0] | 501 | |
---|
[2723df7] | 502 | @item $@{RTEMS_ROOT@}/cpukit/zlib/ |
---|
| 503 | This directory contains a port of the GNU Zlib compression |
---|
| 504 | library to RTEMS. |
---|
| 505 | |
---|
| 506 | @end table |
---|
| 507 | |
---|
| 508 | @c |
---|
| 509 | @c testsuites/ Test Suites |
---|
| 510 | @c |
---|
| 511 | @section testsuites/ Test Suites |
---|
| 512 | |
---|
| 513 | This directory provides all of the RTEMS Test Suite |
---|
| 514 | except those for the Classic API Ada95 binding |
---|
| 515 | This includes the single processor tests, multiprocessor tests, |
---|
| 516 | timing tests, library tests, and sample tests. Additionally, |
---|
| 517 | subdirectories for support functions and test related header |
---|
| 518 | files are provided. The following table lists the test suites |
---|
| 519 | currently included with the RTEMS and the directory in which |
---|
| 520 | they may be located: |
---|
| 521 | |
---|
| 522 | @table @code |
---|
| 523 | |
---|
| 524 | @item $@{RTEMS_ROOT@}/testsuites/itrontests/ |
---|
| 525 | This directory contains the test suite for the |
---|
| 526 | RTEMS ITRON API. |
---|
| 527 | |
---|
| 528 | @item $@{RTEMS_ROOT@}/testsuites/libtests/ |
---|
| 529 | This directory contains the test suite for the |
---|
| 530 | various RTEMS support components. |
---|
| 531 | |
---|
| 532 | @item $@{RTEMS_ROOT@}/testsuites/mptests/ |
---|
| 533 | This directory contains the test suite for the |
---|
| 534 | multiprocessor support in the Classic API. |
---|
| 535 | The tests provided address two node configurations |
---|
| 536 | and provide coverage for the multiprocessor code found |
---|
| 537 | in RTEMS. |
---|
| 538 | |
---|
| 539 | @item $@{RTEMS_ROOT@}/testsuites/psxtests/ |
---|
| 540 | This directory contains the test suite for the |
---|
| 541 | RTEMS POSIX API. |
---|
| 542 | |
---|
| 543 | @item $@{RTEMS_ROOT@}/testsuites/samples/ |
---|
| 544 | This directory provides sample application tests |
---|
| 545 | which aid in the testing a newly built RTEMS environment, a new |
---|
| 546 | BSP, or as starting points for the development of an application |
---|
| 547 | using the RTEMS executive. They are discussed in |
---|
| 548 | @ref{Sample Applications}. |
---|
| 549 | |
---|
| 550 | @item $@{RTEMS_ROOT@}/testsuites/sptests/ |
---|
| 551 | This directory contains the test suite for the RTEMS |
---|
| 552 | Classic API when executing on a single processor. |
---|
| 553 | The tests were originally designed to provide |
---|
| 554 | near complete test coverage for the the entire |
---|
| 555 | executive code. With the addition of multiple APIs, |
---|
| 556 | this is no longer the case as some SuperCore functionality |
---|
| 557 | is not available through the Classic API. Thus |
---|
| 558 | some functionality in the SuperCore is only covered |
---|
| 559 | by tests in the POSIX API and ITRON API Test Suites. |
---|
| 560 | |
---|
| 561 | @item $@{RTEMS_ROOT@}/testsuites/support/ |
---|
| 562 | This directory contains support software and header files |
---|
| 563 | for the various test suites. |
---|
| 564 | |
---|
| 565 | @item $@{RTEMS_ROOT@}/testsuites/tmitrontests/ |
---|
| 566 | This directory contains the timing test suite for |
---|
| 567 | the RTEMS ITRON API. |
---|
| 568 | |
---|
| 569 | @item $@{RTEMS_ROOT@}/testsuites/tmtests/ |
---|
| 570 | This directory contains the timing test suite for |
---|
| 571 | the RTEMS Classic API. This include tests that |
---|
| 572 | benchmark each directive in the Classic API |
---|
| 573 | as well as a set of critical SuperCore functions. |
---|
| 574 | These tests are important for helping to verify |
---|
| 575 | that RTEMS performs as expected on your target hardware. |
---|
| 576 | It is not uncommon to discover mistakes in board |
---|
| 577 | initialization such as caching being disabled as |
---|
| 578 | a side-effect of analyzing the results of these tests. |
---|
| 579 | |
---|
| 580 | @item $@{RTEMS_ROOT@}/testsuites/tools/ |
---|
| 581 | This directory contains tools which execute on |
---|
| 582 | the development host and aid in executing and |
---|
| 583 | evaluating the results of the test suite. The |
---|
| 584 | tools @code{difftest} compares the output of one |
---|
| 585 | or more tests with the expected output. If you |
---|
| 586 | place the output of all the @code{tmtests/} in |
---|
| 587 | a single file, then the utility @code{sorttimes} |
---|
| 588 | will be able to produce a report organizing the |
---|
| 589 | execution times by manager. |
---|
| 590 | |
---|
[818ab36a] | 591 | @end table |
---|
[ae68ff0] | 592 | |
---|
[2723df7] | 593 | |
---|
[ae68ff0] | 594 | @c |
---|
[818ab36a] | 595 | @c Documentation Directory |
---|
[ae68ff0] | 596 | @c |
---|
[818ab36a] | 597 | @section Documentation Directory |
---|
[ae68ff0] | 598 | |
---|
[818ab36a] | 599 | This directory contains the source code for all RTEMS documentation |
---|
| 600 | in @code{TexInfo} format as well as utilities used in the generation |
---|
| 601 | of the RTEMS documentation set. This source code is used to produce |
---|
| 602 | the RTEMS documentation in various formats including PDF, HTML, |
---|
| 603 | and PostScript. |
---|
[ae68ff0] | 604 | |
---|
[818ab36a] | 605 | @table @code |
---|
[ae68ff0] | 606 | |
---|
[818ab36a] | 607 | @item $@{RTEMS_ROOT@}/doc/user/ |
---|
| 608 | This directory contains the source code for the @cite{RTEMS |
---|
| 609 | Applications C User's Guide} which documents the Classic API. |
---|
| 610 | |
---|
| 611 | @item $@{RTEMS_ROOT@}/doc/ada_user/ |
---|
| 612 | This directory contains the source code for the @cite{RTEMS |
---|
| 613 | Applications Ada User's Guide} which documents the Ada95 |
---|
| 614 | binding to the Classic API. This manual is produced from |
---|
| 615 | from the same source base as the @cite{RTEMS Application |
---|
| 616 | C User's Guide}. |
---|
| 617 | |
---|
| 618 | @item $@{RTEMS_ROOT@}/doc/bsp_howto/ |
---|
| 619 | This directory contains the source code for the |
---|
| 620 | @cite{RTEMS BSP and Device Driver Development Guide}. |
---|
| 621 | |
---|
| 622 | @item $@{RTEMS_ROOT@}/doc/common/ |
---|
| 623 | This directory contains the source code for the files which |
---|
| 624 | are shared across multiple manuals in the RTEMS Documentation Set. |
---|
| 625 | This includes the copyright page as well as the timing |
---|
| 626 | tables which can be filled in on a per BSP basis in the |
---|
| 627 | CPU supplements. |
---|
| 628 | |
---|
[2723df7] | 629 | @item $@{RTEMS_ROOT@}/doc/cpu_supplement/ |
---|
| 630 | This directory contains the source code for the |
---|
| 631 | RTEMS CPU Supplement. |
---|
| 632 | |
---|
[818ab36a] | 633 | @item $@{RTEMS_ROOT@}/doc/develenv/ |
---|
| 634 | This directory contains the source code for the |
---|
| 635 | @cite{RTEMS Development Environment Guide}. This is |
---|
| 636 | the document you are currently reading. |
---|
| 637 | |
---|
| 638 | @item $@{RTEMS_ROOT@}/doc/filesystem/ |
---|
| 639 | This directory contains the source code for the |
---|
| 640 | @cite{RTEMS Filesystem Design Guide}. This manual |
---|
| 641 | is a continuous work in process as it attempts to |
---|
| 642 | capture the design of the interface between system |
---|
| 643 | calls and filesystem implementations as well as the |
---|
| 644 | information required by those implementing filesystems. |
---|
| 645 | |
---|
| 646 | @item $@{RTEMS_ROOT@}/doc/images/ |
---|
| 647 | This directory contains the source code for the graphics |
---|
| 648 | used in the HTML version of the RTEMS Documentation. |
---|
| 649 | |
---|
| 650 | @item $@{RTEMS_ROOT@}/doc/itron3.0/ |
---|
| 651 | This directory contains the source code for the |
---|
| 652 | @cite{RTEMS ITRON 3.0 API User's Guide}. |
---|
| 653 | |
---|
| 654 | @item $@{RTEMS_ROOT@}/doc/networking/ |
---|
| 655 | This directory contains the source code for the |
---|
| 656 | @cite{RTEMS Network Supplement}. |
---|
| 657 | |
---|
| 658 | @item $@{RTEMS_ROOT@}/doc/new_chapters/ |
---|
| 659 | This directory contains the source code for the new documentation |
---|
| 660 | components which have not yet been collected into a new manual or |
---|
| 661 | merged into an existing document. Currently, this primarily |
---|
| 662 | contains draft documentation for some portions of |
---|
| 663 | the facilities implemented in @code{$@{RTEMS_ROOT@}/c/src/libmisc/}. |
---|
| 664 | |
---|
| 665 | @item $@{RTEMS_ROOT@}/doc/porting/ |
---|
| 666 | This directory contains the source code for the |
---|
| 667 | @cite{RTEMS Porting Guide}. |
---|
| 668 | |
---|
| 669 | @item $@{RTEMS_ROOT@}/doc/posix1003.1/ |
---|
| 670 | This directory contains the source code for the |
---|
| 671 | @cite{RTEMS POSIX 1003.1 Compliance Guide}. |
---|
| 672 | |
---|
| 673 | @item $@{RTEMS_ROOT@}/doc/posix_users/ |
---|
| 674 | This directory contains the source code for the |
---|
| 675 | @cite{RTEMS POSIX API User's Guide}. It is important to |
---|
| 676 | note that RTEMS' support for POSIX is a combination of |
---|
| 677 | functionality provided by RTEMS and the Newlib C Library |
---|
| 678 | so some functionality is documented by Newlib. |
---|
| 679 | |
---|
| 680 | @item $@{RTEMS_ROOT@}/doc/relnotes/ |
---|
| 681 | This directory contains the source code for a formally |
---|
| 682 | release notes document. This has not been used for |
---|
| 683 | recent RTEMS releases. |
---|
| 684 | |
---|
| 685 | @item $@{RTEMS_ROOT@}/doc/rgdb_specs/ |
---|
| 686 | This directory contains the source code for the |
---|
| 687 | @cite{RTEMS Remote Debugger Server Specifications}. |
---|
| 688 | |
---|
| 689 | @item $@{RTEMS_ROOT@}/doc/rtems_gdb/ |
---|
| 690 | This directory contains the source code for the |
---|
| 691 | @cite{RTEMS/GDB User's Guide}. |
---|
| 692 | |
---|
| 693 | @item $@{RTEMS_ROOT@}/doc/started/ |
---|
| 694 | This directory contains the source code for the |
---|
| 695 | @cite{Getting Started with RTEMS for C/C++ Users} manual. |
---|
| 696 | |
---|
| 697 | @item $@{RTEMS_ROOT@}/doc/started_ada/ |
---|
| 698 | This directory contains the source code for the |
---|
| 699 | @cite{Getting Started with RTEMS for Ada Users} manual. |
---|
| 700 | |
---|
| 701 | @item $@{RTEMS_ROOT@}/doc/tools/ |
---|
| 702 | This directory contains the source code for the tools |
---|
| 703 | used on the development host to assist in producing the |
---|
| 704 | RTEMS Documentation. The most important of these tools |
---|
| 705 | is @code{bmenu} which generates the hierarchical node |
---|
| 706 | linking commands based upon chapter, section, and |
---|
| 707 | subsection organization. |
---|
[ae68ff0] | 708 | |
---|
[818ab36a] | 709 | @end table |
---|