forked from Imagelibrary/rtems
README: Rewrite and reduce
Delete old bit-rotting README files and rewrite the README to point readers toward authoritative sources of documentation.
This commit is contained in:
100
README
100
README
@@ -1,93 +1,15 @@
|
|||||||
Building RTEMS
|
See the documentation manuals in doc/ with daily builds available online at
|
||||||
==============
|
http://rtems.org/onlinedocs/doc-current/share/rtems/html/ and released builds
|
||||||
See the file README.configure.
|
at http://www.rtems.org/onlinedocs/releases/
|
||||||
|
|
||||||
Directory Overview
|
See the RTEMS Wiki at http://wiki.rtems.org/wiki/index.php/Main_Page
|
||||||
==================
|
for community knowledge and tutorials.
|
||||||
|
|
||||||
This is the top level of the RTEMS directory structure. The following
|
RTEMS Doxygen available at http://www.rtems.org/onlinedocs/doxygen/cpukit/html
|
||||||
is a description of the files and directories in this directory:
|
|
||||||
|
|
||||||
INSTALL
|
Get help on the mailing lists:
|
||||||
Rudimentary installation instructions. For more detailed
|
* For general-purpose questions related to using RTEMS, use the
|
||||||
information please see the Release Notes. The Postscript
|
rtems-users ml: http://www.rtems.org/mailman/listinfo/rtems-users
|
||||||
version of this manual can be found in the file
|
* For questions and discussion related to development of RTEMS, use the
|
||||||
c_or_ada/doc/relnotes.tgz.
|
rtems-devel ml: http://www.rtems.org/mailman/listinfo/rtems-devel
|
||||||
|
|
||||||
LICENSE
|
|
||||||
Required legalese.
|
|
||||||
|
|
||||||
README
|
|
||||||
This file.
|
|
||||||
|
|
||||||
c
|
|
||||||
This directory contains the source code for the C
|
|
||||||
implementation of RTEMS as well as the test suites, sample
|
|
||||||
applications, Board Support Packages, Device Drivers, and
|
|
||||||
support libraries.
|
|
||||||
|
|
||||||
doc
|
|
||||||
This directory contains the PDL for the RTEMS executive.
|
|
||||||
|
|
||||||
Ada versus C
|
|
||||||
============
|
|
||||||
|
|
||||||
There are two implementations of RTEMS in this source tree --
|
|
||||||
in Ada and in C. These two implementations are functionally
|
|
||||||
and structurally equivalent. The C implementation follows
|
|
||||||
the packaging conventions and hierarchical nature of the Ada
|
|
||||||
implementation. In addition, a style has been followed which
|
|
||||||
allows one to easily find the corresponding Ada and C
|
|
||||||
implementations.
|
|
||||||
|
|
||||||
File names in C and code placement was carefully designed to insure
|
|
||||||
a close mapping to the Ada implementation. The following file name
|
|
||||||
extensions are used:
|
|
||||||
|
|
||||||
.adb - Ada body
|
|
||||||
.ads - Ada specification
|
|
||||||
.adp - Ada body requiring preprocessing
|
|
||||||
.inc - include file for .adp files
|
|
||||||
|
|
||||||
.c - C body (non-inlined routines)
|
|
||||||
.inl - C body (inlined routines)
|
|
||||||
.h - C specification
|
|
||||||
|
|
||||||
In the executive source, XYZ.c and XYZ.inl correspond directly to a
|
|
||||||
single XYZ.adb or XYZ.adp file. A .h file corresponds directly to
|
|
||||||
the .ads file. There are only a handful of .inc files in the
|
|
||||||
Ada source and these are used to insure that the desired simple
|
|
||||||
inline textual expansion is performed. This avoids scoping and
|
|
||||||
calling convention side-effects in carefully constructed tests
|
|
||||||
which usually test context switch behavior.
|
|
||||||
|
|
||||||
In addition, in Ada code and data name references are always fully
|
|
||||||
qualified as PACKAGE.NAME. In C, this convention is followed
|
|
||||||
by having the package name as part of the name itself and using a
|
|
||||||
capital letter to indicate the presence of a "." level. So we have
|
|
||||||
PACKAGE.NAME in Ada and _Package_Name in C. The leading "_" in C
|
|
||||||
is used to avoid naming conflicts between RTEMS and user variables.
|
|
||||||
By using these conventions, one can easily compare the C and Ada
|
|
||||||
implementations.
|
|
||||||
|
|
||||||
The most noticeable difference between the C and Ada83 code is
|
|
||||||
the inability to easily obtain a "typed pointer" in Ada83.
|
|
||||||
Using the "&" operator in C yields a pointer with a specific type.
|
|
||||||
The 'Address attribute is the closest feature in Ada83. This
|
|
||||||
returns a System.Address and this must be coerced via Unchecked_Conversion
|
|
||||||
into an access type of the desired type. It is easy to view
|
|
||||||
System.Address as similar to a "void *" in C, but this is not the case.
|
|
||||||
A "void *" can be assigned to any other pointer type without an
|
|
||||||
explicit conversion.
|
|
||||||
|
|
||||||
The solution adopted to this problem was to provide two routines for
|
|
||||||
each access type in the Ada implementation -- one to convert from
|
|
||||||
System.Address to the access type and another to go the opposite
|
|
||||||
direction. This results in code which accomplishes the same thing
|
|
||||||
as the corresponding C but it is easier to get lost in the clutter
|
|
||||||
of the apparent subprogram invocations than the "less bulky"
|
|
||||||
C equivalent.
|
|
||||||
|
|
||||||
A related difference is the types which are only in Ada which are used
|
|
||||||
for pointers to arrays. These types do not exist and are not needed
|
|
||||||
in the C implementation.
|
|
||||||
|
|||||||
73
README.cdn-X
73
README.cdn-X
@@ -1,73 +0,0 @@
|
|||||||
Building RTEMS Canadian Cross
|
|
||||||
=============================
|
|
||||||
|
|
||||||
RTEMS now contains experimental and yet incomplete support for building
|
|
||||||
it Canadian Cross.
|
|
||||||
|
|
||||||
1. Introduction
|
|
||||||
---------------
|
|
||||||
If you don't know what Canadian Cross Building means, you probably don't want
|
|
||||||
to apply it and should consider stop reading here.
|
|
||||||
|
|
||||||
Interested readers might want to read Ian Lance Taylor's article at
|
|
||||||
http://www.airs.com/ian/configure for underlaying details and working
|
|
||||||
principles.
|
|
||||||
|
|
||||||
|
|
||||||
2. RTEMS
|
|
||||||
--------
|
|
||||||
Example: Building RTEMS for sparc-rtems under i386-pc-linux-gnu to be hosted
|
|
||||||
on a i386-cygwin platform.
|
|
||||||
|
|
||||||
2.1 Required tools
|
|
||||||
------------------
|
|
||||||
* A i386-pc-linux-gnu cross sparc-rtems toolchain.
|
|
||||||
* A i386-pc-linux-gnu cross i386-cygwin toolchain.
|
|
||||||
* A i386-pc-linux-gnu native toolchain.
|
|
||||||
|
|
||||||
We further on assume these to be installed to these locations:
|
|
||||||
/opt/rtems .. linux cross sparc-rtems toolchain
|
|
||||||
/opt/cygwin .. linux cross i386-cygwin cross-toolchain
|
|
||||||
/usr .. linux native toolchain and further tools.
|
|
||||||
|
|
||||||
2.2 Building sparc-rtems
|
|
||||||
------------------------
|
|
||||||
The first step is to build RTEMS for sparc-rtems under linux.
|
|
||||||
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
<path>/rtems/configure [options] \
|
|
||||||
--target=sparc-rtems \
|
|
||||||
--prefix=/opt/cygwin
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
This will build a standard sparc-rtems RTEMS and install it to the given
|
|
||||||
PREFIX.
|
|
||||||
|
|
||||||
2.3 Building i386-cygwin host support
|
|
||||||
-------------------------------------
|
|
||||||
The next step is to build RTEMS host support for i386-cygwin.
|
|
||||||
This basically means to cross-build the host tools contained in RTEMS.
|
|
||||||
|
|
||||||
mkdir host
|
|
||||||
cd host
|
|
||||||
<path>/rtems/configure [options] \
|
|
||||||
--target=sparc-rtems \
|
|
||||||
--build=`<path>/rtems/config.guess` \
|
|
||||||
--host=i386-cygwin \
|
|
||||||
--prefix=/opt/cygwin
|
|
||||||
make
|
|
||||||
make install
|
|
||||||
|
|
||||||
This will build RTEMS host-tools for i386-cygwin and install them to the given
|
|
||||||
PREFIX.
|
|
||||||
|
|
||||||
|
|
||||||
3. Known issues
|
|
||||||
---------------
|
|
||||||
|
|
||||||
* At present time, building RTEMS Canadian Cross is known to be immature, and
|
|
||||||
to require additional work. Do not expect this to work.
|
|
||||||
|
|
||||||
* The <toplevel>/make/ directory hierarchy is not treated correctly.
|
|
||||||
222
README.configure
222
README.configure
@@ -1,222 +0,0 @@
|
|||||||
1. Autoconf support
|
|
||||||
===================
|
|
||||||
|
|
||||||
This version of RTEMS is configured with GNU autoconf. RTEMS can be
|
|
||||||
configured and built either standalone or together with the compiler
|
|
||||||
tools in the Cygnus one-tree structure. Using autoconf also means
|
|
||||||
that RTEMS now can be built in a separate build directory.
|
|
||||||
|
|
||||||
To re-generate auto*tool generated files (configure, Makefile.in etc),
|
|
||||||
autoconf-2.68 and automake-1.11.1 are required.
|
|
||||||
|
|
||||||
2. Installation
|
|
||||||
===============
|
|
||||||
|
|
||||||
To configure RTEMS for a specific target, run configure in the build
|
|
||||||
directory. In addition to the standard configure options, the following
|
|
||||||
RTEMS-specific option are supported:
|
|
||||||
|
|
||||||
--disable-rtems-inlines
|
|
||||||
--disable-posix
|
|
||||||
--disable-networking
|
|
||||||
--enable-cxx
|
|
||||||
--enable-multiprocessing
|
|
||||||
--enable-rtemsbsp="bsp1 bsp2 ..."
|
|
||||||
--enable-tests
|
|
||||||
--enable-rdbg (only valid for i386 and some PowerPC BSPs)
|
|
||||||
--enable-docs
|
|
||||||
|
|
||||||
In addition, the following standard autoconf options are frequently
|
|
||||||
used when configuring RTEMS installations:
|
|
||||||
|
|
||||||
--prefix=INSTALL_DIRECTORY
|
|
||||||
|
|
||||||
By default, inline routines are used instead of macros where possible.
|
|
||||||
Macros can be selected using the --disable-inlines option. [NOTE:
|
|
||||||
Some APIs may not support macro versions of their inline routines.]
|
|
||||||
|
|
||||||
By default, the RTEMS POSIX 1003.1b interface is built for targets that support
|
|
||||||
it. It can be disabled with the --disable-posix option.
|
|
||||||
|
|
||||||
By default, the RTEMS networking support is built for targets which
|
|
||||||
support it. It can be specifically disabled for those targets
|
|
||||||
with the --disable-networking option.
|
|
||||||
|
|
||||||
By default, the RTEMS remote debugger server support is not built.
|
|
||||||
It can be specifically enabled for the targets that support it.
|
|
||||||
with the --enable-rdbg option. NB : the RTEMS networking support
|
|
||||||
must be enabled to support the remote debugger server.
|
|
||||||
|
|
||||||
By default, the RTEMS support of C++ is disabled. It can be enabled
|
|
||||||
with the --enable-cxx option. If the rtems++ C++ library is installed
|
|
||||||
it will also be build.
|
|
||||||
|
|
||||||
By default, the RTEMS test suites are NOT configured -- only the
|
|
||||||
sample tests are built. --enable-tests will configure
|
|
||||||
the RTEMS test suite. The default speeds up the build
|
|
||||||
and configure process when the tests are not desired.
|
|
||||||
|
|
||||||
By default, RTEMS is built using arguments and build rules which require a
|
|
||||||
gcc supporting the -specs option, ie. a gcc >= 2.8.
|
|
||||||
[The --disable-gcc28 option, which has been present in former releases, has
|
|
||||||
been removed.]
|
|
||||||
|
|
||||||
By default, multiprocessing is is not built. It can be enabled
|
|
||||||
for those BSPs supporting it by the --enable-multiprocessing option.
|
|
||||||
|
|
||||||
By default, all bsps for a target are built. The bare BSP is not built
|
|
||||||
unless directly specified. There are two ways of changing this:
|
|
||||||
|
|
||||||
+ use the --enable-rtemsbsp option which will set the specified
|
|
||||||
bsps as the default bsps, or
|
|
||||||
+ set the RTEMS_BSP variable during make (see below).
|
|
||||||
|
|
||||||
The --enable-rtemsbsp= option configures RTEMS for a specific board
|
|
||||||
within a target architecture. Remember that the target specifies the
|
|
||||||
CPU family while the BSP specifies the precise board you will be using.
|
|
||||||
The following targets are supported:
|
|
||||||
|
|
||||||
arm-rtems4.10
|
|
||||||
avr-rtems4.10
|
|
||||||
bfin-rtems4.10
|
|
||||||
h8300-rtems4.10
|
|
||||||
i386-rtems4.10
|
|
||||||
lm32-rtems4.10
|
|
||||||
m32c-rtems4.10
|
|
||||||
m32r-rtems4.10
|
|
||||||
m68k-rtems4.10
|
|
||||||
mips-rtems4.10
|
|
||||||
no_cpu-rtems4.10
|
|
||||||
powerpc-rtems4.10
|
|
||||||
sh-rtems4.10
|
|
||||||
sparc-rtems4.10
|
|
||||||
|
|
||||||
The cross-compiler is set to $(target)-gcc by default.
|
|
||||||
|
|
||||||
To build, run make in the build directory. To specify which bsps to build,
|
|
||||||
add the RTEMS_BSP="bsp1 bsp2 .." to the make command. Specifying multiple
|
|
||||||
BSPs to build only works from the top level build directory.
|
|
||||||
|
|
||||||
Installation is done under $(prefix)/rtems.
|
|
||||||
|
|
||||||
As an example, to build and install the mvme136 and mvme162 bsps for m68k do:
|
|
||||||
|
|
||||||
(path_to_rtems_src)/configure --target=m68k-rtems4.11
|
|
||||||
|
|
||||||
make RTEMS_BSP="mvme136 mvme162"
|
|
||||||
|
|
||||||
make install RTEMS_BSP="mvme136 mvme162"
|
|
||||||
|
|
||||||
The sample tests are built by 'make all' when configured with
|
|
||||||
--enable-tests=samples. Use --enable-tests=all to build the full
|
|
||||||
test suite.
|
|
||||||
|
|
||||||
Documentation is built separately from the source code.
|
|
||||||
|
|
||||||
3. To use the installed RTEMS library
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
To use the installed RTEMS bsps to build applications, the application
|
|
||||||
makefile has to include a bsp-specific makefile that will define the
|
|
||||||
RTEMS variables necessary to find include files and libraries. The
|
|
||||||
bsp-specific makefile is installed at
|
|
||||||
|
|
||||||
$(RTEMS_MAKEFILE_PATH)/Makefile.inc
|
|
||||||
|
|
||||||
For the erc32 bsp installed at /usr/local/cross, the environment
|
|
||||||
variable RTEMS_MAKEFILE_PATH would be set as follows to the
|
|
||||||
following:
|
|
||||||
|
|
||||||
/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc
|
|
||||||
|
|
||||||
4. Supported target bsps
|
|
||||||
========================
|
|
||||||
|
|
||||||
The following bsps are supported:
|
|
||||||
|
|
||||||
arm : csb336 csb337 edb7312 gba gp32 nds rtl22x rtl22xx_t
|
|
||||||
smdk2410
|
|
||||||
|
|
||||||
avr: : avrtest
|
|
||||||
|
|
||||||
bfin : eZKit533 bf537Stamp
|
|
||||||
|
|
||||||
h8300 : h8sim
|
|
||||||
|
|
||||||
i386 : i386ex pc386 pc386dx pc486 pc586 pc686 pck6 ts_386ex
|
|
||||||
NOTE: The "pc386" BSP can be compiled to support a
|
|
||||||
variety of PC configurations including PC-104
|
|
||||||
based solutions.
|
|
||||||
|
|
||||||
lm32: : lm32_evr
|
|
||||||
|
|
||||||
m32c : m32csim
|
|
||||||
|
|
||||||
m32r : m32rsim
|
|
||||||
|
|
||||||
m68k : av5282 csb360 gen68302 gen68360 gen68360_040
|
|
||||||
genmcf548x idp mcf5206elite mcf52235 mcf5235 mcf5239
|
|
||||||
m5484FireEngine mrm332 mvme136 mvme147s mvme162 mvme162lx
|
|
||||||
mvme167 ods68302 pgh360 sim68000 simcpu32 uC5282 COBRA5475
|
|
||||||
|
|
||||||
no_cpu : no_bsp (porting example)
|
|
||||||
|
|
||||||
mips : csb350 genmongoosev hurricane jmr3904 rbtx4925 rbtx4938
|
|
||||||
p4600 p4650
|
|
||||||
|
|
||||||
powerpc : brs5l ep1a gen5200 gen83xx haleakala hsc_cm01 icecube
|
|
||||||
mbx821_001 mbx821_002 mbx821_002b mbx860_001b mbx860_002
|
|
||||||
mbx860_005b mcp750 mvme2100 mvme2307 mtx603e
|
|
||||||
mvme5500 mpc55xxevb mpc8260ads mpc8313erdb mpc8349eamds
|
|
||||||
pghplus pm520_cr825 pm520_ze30 psim score603e ss555
|
|
||||||
tqm8xx_stk8xx virtex
|
|
||||||
|
|
||||||
NOTE: The "motorola_powerpc" BSP is a single BSP which
|
|
||||||
can be conditionally compiled to support most Motorola
|
|
||||||
VMEbus, CompactPCI, and MTX boards.)
|
|
||||||
|
|
||||||
NOTE: The mbx8xx, gen5200, gen83xx, and tqm8xx BSPs are
|
|
||||||
designed to handle a variety of boards based on the same
|
|
||||||
family of system on chips CPUs
|
|
||||||
|
|
||||||
sh : gensh1 gensh2 gensh4 simsh1 simsh2 simsh4
|
|
||||||
|
|
||||||
sparc : erc32 sis leon2 leon3
|
|
||||||
|
|
||||||
5. Makefile structure
|
|
||||||
=====================
|
|
||||||
|
|
||||||
The makefiles have been re-organized. Most gnu-based bsps now use three
|
|
||||||
main makefiles:
|
|
||||||
+ custom/default.cfg,
|
|
||||||
+ custom/bsp.cfg and
|
|
||||||
+ compilers/gcc-target-default.cfg.
|
|
||||||
|
|
||||||
Default.cfg sets the default values of certain common build options.
|
|
||||||
|
|
||||||
Bsp.cfg set bsp-specific build options and can also override the
|
|
||||||
default settings.
|
|
||||||
|
|
||||||
Gcc-target-default.cfg contains the common gcc definitions.
|
|
||||||
|
|
||||||
6. Adding a bsp
|
|
||||||
===============
|
|
||||||
|
|
||||||
Please refer to the BSP and Device Driver Guide.
|
|
||||||
|
|
||||||
|
|
||||||
7. Tested configurations
|
|
||||||
========================
|
|
||||||
|
|
||||||
All gnu-based bsps have been built on Linux.
|
|
||||||
|
|
||||||
8. Prerequisites
|
|
||||||
================
|
|
||||||
|
|
||||||
Gawk version 2 or higher.
|
|
||||||
GNU make version 3.72 or higher.
|
|
||||||
Bash.
|
|
||||||
gcc version > 2.8
|
|
||||||
|
|
||||||
NOTE: These prerequisites are probably out of date but autoconf should detect
|
|
||||||
any problems.
|
|
||||||
Reference in New Issue
Block a user