Reorganisse the User Manual to make it easier to navigate.

This commit is contained in:
Chris Johns 2016-07-04 12:30:09 +10:00
parent 6d7a4d2ee7
commit 86518bd3dd
19 changed files with 732 additions and 841 deletions

View File

@ -10,17 +10,30 @@ project = "RTEMS User Manual"
exclude_patterns = ['config/build.rst',
'config/runtime.rst',
'start/installation.rst',
'start/basics.rst',
'start/depend.rst',
'start/quick.rst',
'start/transition.rst',
'start/releases.rst',
'start/development.rst',
'start/installation.rst',
'start/windows.rst',
'test/create.rst',
'test/running.rst',
'hosts/os.rst',
'hosts/prefixes.rst',
'hosts/macos.rst',
'hosts/posix.rst',
'hosts/windows.rst',
'installation/prefixes-sandboxing.rst',
'installation/releases.rst',
'installation/developer.rst',
'tools/build.rst',
'tools/simulation.rst',
'test/create.rst',
'test/running.rst',
'waf/index.rst']
latex_documents = [

87
user/ecosys/index.rst Normal file
View File

@ -0,0 +1,87 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _ecosystem:
RTEMS Ecosystem
===============
.. index:: Ecosystem
The RTEMS Ecosystem is the collection of tools, packages, code, documentation
and online content provided by the RTEMS Project. The ecosystem provides a way
to develop, maintain, and use RTEMS. It's parts interact with the user, the
host environment, and each other to make RTEMS accessable, useable and
predicable.
The ecosystem is for users, developers and maintainers and it is an on going
effort that needs your help and support. The RTEMS project is always improving
the way it delivers the kernel to you and your feedback is important so please
join the mailing lists and contribute back comments, success stories, bugs and
patches.
What the RTEMS project describes here to develop, maintain and use RTEMS does
not dictate what you need to use in your project. You can and should select the
work-flow that best suites the demands of your project and what you are
delivering.
Rational
--------
RTEMS is complex and the focus of the RTEMS Ecosystem is to simplify the
complixity for users by providing a stable documented way to build, configure
and run RTEMS. RTEMS is more than a kernel running real-time applications on
target hardware, it is part of a project's and therefore team's workflow and
every project and team is different.
RTEMS's ecosystem does not mandate a way to work. It is a series of parts,
components, and items that are used to create a suitable development
environment to work with. The processes explained in this manual are the same
things an RTEMS maintainer does to maintain the kernel or an experienced user
does to build their production system. It is important to keep this in mind
when working through this manual. We encourage users to explore what can be
done and to discover ways to make it fit their needs. The ecosystem provided by
the RTEMS Project will not install in a single click of a mouse because we want
users to learn the parts they will come to depend on as their project's
development matures.
The RTEMS Ecosystem provides a standard interface that is the same on all
supported host systems. Standardizing how a user interacts with RTEMS is
important and making that experience portable is also important. As a result
the ecosystem is documented at the command line level and we leave GUI and IDE
integration for users and integrators.
Standardizing the parts and how to use them lets users create processes and
procedures that are stable over releases. The RTEMS Ecosystem generates data
that can be used to audit the build process so their configuration can be
documented.
The ecosystem is based around the source code used in the various parts,
compontents and items of the RTEMS development environment. A user can create
an archive of the complete build process including all the source code for long
term storage. This is important for projects with a long life cycle.
Open Source
-----------
RTEMS is an open source operating system and an open source project and this
extends to the ecosystem. We encourage users to integrate the processes to
build tools, the kernel and any 3rd party libraries into their project's
configuration management processes.
All the parts that make up the ecosystem are open source. The ecosystem uses a
package's source code to create an executable on a host so when an example
RTEMS executable is created and run for the first time the user will have built
every tool as well as the executable from source. The RTEMS Project believes
the freedom this gives a user is as important as the freedom of having access
to the source code for a package.
Deployment
----------
The RTEMS Project provides the ecosystem as source code that users can download
to create personalised development environments. The RTEMS Project does not
provide packaging and deployment for a specific host environment, target
architecture or BSP. The RTEMS Project encourages users and organizations to
fill this role for the community.

View File

@ -1,8 +1,6 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. _glossary:
Glossary
========

50
user/hosts/index.rst Normal file
View File

@ -0,0 +1,50 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _host-computer:
.. _development-host:
Host Computer
-------------
.. index:: Host Computer
RTEMS applications are developed using cross-development tools running on a
development computer, more often called the host computer. These are typically
your desktop machine or a special build server. All RTEMS tools and runtime
libraries are built from source on your host machine. The RTEMS Project does
not maintain binary builds of the tools. This differs to what you normally
experience with host operating systems, and it is, however this approach works
well. RTEMS is not a host operating system and it is not a
distrbution. Deploying binary packages for every possible host operating system
is too big a task for the RTEMS Project and it is not a good use of core
developer time. Their time is better spent making RTEMS better and faster.
The RTEMS Project's aim is to give you complete freedom to decide on the
languages used in your project, which version control system, and the build
system for your application.
The rule for selecting a computer for a developer is `more is better` but we do
understand there are limits. Projects set up different configurations, some
have a development machine per developer while others set up a tightly
controlled central build server. RTEMS Ecosystem is flexible and lets you
engineer a development environment that suites you. The basic specs are:
- Multicore processor
- 8G bytes RAM
- 256G harddisk
RTEMS makes no demands on graphics.
If you are using a VM or your host computer is not a fast modern machine do not
be concerned. The tools may take longer to build than faster hardware however
building tools is something you do once. Once the tools and RTEMS is built all
your time can be spent writing and developing your application. Over an hour
can happen and for the ARM architecture and with all BSPs it can be many hours.
.. include:: os.rst
.. include:: posix.rst
.. include:: macos.rst
.. include:: windows.rst

21
user/hosts/macos.rst Normal file
View File

@ -0,0 +1,21 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _macos:
Apple OS X
~~~~~~~~~~
Apple's OS X is fully supported. You need to download and install a recent
version of the Apple developer application Xcode. Xocde is available in the App
Store. Make sure you install the Command Line Tools add on available for
download within Xcode and once installed open a Terminal shell and enter the
command ``cc`` and accept the license agreement.
The normal prefix when working on OS X as a user is under your home directory.
Prefixes of :file:`$HOME/development/rtems` or :file:`$HOME/rtems` are
suitable.
:ref:`prefixes` details using Prefixes to manage the installation.

32
user/hosts/os.rst Normal file
View File

@ -0,0 +1,32 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _host-os:
Host Operating Systems
~~~~~~~~~~~~~~~~~~~~~~
.. sidebar:: *GDB and Python*
RTEMS uses Python in GDB to aid debugging which means GDB needs to be built
with Python development libraries. Please check the RSB documentation and
install the packages specified for your host. Make sure a python development
package is included.
A wide range of host operating systems and hardware can be used. The host
operating systems supported are:
- Linux
- FreeBSD
- NetBSD
- Apple OS X
- Windows
- Solaris
The functionality on a POSIX operating such as Linux and FreeBSD is similar and
most features on Windows are supported but you are best to ask on the
:r:list:`users` if you have a specific question.
We recommend you maintain your operating system by installing any updates.

39
user/hosts/posix.rst Normal file
View File

@ -0,0 +1,39 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _posix-hosts:
POSIX Hosts
~~~~~~~~~~~
POSIX hosts are most Unix operating systems such as Linux, FreeBSD and
NetBSD. RTEMS development works well on Unix and can scale from a single user
and a desktop machine to a team with decentralised or centralised development
infrastructure.
Root Access
^^^^^^^^^^^
You either have ``root`` access to your host development machine or you do
not. Some users are given hardware that is centrally managed. If you do not
have ``root`` access you can create your work environment in your home
directory. You could use a prefix of :file:`$HOME/development/rtems` or
:file:`$HOME/rtems`. Note, the ``$HOME`` environment variable can be
substituted with ``~``.
:ref:`prefixes` details using Prefixes to manage the installation.
RTEMS Tools and packages do not require ``root`` access
to be built and we encourage you to not build the tools as ``root``. If you
need to control write access then it is best to manage this with groups
assigned to users.
If you have ``root`` access you can decide to install the tools under any
suitable prefix. This may depend on the hardware in your host development
machine. If the machine is a centralised build server the prefix may be used to
separate production versions from the test versions and the prefix paths may
have restricted access rights to only those who manage and have configuration
control of the machine. We call this project sandboxing and
:ref:`project-sandboxing` explains this in more detail.

View File

@ -3,127 +3,10 @@
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _development-hosts:
Development Hosts
=================
.. index:: Hosts
RTEMS applications are developed using cross-development tools running on a
host computer, typically your desktop or a special build server. All RTEMS
tools and runtime libraries are built from source on your host machine. The
RTEMS Project does not maintain binary builds of the tools. This may appear be
the opposite to what you normally experience with host operating systems, and
it is, however this approach works well. RTEMS is not a host operating system
and it is not a distrbution. Providing binary packages for every possible host
operating system is too big a task for the RTEMS Project and it is not a good
use of core developer time. Their time is better spent making RTEMS better and
faster.
Developer Computer
------------------
The rule for selecting a computer for a developer is `more is better` but we do
understand there are limits. Projects set up different configurations and what
is described here is not an approved set up, rather it is a guide. Some
projects have a suitable development machine per developer while others set up
a tightly controlled central build server. RTEMS is flexible and lets you
engineer a development environment that suites you. The basic specs are:
- Multicore processor
- 8G bytes RAM
- 256G harddisk
RTEMS makes no demands on graphics.
If you are using a VM or your host computer is not a fast modern machine do not
be concerned. The tools may take longer to build than faster hardware however
building tools is something you do once. Once the tools and RTEMS is built all
your time can be spent writing and developing your application. Over an hour
does happen and for the ARM architecture with all BSPs it can be many hours.
Host Software
-------------
A wide range of host operating systems and hardware can be used. The host
operating systems supported are:
- Linux
- FreeBSD
- NetBSD
- Apple OS X
- Windows
- Solaris
The functionality on a POSIX operating such as Linux and FreeBSD is similar and
most features on Windows are supported but you are best to ask on the
:r:list:`users` if you have a specific question.
We recommend you maintain your operating system by installing any updates.
POSIX Hosts
-----------
.. sidebar:: *GDB and Python*
RTEMS uses Python in GDB to aid debugging which means GDB needs to be built
with Python development libraries. Please check the RSB documentation and
install the packages specified for your host. Make sure a python development
package is included.
POSIX hosts are most Unix operating systems such as Linux, FreeBSD and
NetBSD. RTEMS development works well on Unix and can scale from a single user
and a desktop machine to a team with decentralised or centralised development
infrastructure. The RTEMS project provides you with the development tools and
aids to help you create an environment that matches your project's needs. The
RTEMS Project's aim is to give you complete freedom to decide on the languages
used in your project, which version control system, and the build system for
your application.
The following are a few ways you can set up a suitable environment. You are not
limited to what is present here. A common factor that defines the final
location of tools and projects is the place you have suitable storage. The
following set ups assume suitable disk space and disk performance.
Administrator Access
~~~~~~~~~~~~~~~~~~~~
You either have ``root`` access to your host development machine or you do
not. Some users are given hardware that is centrally managed. If you do not
have ``root`` access you can create your work environment in your home
directory. You could use a prefix of :file:`$HOME/development/rtems` or
:file:`$HOME/rtems`. Note, the ``$HOME`` environment variable can be
substituted with ``~``.
RTEMS Tools and packages do not require ``root`` access
to be built and we encourage you to not build the tools as ``root``. If you
need to control write access then it is best to manage this with groups
assigned to users.
If you have ``root`` access you can decide to install the tools under any
suitable prefix. This may depend on the hardware in your host development
machine. If the machine is a centralised build server the prefix may be used to
separate production versions from the test versions and as just discussed the
prefix paths may have restricted access rights to only those who manage and
have configuration control of the machine.
Apple OS X
----------
Apple's OS X is fully supported. You need to download and install a recent
version of the Apple developer application Xcode. Xocde is available in the App
Store. Make sure you install the Command Line Tools add on available for
download within Xcode and once installed open a Terminal shell and enter the
command ``cc`` and accept the license agreement.
The normal prefix when working on OS X as a user is under your home directory.
Prefixes of :file:`$HOME/development/rtems` or :file:`$HOME/rtems` are
suitable.
.. _microsoft-windows:
Microsoft Windows
-----------------
~~~~~~~~~~~~~~~~~
RTEMS supports Windows as a development host and the tools for most
architectures are available. The RTEMS Project relies on the GNU tools for
@ -160,8 +43,8 @@ Building is known to work on `Windows 7 64bit Professional` and `Windows 10`.
.. _windows-path-length:
Path Length
~~~~~~~~~~~
Windows Path Length
^^^^^^^^^^^^^^^^^^^
Windows path length is limited and can cause problems when building the
tools. The standard Windows API has a ``MAX_PATH`` length of 260
@ -178,7 +61,7 @@ smaller to build. This is indicated in :ref:`released-version`.
.. _msys2_parallel_builds:
Parallel Builds with Make
~~~~~~~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^^^^^^^
The MSYS2 GNU ``make`` has problems when using the `jobs` option. The RSB
defaults to automatically using as many cores as the host machine has. To get a
@ -186,7 +69,7 @@ successful build on Windows it is recommended you add the ``--jobs=none``
option to all RSB build set commands.
POSIX Support
~~~~~~~~~~~~~
^^^^^^^^^^^^^
Building the RTEMS compilers, debugger, the RTEMS kernel and a number of other
3rd party packages requires a POSIX environment. On Windows you can use Cygwin
@ -204,7 +87,7 @@ distribution and that is a welcome feature on Windows. You get a powerful tool
to manage your development environment on Windows.
Python
~~~~~~
^^^^^^
We need Python to build the tools as the RSB is written in Python and we need
suitable Python libraries to link to GDB as RTEMS makes use of GDB's Python
@ -214,11 +97,11 @@ make sure you have the correct type and version of Python installed.
We cannot use the Python executables created by the Python project (python.org)
as they are built by Microsoft's C (MSC) compiler. Linking the MSC Python
libraries with the MinGW64 executables is not easy and MSYS provided us with a
libraries with the MinGW64 executables is not easy and MSYS provides us with a
simple solution so we do not support linking MSC libraries.
MSYS2 provides two types and versions of Python executables, MinGW and MSYS and
Python version 2 and 3. For Windows we need the MinGW executable so we have
MSYS2 provides two types and two versions of Python executables, MinGW and MSYS
and Python version 2 and 3. For Windows we need the MinGW executable so we have
suitables libraries and we have to have Python version 2 because on Windows GDB
only builds with Python2.
@ -227,8 +110,10 @@ Python2 package. The MSYS Python is version 3 and the RSB can support version 2
and 3 of Python and it helps handle some of the long paths building GCC can
generate.
.. _microsoft-windows-installation:
Installing MSYS2
~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^
MSYS2 is installed on a new machine using the MSYS2 installer found on
https://msys2.github.io/. Please select the ``x86_64`` variant for 64bit
@ -267,8 +152,8 @@ The packages we require are:
.. note::
The actual output provided may vary due to changes in the dependent packages or
newer package versions.
The actual output provided may vary due to changes in the dependent packages
or newer package versions.
Install the packages using ``pacman``:

View File

@ -1,5 +1,11 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment Headingd
.. comment 1 ======
.. comment 2 ------
.. comment 3 ~~~~~~
.. comment 4 ^^^^^^
.. highlight:: c
============================
@ -14,12 +20,11 @@ Table of Contents
:numbered:
overview/index
ecosys/index
start/index
config/index
tools/index
test/index
hosts/index
installation/index
architecture/index
bsp/index

View File

@ -3,10 +3,212 @@
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _microsoft-windows-installation:
.. _developer:
.. _development-version:
.. _unstable:
Microsoft Windows
-----------------
Developer (Unstable)
--------------------
.. index:: Git
RTEMS provides open access to it's development processes. We call this the
developer set up. The project encouages all users to inspect, review, comment
and contribute to the code base. The processes described here are the same
processes the core development team use when developing and maintaining RTEMS.
.. warning::
The development version is not for use in production and it can break from
time to time.
Please read :ref:`development-host` before continuing. The following procedure
assumes you have installed and configured your host operating system. It also
assumes you have installed any dependent packages needed when building the
tools and the kernel.
You need to select a location to build and install the RTEMS Tool chain and
RTEMS. Make sure there is plenty of disk space and a fast disk is
recommended. Our procedure will document building and installing the tools in a
home directory called :file:`development/rtems`. Using a home directory means
you can do this without needing to be root. You can also use
:file:`/opt/rtems/build` if you have access to that path.
The location used to install the tools and kernel is called the `prefix`. It is
best to have a `prefix` for each different version of RTEMS you are using. If
you are using RTEMS 4.11 in production it is not a good idea to install a
development version of 4.12 over the top. A separate `prefix` for each version
avoids this.
The RTEMS tool chain changes less often than the RTEMS kernel. One method of
working with development releases is to have a separate `prefix` for the RTEMS
tools and a different one for the RTEMS kernel. You can then update each
without interacting with the other. You can also have a number of RTEMS
versions available to test with.
.. sidebar:: *Downloading the source*
You need an internet connection to download the source. The downloaded source
is cached locally and the RSB checksums it. If you run a build again the
download output will be missing. Using the RSB from git will download the
source from the upstream project's home site and this could be `http`, `ftp`,
or `git`.
.. _posix-host-tools-chain:
.. _macos-host-tools-chain:
POSIX and OS X Host Tools Chain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This procedure will build a SPARC tool chain.
Clone the RTEMS Source Builder (RSB) repository:
.. code-block:: shell
$ cd
$ mkdir -p development/rtems
$ cd development/rtems
$ git clone git://git.rtems.org/rtems-source-builder.git rsb
Cloning into 'rsb'...
remote: Counting objects: 5837, done.
remote: Compressing objects: 100% (2304/2304), done.
remote: Total 5837 (delta 4014), reused 5056 (delta 3494)
Receiving objects: 100% (5837/5837), 2.48 MiB | 292.00 KiB/s, done.
Resolving deltas: 100% (4014/4014), done.
Checking connectivity... done.
Check all the host packages you need are present. Current libraries are not
checked and this includes checking for the python development libraries GDB
requires:
.. code-block:: shell
$ cd rsb
$ ./source-builder/sb-check
RTEMS Source Builder - Check, 4.12 (e645642255cc)
Environment is ok
Build a tool chain for the SPARC architecure. We are using the SPARC
architecture because GDB has a good simulator that lets us run and test the
samples RTEMS builds by default. The current development version
is `4.12` and is on master:
.. code-block:: shell
$ cd rtems
$ ../source-builder/sb-set-builder \
--prefix=/usr/home/chris/development/rtems/4.12 4.12/rtems-sparc
RTEMS Source Builder - Set Builder, 4.12 (e645642255cc)
Build Set: 4.12/rtems-sparc
Build Set: 4.12/rtems-autotools.bset
Build Set: 4.12/rtems-autotools-internal.bset
config: tools/rtems-autoconf-2.69-1.cfg
package: autoconf-2.69-x86_64-linux-gnu-1
Creating source directory: sources
download: ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -> sources/autoconf-2.69.tar.gz
downloading: sources/autoconf-2.69.tar.gz - 1.8MB of 1.8MB (100%)
building: autoconf-2.69-x86_64-linux-gnu-1
config: tools/rtems-automake-1.12.6-1.cfg
package: automake-1.12.6-x86_64-linux-gnu-1
download: ftp://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.gz -> sources/automake-1.12.6.tar.gz
downloading: sources/automake-1.12.6.tar.gz - 2.0MB of 2.0MB (100%)
Creating source directory: patches
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/automake/automake-1.12.6-bugzilla.redhat.com-1239379.diff -> patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff
downloading: patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff - 408.0 bytes of 408.0 bytes (100%)
building: automake-1.12.6-x86_64-linux-gnu-1
cleaning: autoconf-2.69-x86_64-linux-gnu-1
cleaning: automake-1.12.6-x86_64-linux-gnu-1
Build Set: Time 0:00:17.465024
Build Set: 4.12/rtems-autotools-base.bset
config: tools/rtems-autoconf-2.69-1.cfg
package: autoconf-2.69-x86_64-linux-gnu-1
building: autoconf-2.69-x86_64-linux-gnu-1
reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.txt
reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.xml
config: tools/rtems-automake-1.12.6-1.cfg
package: automake-1.12.6-x86_64-linux-gnu-1
building: automake-1.12.6-x86_64-linux-gnu-1
reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.txt
reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.xml
installing: autoconf-2.69-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: automake-1.12.6-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
cleaning: autoconf-2.69-x86_64-linux-gnu-1
cleaning: automake-1.12.6-x86_64-linux-gnu-1
Build Set: Time 0:00:05.358624
Build Set: Time 0:00:22.824422
config: devel/expat-2.1.0-1.cfg
package: expat-2.1.0-x86_64-linux-gnu-1
download: http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz -> sources/expat-2.1.0.tar.gz
redirect: http://internode.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
downloading: sources/expat-2.1.0.tar.gz - 549.4kB of 549.4kB (100%)
building: expat-2.1.0-x86_64-linux-gnu-1
reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.txt
reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.xml
config: tools/rtems-binutils-2.26-1.cfg
package: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2 -> sources/binutils-2.26.tar.bz2
downloading: sources/binutils-2.26.tar.bz2 - 24.4MB of 24.4MB (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/binutils/binutils-2.26-rtems-aarch64-x86_64.patch -> patches/binutils-2.26-rtems-aarch64-x86_64.patch
downloading: patches/binutils-2.26-rtems-aarch64-x86_64.patch - 3.2kB of 3.2kB (100%)
building: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.txt
reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.xml
config: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg
package: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
download: ftp://gcc.gnu.org/pub/gcc/snapshots/6-20160228/gcc-6-20160228.tar.bz2 -> sources/gcc-6-20160228.tar.bz2
downloading: sources/gcc-6-20160228.tar.bz2 - 90.8MB of 90.8MB (100%)
download: ftp://sourceware.org/pub/newlib/newlib-2.3.0.20160226.tar.gz -> sources/newlib-2.3.0.20160226.tar.gz
downloading: sources/newlib-2.3.0.20160226.tar.gz - 16.9MB of 16.9MB (100%)
download: http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2 ->
sources/mpfr-2.4.2.tar.bz2
downloading: sources/mpfr-2.4.2.tar.bz2 - 1.0MB of 1.0MB (100%)
download: http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz -> sources/mpc-0.8.1.tar.gz
downloading: sources/mpc-0.8.1.tar.gz - 532.2kB of 532.2kB (100%)
download: ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2 -> sources/gmp-4.3.2.tar.bz2
downloading: sources/gmp-4.3.2.tar.bz2 - 1.8MB of 1.8MB (100%)
building: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.xml
config: tools/rtems-gdb-7.9-1.cfg
package: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
download: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.xz -> sources/gdb-7.9.tar.xz
downloading: sources/gdb-7.9.tar.xz - 17.0MB of 17.0MB (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-arange-inline.diff -> patches/gdb-sim-arange-inline.diff
downloading: patches/gdb-sim-arange-inline.diff - 761.0 bytes of 761.0 bytes (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-cgen-inline.diff -> patches/gdb-sim-cgen-inline.diff
downloading: patches/gdb-sim-cgen-inline.diff - 706.0 bytes of 706.0 bytes (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-7.9-aarch64-x86_64.patch -> patches/gdb-7.9-aarch64-x86_64.patch
downloading: patches/gdb-7.9-aarch64-x86_64.patch - 1.7kB of 1.7kB (100%)
building: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.xml
config: tools/rtems-tools-4.12-1.cfg
package: rtems-tools-HEAD-1
Creating source directory: sources/git
git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: reset: git://git.rtems.org/rtems-tools.git
git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: checkout: git://git.rtems.org/rtems-tools.git => HEAD
git: pull: git://git.rtems.org/rtems-tools.git
building: rtems-tools-HEAD-1
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.txt
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.xml
installing: expat-2.1.0-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: rtems-tools-HEAD-1 -> /usr/home/chris/development/rtems/4.12
cleaning: expat-2.1.0-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
cleaning: rtems-tools-HEAD-1
Build Set: Time 0:31:09.754219
.. _windows-tool-chain:
Windows Host Tool Chain
~~~~~~~~~~~~~~~~~~~~~~~
.. index:: Microsoft Windows Installation
This section details how you create an RTEMS development environment on
@ -21,8 +223,8 @@ Please see :ref:`microsoft-windows` before continuing.
probably opened an MSYS2 32bit Shell. Close all 32bit Shell windows and open
the MSYS2 64bit Shell.
RTEMS Tools
~~~~~~~~~~~
RTEMS Windows Tools
^^^^^^^^^^^^^^^^^^^
Create a workspace for RTEMS using the following shell command:
@ -202,8 +404,10 @@ tools is:
/c/opt/rtems/rsb/rtems
$
.. _rtems-kernel-install:
Building the Kernel
~~~~~~~~~~~~~~~~~~~
^^^^^^^^^^^^^^^^^^^
We can now build the RTEMS kernel using the RTEMS tools we have just
built. First we need to set the path to the tools:
@ -466,12 +670,3 @@ Install the kernel to our prefix:
make[1]: Leaving directory '/c/opt/rtems/kernel/pc686'
/c/opt/rtems/kernel/pc686
$
Building the LibBSD
~~~~~~~~~~~~~~~~~~~
The RTEMS BSD Library or libBSD as it is also known is a package of FreeBSD code
ported to RTEMS. It provides a number of advantanced services including a
networking stack.
| This needs to move to a new section and be completed.

View File

@ -0,0 +1,47 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _installation:
Installation
============
.. index:: Installation
This section details how to set up and install the RTEMS Ecosystem. You will
create a set of tools and an RTEMS kernel for your selected Board Support
Package (BSP).
You will be asked to follow a few simple steps and when you have finished you
will have a development environment set up you can use to build applications
for RTEMS. You will have also created a development environment you and a team
can adapt for a project of any size and complexity.
.. index:: Tools
RTEMS applications are developed using cross-development tools running on a
development computer, more commonlly referred to as the host computer. These
are typically your desktop machine or a special build server. All RTEMS tools
and runtime libraries are built from source on your host machine. The RTEMS
Project does not maintain binary builds of the tools. This may appear to be the
opposite to what you normally experience with host operating systems, and it
is, however this approach works well. RTEMS is not a host operating system and
it is not a distrbution. Providing binary packages for every possible host
operating system is too big a task for the RTEMS Project and it is not a good
use of core developer time. Their time is better spent making RTEMS better and
faster.
The RTEMS Project base installation set ups the tools and the RTEMS kernel for
the selected BSPs. The tools run on your host computer are used to compile,
link, and format executables so they can run on your target hardware.
The RTEMS Project supports two set ups, release and developer
environments. Release installations create the tools and kernel in a single
pass ready for you to use. The tools and kernel are stable and only bug fixes
are added creating new dot point releases. The developer set up tracks the Git
repositories for the tools and kernel.
.. include:: prefixes-sandboxing.rst
.. include:: releases.rst
.. include:: developer.rst

View File

@ -6,7 +6,9 @@
.. _prefixes:
Prefixes
========
--------
.. index:: Prefixes
You will see the term :ref:term:`prefix` referred to thoughout this
documentation and in a wide number of software packages you can download from
@ -46,10 +48,10 @@ path for all RTEMS 4.11 releases of :file:`/opt/rtems/4.11`.
For Windows a typical **prefix** is :file:`C:\\opt\\rtems` and as an MSYS2 path
this is :file:`/c/opt/rtems`.
.. _project_sandboxing:
.. _project-sandboxing:
Project Sandboxing
==================
------------------
Project specific sandboxes let you have a number of projects running in
parallel with each project in its own sandbox. You simply have a

View File

@ -5,8 +5,8 @@
.. _released-version:
Released Version
================
Releases
--------
.. index:: tarball
.. index:: release
@ -14,21 +14,19 @@ RTEMS releases provide a stable version of the kernel for the supported
architectures. RTEMS maintaines the current and previous releases. Support for
older releases is provided using the RTEMS support channels.
Please read :ref:`development-hosts` before continuing.
The following procedure assumes you have installed and configured your host
operating. It also assumes you have installed any dependent packages needed
when building the tools and the kernel.
Please read :ref:`development-host` before continuing. The following procedure
assumes you have installed and configured your host operating. It also assumes
you have installed any dependent packages needed when building the tools and
the kernel.
You need to select a location to build and install the RTEMS Tool chain and
RTEMS. Make sure there is plenty of disk space and a fast disk is
recommended. Our procedure will document building and installing the tools in a
home directory called :file:`/opt/rtems`. This path will require root
base directory called :file:`/opt/rtems`. This path will require root
access. If you are working on a machine you do not have root access to you can
use a home directory, :ref:`development-version` has more details about
this. If building on Windows use :file:`/c/opt/rtems` to keep the top level
paths as short as possible. :ref:`microsoft-windows-installation` provides more
detail about path lengths on Windows.
use a home directory, If building on Windows use :file:`/c/opt/rtems` to keep
the top level paths as short as possible. :ref:`windows-path-length` provides
more detail about path lengths on Windows.
The location used to install the tools and kernel is called the
`prefix`. :ref:`prefixes` explains prefixes and how to use them. It is best to
@ -37,16 +35,16 @@ using RTEMS 4.11 in production it is **not** a good idea to install a
development version of 4.12 over the top by using the same `prefix` as the 4.11
build. A separate `prefix` for each version avoids this.
Released versions of the RSB download all source code for all packages from the
:r:url:`ftp` rather than from the package's home site. Hosting all the source
on the :r:url:`ftp` ensures the source is present for the life of the
release on the :r:url:`ftp`. If there is a problem accessing the RTEMS FTP
the RSB will fall back to the packages home site.
Released versions of the RTEMS Source Builder (RSB) downloads all source code
for all packages from the :r:url:`ftp` rather than from the package's home
site. Hosting all the source on the :r:url:`ftp` ensures the source is present
for the life of the release on the :r:url:`ftp`. If there is a problem
accessing the RTEMS FTP the RSB will fall back to the packages home site.
The :r:url:`ftp` is hosted at the Oregon State University's The Open Source Lab
(http://osuosl.org/). This is a nonprofit organization working for the
advancement of open source technologies and RTEMS is very fortunate to hosted
here. It has excellent internet access and performance.
advancement of open source technologies and RTEMS is very fortunate to be
shosted here. It has excellent internet access and performance.
.. note:: **Controlling the RTEMS Kernel Build**
@ -59,8 +57,8 @@ here. It has excellent internet access and performance.
SPARC architecture you can supply ``--with-rtemsbsp="erc32 sis"``. This can
speed the build time up for some architectures that have a lot of BSPs.
RTEMS Tools Chain
-----------------
RTEMS Tools and Kernel
~~~~~~~~~~~~~~~~~~~~~~
This procedure will build a SPARC tool chain. Set up a suitable workspace to
build the release in. On Unix:
@ -282,3 +280,5 @@ discussed in :ref:`msys2_parallel_builds`.
cleaning: rtems-tools-4.11.0-1
cleaning: sparc-rtems4.11-kernel-4.11.0-1
Build Set: Time 0:19:15.713662
You can now build a 3rd party library or an application as defailted in TBD.

View File

@ -1,25 +1,24 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. _overview:
Overview
=========
Welcome to the :ref:term:`RTEMS` User Manual.
This document covers all the topics required as a user of RTEMS to use the
RTEMS operating system.
This document covers the topics a user of RTEMS needs to be able to install,
configure, build and create applications for the RTEMS operating system.
RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time executive
(kernel) which provides a high performance environment for embedded
applications including the following features:
applications with the following features:
.. sidebar:: Developers
Developers should look at the :r:url:`devel` for technical information. The
design and development of RTEMS is located there.
- standards based user interfaces
- multitasking capabilities
- homogeneous and heterogeneous multiprocessor systems
@ -38,6 +37,8 @@ applications including the following features:
- high level of user configurability
- open source with a friendly user license
RTEMS provides features found in modern operating systems:
- file systems
@ -48,8 +49,12 @@ RTEMS provides features found in modern operating systems:
- permanent media such as flash disks, cards and USB devices
- support for various languages
- parallel programming language support
Real-time Application Systems
=============================
-----------------------------
Real-time application systems are a special class of computer applications.
They have a complex set of characteristics that distinguish them from other
@ -84,7 +89,7 @@ competing processors are introduced. The ramifications of multiple processors
complicate each and every characteristic of a real-time system.
Real-time Executive
===================
-------------------
Fortunately, real-time operating systems, or real-time executives, serve as a
cornerstone on which to build the application system. A real-time multitasking
@ -122,18 +127,3 @@ routines to manage memory, pass messages, or provide mutual exclusion. The
developer is then able to concentrate solely on the application. By using
standard software components, the time and cost required to develop
sophisticated real-time applications is significantly reduced.
Open Source
===========
RTEMS is an open source operating system and an open source project. As a user,
you have access to all the source code. We encourage you to work with the
source code and integrate the provided processes used to build tools, the
kernel and any 3rd party libraries into your project's configuration management
processes. The RTEMS project is always improving the way it develivers the
kernel to you and so your feedback is important.
What we used in the RTEMS project to develop and maintain RTEMS does not
dictate what you use to develop and maintain your project. You can, and should,
select the work-flow that best suites the demands of your project and what you
are delivering.

View File

@ -1,609 +0,0 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
.. _development-version:
Development Version
===================
.. index:: Git
RTEMS provides open access to it's development processes. The project encouages
all users to inspect, review, comment and contribute to the code base. The
processes described here are the same processes the core development team use
when developing and maintaining RTEMS.
Please read :ref:`development-hosts` before continuing.
.. warning::
The development version is not for use in production and it can break from
time to time.
The following procedure assumes you have installed and configured your host
operating system. It also assumes you have installed any dependent packages
needed when building the tools and the kernel.
You need to select a location to build and install the RTEMS Tool chain and
RTEMS. Make sure there is plenty of disk space and a fast disk is
recommended. Our procedure will document building and installing the tools in a
home directory called :file:`development/rtems`. Using a home directory means
you can do this without needing to be root. You can also use
:file:`/opt/rtems/build` if you have access to that path.
The location used to install the tools and kernel is called the `prefix`. It is
best to have a `prefix` for each different version of RTEMS you are using. If
you are using RTEMS 4.11 in production it is not a good idea to install a
development version of 4.12 over the top. A separate `prefix` for each version
avoids this.
The RTEMS tool chain changes less often than the RTEMS kernel. One method of
working with development releases is to have a separate `prefix` for the RTEMS
tools and a different one for the RTEMS kernel. You can then update each
without interacting with the other. You can also have a number of RTEMS
versions available to test with.
This procedure will build a SPARC tool chain.
RTEMS Tools Chain
-----------------
Clone the RTEMS Source Builder (RSB) repository:
.. code-block:: shell
$ cd
$ mkdir -p development/rtems
$ cd development/rtems
$ git clone git://git.rtems.org/rtems-source-builder.git rsb
Cloning into 'rsb'...
remote: Counting objects: 5837, done.
remote: Compressing objects: 100% (2304/2304), done.
remote: Total 5837 (delta 4014), reused 5056 (delta 3494)
Receiving objects: 100% (5837/5837), 2.48 MiB | 292.00 KiB/s, done.
Resolving deltas: 100% (4014/4014), done.
Checking connectivity... done.
.. sidebar:: *Downloading the source*
You need an internet connection to download the source. The downloaded source
is cached locally and the RSB checksums it. If you run a build again the
download output will be missing. Using the RSB from git will download the
source from the upstream project's home site and this could be `http`, `ftp`,
or `git`.
Check all the host packages you need are present. Current libraries are not
checked and this includes checking for the python development libraries GDB
requires:
.. code-block:: shell
$ cd rsb
$ ./source-builder/sb-check
RTEMS Source Builder - Check, 4.12 (e645642255cc)
Environment is ok
Build a tool chain for the SPARC architecure. We are using the SPARC
architecture because GDB has a good simulator that lets us run and test the
samples RTEMS builds by default. The current development version
is `4.12` and is on master:
.. code-block:: shell
$ cd rtems
$ ../source-builder/sb-set-builder \
--prefix=/usr/home/chris/development/rtems/4.12 4.12/rtems-sparc
RTEMS Source Builder - Set Builder, 4.12 (e645642255cc)
Build Set: 4.12/rtems-sparc
Build Set: 4.12/rtems-autotools.bset
Build Set: 4.12/rtems-autotools-internal.bset
config: tools/rtems-autoconf-2.69-1.cfg
package: autoconf-2.69-x86_64-linux-gnu-1
Creating source directory: sources
download: ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -> sources/autoconf-2.69.tar.gz
downloading: sources/autoconf-2.69.tar.gz - 1.8MB of 1.8MB (100%)
building: autoconf-2.69-x86_64-linux-gnu-1
config: tools/rtems-automake-1.12.6-1.cfg
package: automake-1.12.6-x86_64-linux-gnu-1
download: ftp://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.gz -> sources/automake-1.12.6.tar.gz
downloading: sources/automake-1.12.6.tar.gz - 2.0MB of 2.0MB (100%)
Creating source directory: patches
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/automake/automake-1.12.6-bugzilla.redhat.com-1239379.diff -> patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff
downloading: patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff - 408.0 bytes of 408.0 bytes (100%)
building: automake-1.12.6-x86_64-linux-gnu-1
cleaning: autoconf-2.69-x86_64-linux-gnu-1
cleaning: automake-1.12.6-x86_64-linux-gnu-1
Build Set: Time 0:00:17.465024
Build Set: 4.12/rtems-autotools-base.bset
config: tools/rtems-autoconf-2.69-1.cfg
package: autoconf-2.69-x86_64-linux-gnu-1
building: autoconf-2.69-x86_64-linux-gnu-1
reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.txt
reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.xml
config: tools/rtems-automake-1.12.6-1.cfg
package: automake-1.12.6-x86_64-linux-gnu-1
building: automake-1.12.6-x86_64-linux-gnu-1
reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.txt
reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.xml
installing: autoconf-2.69-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: automake-1.12.6-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
cleaning: autoconf-2.69-x86_64-linux-gnu-1
cleaning: automake-1.12.6-x86_64-linux-gnu-1
Build Set: Time 0:00:05.358624
Build Set: Time 0:00:22.824422
config: devel/expat-2.1.0-1.cfg
package: expat-2.1.0-x86_64-linux-gnu-1
download: http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz -> sources/expat-2.1.0.tar.gz
redirect: http://internode.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
downloading: sources/expat-2.1.0.tar.gz - 549.4kB of 549.4kB (100%)
building: expat-2.1.0-x86_64-linux-gnu-1
reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.txt
reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.xml
config: tools/rtems-binutils-2.26-1.cfg
package: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2 -> sources/binutils-2.26.tar.bz2
downloading: sources/binutils-2.26.tar.bz2 - 24.4MB of 24.4MB (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/binutils/binutils-2.26-rtems-aarch64-x86_64.patch -> patches/binutils-2.26-rtems-aarch64-x86_64.patch
downloading: patches/binutils-2.26-rtems-aarch64-x86_64.patch - 3.2kB of 3.2kB (100%)
building: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.txt
reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.xml
config: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg
package: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
download: ftp://gcc.gnu.org/pub/gcc/snapshots/6-20160228/gcc-6-20160228.tar.bz2 -> sources/gcc-6-20160228.tar.bz2
downloading: sources/gcc-6-20160228.tar.bz2 - 90.8MB of 90.8MB (100%)
download: ftp://sourceware.org/pub/newlib/newlib-2.3.0.20160226.tar.gz -> sources/newlib-2.3.0.20160226.tar.gz
downloading: sources/newlib-2.3.0.20160226.tar.gz - 16.9MB of 16.9MB (100%)
download: http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2 ->
sources/mpfr-2.4.2.tar.bz2
downloading: sources/mpfr-2.4.2.tar.bz2 - 1.0MB of 1.0MB (100%)
download: http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz -> sources/mpc-0.8.1.tar.gz
downloading: sources/mpc-0.8.1.tar.gz - 532.2kB of 532.2kB (100%)
download: ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2 -> sources/gmp-4.3.2.tar.bz2
downloading: sources/gmp-4.3.2.tar.bz2 - 1.8MB of 1.8MB (100%)
building: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.xml
config: tools/rtems-gdb-7.9-1.cfg
package: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
download: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.xz -> sources/gdb-7.9.tar.xz
downloading: sources/gdb-7.9.tar.xz - 17.0MB of 17.0MB (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-arange-inline.diff -> patches/gdb-sim-arange-inline.diff
downloading: patches/gdb-sim-arange-inline.diff - 761.0 bytes of 761.0 bytes (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-cgen-inline.diff -> patches/gdb-sim-cgen-inline.diff
downloading: patches/gdb-sim-cgen-inline.diff - 706.0 bytes of 706.0 bytes (100%)
download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-7.9-aarch64-x86_64.patch -> patches/gdb-7.9-aarch64-x86_64.patch
downloading: patches/gdb-7.9-aarch64-x86_64.patch - 1.7kB of 1.7kB (100%)
building: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.xml
config: tools/rtems-tools-4.12-1.cfg
package: rtems-tools-HEAD-1
Creating source directory: sources/git
git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: reset: git://git.rtems.org/rtems-tools.git
git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: checkout: git://git.rtems.org/rtems-tools.git => HEAD
git: pull: git://git.rtems.org/rtems-tools.git
building: rtems-tools-HEAD-1
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.txt
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.xml
installing: expat-2.1.0-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
installing: rtems-tools-HEAD-1 -> /usr/home/chris/development/rtems/4.12
cleaning: expat-2.1.0-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
cleaning: rtems-tools-HEAD-1
Build Set: Time 0:31:09.754219
RTEMS Kernel
------------
We need to set our path to include the RTEMS tools we built in the previous
section. The RTEMS tools needs to be first in your path because RTEMS provides
specific versions of the ``autoconf`` and ``automake`` tools. We want to use
the RTEMS version and not your host's versions:
.. code-block:: shell
$ export PATH=$HOME/development/rtems/4.12/bin:$PATH
Create a new location to build the RTEMS kernel:
.. code-block:: shell
$ cd
$ cd development/rtems
$ mkdir kernel
$ cd kernel
Clone the RTEMS respository:
.. code-block:: shell
$ git clone git://git.rtems.org/rtems.git rtems
Cloning into 'rtems'...
remote: Counting objects: 483342, done.
remote: Compressing objects: 100% (88974/88974), done.
remote: Total 483342 (delta 390053), reused 475669 (delta 383809)
Receiving objects: 100% (483342/483342), 69.88 MiB | 1.37 MiB/s, done.
Resolving deltas: 100% (390053/390053), done.
Checking connectivity... done.
The developers version of the code from git requires we ``bootstrap`` the
source code. This is an ``autoconf`` and ``automake`` bootstrap to create the
various files generated by ``autoconf`` and ``automake``. RTEMS does not keep
these generated files under version control. The bootstrap process is slow so
to speed it up the RSB provides a command that can perform the bootstrap in
parallel using your available cores. We need to enter the cloned source
directory then run the bootsrap commands:
.. code-block:: shell
$ cd rtems
$ ./bootstrap -c && ./bootstrap -p && \
$HOME/development/rtems/rsb/source-builder/sb-bootstrap
removing automake generated Makefile.in files
removing configure files
removing aclocal.m4 files
Generating ./cpukit/dtc/libfdt/preinstall.am
Generating ./cpukit/zlib/preinstall.am
Generating ./cpukit/libdl/preinstall.am
Generating ./cpukit/posix/preinstall.am
Generating ./cpukit/pppd/preinstall.am
Generating ./cpukit/librpc/preinstall.am
Generating ./cpukit/preinstall.am
Generating ./cpukit/sapi/preinstall.am
Generating ./cpukit/score/preinstall.am
Generating ./cpukit/score/cpu/mips/preinstall.am
Generating ./cpukit/score/cpu/sh/preinstall.am
Generating ./cpukit/score/cpu/sparc/preinstall.am
Generating ./cpukit/score/cpu/no_cpu/preinstall.am
Generating ./cpukit/score/cpu/arm/preinstall.am
Generating ./cpukit/score/cpu/m32c/preinstall.am
Generating ./cpukit/score/cpu/moxie/preinstall.am
Generating ./cpukit/score/cpu/v850/preinstall.am
Generating ./cpukit/score/cpu/sparc64/preinstall.am
Generating ./cpukit/score/cpu/or1k/preinstall.am
Generating ./cpukit/score/cpu/i386/preinstall.am
Generating ./cpukit/score/cpu/nios2/preinstall.am
Generating ./cpukit/score/cpu/epiphany/preinstall.am
Generating ./cpukit/score/cpu/m68k/preinstall.am
Generating ./cpukit/score/cpu/lm32/preinstall.am
Generating ./cpukit/score/cpu/powerpc/preinstall.am
Generating ./cpukit/score/cpu/bfin/preinstall.am
Generating ./cpukit/libpci/preinstall.am
Generating ./cpukit/libcrypt/preinstall.am
Generating ./cpukit/rtems/preinstall.am
Generating ./cpukit/telnetd/preinstall.am
Generating ./cpukit/libnetworking/preinstall.a
......
Generating ./c/src/lib/libbsp/powerpc/gen5200/preinstall.am
Generating ./c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am
Generating ./c/src/lib/libbsp/bfin/TLL6527M/preinstall.am
Generating ./c/src/lib/libbsp/bfin/bf537Stamp/preinstall.am
Generating ./c/src/lib/libbsp/bfin/eZKit533/preinstall.am
Generating ./c/src/librtems++/preinstall.am
Generating ./c/src/libchip/preinstall.am
Generating ./c/src/wrapup/preinstall.am
Generating ./c/src/ada/preinstall.am
RTEMS Source Builder - RTEMS Bootstrap, 4.12 (e645642255cc modified)
1/139: autoreconf: configure.ac
2/139: autoreconf: cpukit/configure.ac
3/139: autoreconf: tools/cpu/configure.ac
4/139: autoreconf: tools/cpu/generic/configure.ac
5/139: autoreconf: tools/cpu/sh/configure.ac
6/139: autoreconf: tools/cpu/nios2/configure.ac
7/139: autoreconf: tools/build/configure.ac
8/139: autoreconf: doc/configure.ac
......
124/139: autoreconf: c/src/make/configure.ac
125/139: autoreconf: c/src/librtems++/configure.ac
126/139: autoreconf: c/src/ada-tests/configure.ac
127/139: autoreconf: testsuites/configure.ac
128/139: autoreconf: testsuites/libtests/configure.ac
129/139: autoreconf: testsuites/mptests/configure.ac
130/139: autoreconf: testsuites/fstests/configure.ac
131/139: autoreconf: testsuites/sptests/configure.ac
132/139: autoreconf: testsuites/tmtests/configure.ac
133/139: autoreconf: testsuites/smptests/configure.ac
134/139: autoreconf: testsuites/tools/configure.ac
135/139: autoreconf: testsuites/tools/generic/configure.ac
136/139: autoreconf: testsuites/psxtests/configure.ac
137/139: autoreconf: testsuites/psxtmtests/configure.ac
138/139: autoreconf: testsuites/rhealstone/configure.ac
139/139: autoreconf: testsuites/samples/configure.ac
Bootstrap time: 0:02:47.398824
We build RTEMS in a directory outside of the source tree we have just cloned
and ``bootstrapped``. You cannot build RTEMS while in the source tree. Lets
create a suitable directory using the name of the BSP we are going to build:
.. code-block:: shell
$ cd ..
$ mkdir erc32
$ cd erc32
Configure RTEMS using the ``configure`` command. We use a full path to
``configure`` so the object files built contain the absolute path of the source
files. If you are source level debugging you will be able to access the source
code to RTEMS from the debugger. We will build for the ``erc32`` BSP with POSIX
enabled and the networking stack disabled:
.. code-block:: shell
$ $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/4.12 \
--target=sparc-rtems4.12 --enable-rtemsbsp=erc32 --enable-posix \
--disable-networking
checking for gmake... no
checking for make... make
checking for RTEMS Version... 4.11.99.0
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... sparc-unknown-rtems4.12
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking that generated files are newer than configure... done
......
checking target system type... sparc-unknown-rtems4.12
checking rtems target cpu... sparc
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for sparc-rtems4.12-strip... sparc-rtems4.12-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
target architecture: sparc.
available BSPs: erc32.
'make all' will build the following BSPs: erc32.
other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."'
config.status: creating Makefile
Build RTEMS using two cores:
.. code-block:: shell
$ make -j 2
Making all in tools/build
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
make all-am
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT cklength.o -MD -MP -MF .deps/cklength.Tpo -c -o cklength.o /home/chris/development/rtems/kernel/rtems/tools/build/cklength.c
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT eolstrip.o -MD -MP -MF .deps/eolstrip.Tpo -c -o eolstrip.o /home/chris/development/rtems/kernel/rtems/tools/build/eolstrip.c
mv -f .deps/cklength.Tpo .deps/cklength.Po
mv -f .deps/eolstrip.Tpo .deps/eolstrip.Po
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT compat.o -MD -MP -MF .deps/compat.Tpo -c -o compat.o /home/chris/development/rtems/kernel/rtems/tools/build/compat.c
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT packhex.o -MD -MP -MF .deps/packhex.Tpo -c -o packhex.o /home/chris/development/rtems/kernel/rtems/tools/build/packhex.c
mv -f .deps/compat.Tpo .deps/compat.Po
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT unhex.o -MD -MP -MF .deps/unhex.Tpo -c -o unhex.o /home/chris/development/rtems/kernel/rtems/tools/build/unhex.c
mv -f .deps/packhex.Tpo .deps/packhex.Po
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT rtems-bin2c.o -MD -MP -MF .deps/rtems-bin2c.Tpo -c -o rtems-bin2c.o /home/chris/development/rtems/kernel/rtems/tools/build/rtems-bin2c.c
mv -f .deps/unhex.Tpo .deps/unhex.Po
gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build -g -O2 -MT binpatch.o -MD -MP -MF .deps/binpatch.Tpo -c -o binpatch.o /home/chris/development/rtems/kernel/rtems/tools/build/binpatch.c
mv -f .deps/rtems-bin2c.Tpo .deps/rtems-bin2c.Po
gcc -g -O2 -o cklength cklength.o
mv -f .deps/binpatch.Tpo .deps/binpatch.Po
gcc -g -O2 -o eolstrip eolstrip.o compat.o
gcc -g -O2 -o packhex packhex.o
gcc -g -O2 -o rtems-bin2c rtems-bin2c.o compat.o
gcc -g -O2 -o unhex unhex.o compat.o
gcc -g -O2 -o binpatch binpatch.o
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
Making all in tools/cpu
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
Making all in generic
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
Making all in testsuites/tools
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
Making all in generic
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools/generic'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools/generic'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
make[2]: Nothing to be done for 'all-am'.
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
Making all in sparc-rtems4.12/c
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
Making all in .
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
Configuring RTEMS_BSP=erc32
checking for gmake... no
checking for make... make
checking build system type... x86_64-pc-linux-gnu
checking host system type... sparc-unknown-rtems4.12
......
sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs -I.. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/../support/include -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT init.o -MD -MP -MF .deps/init.Tpo -c -o init.o /home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs/init.c
sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs -I.. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/../support/include -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT empty.o -MD -MP -MF .deps/empty.Tpo -c -o empty.o /home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs/empty.c
mv -f .deps/empty.Tpo .deps/empty.Po
mv -f .deps/init.Tpo .deps/init.Po
sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -Wl,--gc-sections -mcpu=cypress -o nsecs.exe init.o empty.o
sparc-rtems4.12-nm -g -n nsecs.exe > nsecs.num
sparc-rtems4.12-size nsecs.exe
text data bss dec hex filename
121392 1888 6624 129904 1fb70 nsecs.exe
cp nsecs.exe nsecs.ralf
make[6]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites/samples/nsecs'
make[5]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites/samples'
make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites/samples'
make[4]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites'
make[4]: Nothing to be done for 'all-am'.
make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites'
make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32/testsuites'
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/ c/erc32'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
All that remains to be done is to install the kernel. Installing RTEMS copies
the API headers and architecture specific libraries to a locaiton under the
`prefix` you provide. You can install any number of BSPs under the same
`prefix`. We recommend you have a separate `prefix` for different versions of
RTEMS. Do not mix versions of RTEMS under the same `prefix`. Make installs
RTEMS with the following command:
.. code-block:: shell
$ make install
Making install in tools/build
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
/bin/mkdir -p '/home/chris/development/rtems/4.12/bin'
/usr/bin/install -c cklength eolstrip packhex unhex rtems-bin2c '/home/chris/development/rtems/4.12/bin'
/bin/mkdir -p '/home/chris/development/rtems/4.12/bin'
/usr/bin/install -c install-if-change '/home/chris/development/rtems/4.12/bin'
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
Making install in tools/cpu
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
Making install in generic
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[3]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[3]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu
......
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/home/chris/development/rtems/4.12/make'
/usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/main.cfg /home/chris/development/rtems/kernel/rtems/make/leaf.cfg '/home/chris/development/rtems/4.12/make'
/bin/mkdir -p '/home/chris/development/rtems/4.12/share/rtems4.12/make/Templates'
/usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.dir /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.leaf /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.lib '/home/chris/development/rtems/4.12/share/rtems4.12/make/Templates'
/bin/mkdir -p '/home/chris/development/rtems/4.12/make/custom'
/usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/custom/default.cfg '/home/chris/development/rtems/4.12/make/custom'
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
Contributing Patches
--------------------
RTEMS welcomes fixes to bugs and new features. The RTEMS Project likes to have
bugs fixed against a ticket created on our :r:url:`devel`. Please raise a
ticket if you have a bug. Any changes that are made can be tracked against the
ticket. If you want to add a new a feature please post a message to
:r:list:`devel` describing what you would like to implement. The RTEMS
maintainer will help decide if the feature is in the best interest of the
project. Not everything is and the maintainers need to evalulate how much
effort it is to maintain the feature. Once accepted into the source tree it
becomes the responsibility of the maintainers to keep the feature updated and
working.
Changes to the source tree are tracked using git. If you have not made changes
and enter the source tree and enter a git status command you will see nothing
has changed:
.. code-block:: shell
$ cd ../rtems
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
We will make a change to the source code. In this example I change the help
message to the RTEMS shell's ``halt`` command. Running the same git status
command reports:
.. code-block:: shell
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: cpukit/libmisc/shell/main_halt.c
no changes added to commit (use "git add" and/or "git commit -a")
As an example I have a ticket open and the ticket number is 9876. I commit the
change with the follow git command:
.. code-block:: shell
$ git commit cpukit/libmisc/shell/main_halt.c
An editor is opened and I enter my commit message. The first line is a title
and the following lines form a body. My message is:
.. code-block:: shell
shell: Add more help detail to the halt command.
Closes #9876.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Explicit paths specified without -i or -o; assuming --only paths...
#
# Committer: Chris Johns <chrisj@rtems.org>
#
# On branch master
# Your branch is up-to-date with 'origin/master'.
#
# Changes to be committed:
# modified: cpukit/libmisc/shell/main_halt.c
When you save and exit the editor git will report the commit's status:
.. code-block:: shell
$ git commit cpukit/libmisc/shell/main_halt.c
[master 9f44dc9] shell: Add more help detail to the halt command.
1 file changed, 1 insertion(+), 1 deletion(-)
You can either email the patch to :r:list:`devel` with the following git
command, and it is `minus one` on the command line:
.. code-block:: shell
$ git send-email --to=devel@rtems.org -1
<add output here>
Or you can ask git to create a patch file using:
.. code-block:: shell
$ git format-patch -1
0001-shell-Add-more-help-detail-to-the-halt-command.patch
This patch can be attached to a ticket.

View File

@ -3,17 +3,73 @@
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
===============
Getting Started
===============
Quick Start
============
RTEMS is an open source real-time operating system. As a user you have access
to all the source code. This ``Getting Started`` section will show you how you
build the RTEMS compiler tools, kernel and 3rd party libraries from source.
The following is a quick start guide that provides a basic set of commands to
build the RTEMS Tools and Kernel. The quick start guide provides links to the
detailed sections if any problems are encoutnered.
.. include:: basics.rst
.. include:: depend.rst
.. include:: installation.rst
.. include:: releases.rst
.. include:: development.rst
.. include:: windows.rst
The detailed procedure for installing RTEMS can be found in
:ref:`installation`.
The development host computer needs to be set up for this quick start procedure
to complete successfully. :ref:`host-computer` details what is needed for the
supported host operating systems. If Windows is being used it is recommended
following the procedure in :ref:`microsoft-windows` first.
Their are many ways and locations a suitable environment can be set up. A
common factor that defines the final location of tools and projects is the
place you have suitable storage. :ref:`prefixes` and :ref:`project-sandboxing`
provide detailed examples of possible locations and set ups .
This procedure installs a developer set up using the RTEMS Git repositories on
a Unix (POSIX) or MacOS host. The output from the commands has been removed and
replaced with ``...``.
Create a workspace, download the RTEMS Source Builder (RSB) and build a tool
chain (:ref:`posix-host-tools-chain`):
.. code-block:: shell
$ cd
$ mkdir -p development/rtems
$ cd development/rtems
$ git clone git://git.rtems.org/rtems-source-builder.git rsb
...
$ cd rsb
$ ./source-builder/sb-check
...
$ cd rtems
$ ../source-builder/sb-set-builder \
--prefix=/usr/home/chris/development/rtems/4.12 4.12/rtems-sparc
...
Build the RTEMS Kernel (:ref:`rtems-kernel-install`) by cloning the repository,
running the ``bootstrap`` procecure, building and finally installing the
kernel:
.. code-block:: shell
$ export PATH=$HOME/development/rtems/4.12/bin:$PATH
$ cd
$ cd development/rtems
$ mkdir kernel
$ cd kernel
$ git clone git://git.rtems.org/rtems.git rtems
...
$ cd rtems
$ ./bootstrap -c && ./bootstrap -p && \
$HOME/development/rtems/rsb/source-builder/sb-bootstrap
...
$ cd ..
$ mkdir erc32
$ cd erc32
$ $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/4.12 \
--target=sparc-rtems4.12 --enable-rtemsbsp=erc32 --enable-posix
...
$ make -j 8
...
$ make install
You can now build a 3rd party library or an application.

68
user/start/quick.rst Normal file
View File

@ -0,0 +1,68 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
Quick Start Guide
=================
.. index:: Quick Start
The following is a quick start guide that provides you with the basic commands
you need to build the RTEMS Tools and Kernel.
You need to have your development host set up and ready, the
:ref:`development-host` covers what you need.
This procedure does a development (unstable) build from Git for a POSIX
host. You can refer to the specific section that cover the specific part of the
process in detail if you have an issue. The output from the commands has been
removed and replaced with ``...``.
Create a workspace, download the RTEMS Source Builder (RSB) and build a tool
chain (See :ref:`rtems-tools-chain`):
.. code-block:: shell
$ cd
$ mkdir -p development/rtems
$ cd development/rtems
$ git clone git://git.rtems.org/rtems-source-builder.git rsb
...
$ cd rsb
$ ./source-builder/sb-check
...
$ cd rtems
$ ../source-builder/sb-set-builder \
--prefix=/usr/home/chris/development/rtems/4.12 4.12/rtems-sparc
...
Build the RTEMS Kernel (See :ref:`rtems-kernel`) by cloning the repository,
running the ``bootstrap`` procecure, building and finally installing the
kernel:
.. code-block:: shell
$ export PATH=$HOME/development/rtems/4.12/bin:$PATH
$ cd
$ cd development/rtems
$ mkdir kernel
$ cd kernel
$ git clone git://git.rtems.org/rtems.git rtems
...
$ cd rtems
$ ./bootstrap -c && ./bootstrap -p && \
$HOME/development/rtems/rsb/source-builder/sb-bootstrap
...
$ cd ..
$ mkdir erc32
$ cd erc32
$ $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/4.12 \
--target=sparc-rtems4.12 --enable-rtemsbsp=erc32 --enable-posix \
--disable-networking
...
$ make -j 8
...
$ make install
You can now build a 3rd party library like LibBSD or an application.

View File

@ -1,8 +1,5 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
.. _support:
Support
=======
@ -12,9 +9,8 @@ This chapter covers all options available to both users and developers. If you
believe this is a bug report please submit it to the bug tracker otherwise the
developers mailing list is the default location to send the report.
Bug Tracker
===========
-----------
The bug tracker can be found at the :r:url:`bugs`.
@ -28,7 +24,7 @@ If you are unsure about your issue status submit a ticket and we will help you
sort it out.
Documentation
=============
-------------
The latest user documentation can always be found at the :r:url:`docs`.
@ -36,7 +32,7 @@ The latest user documentation can always be found at the :r:url:`docs`.
.. _support-mailing-lists:
Mailing Lists
=============
-------------
We have several mailing lists for RTEMS users and developers.
@ -61,7 +57,7 @@ We have several mailing lists for RTEMS users and developers.
IRC
===
---
RTEMS IRC is available on the Freenode network. See the `Freenode
<http://www.freenode.net/>`_ web site for details on connecting, selecting a
@ -84,10 +80,26 @@ http://www.rtems.org/irclogs/. You can search the logs using Google by adding:
to your search terms.
Developers
==========
----------
Developers can find help and support on the mailing lists, see
:ref:`support-mailing-lists`.
Technical documents including design, :r:url:`gsoc`, :r:url:`socis` can be
found on the :r:url:`devel`.
Support Services
----------------
The wider RTEMS community has developers and orgainizations who can provide
commercial support services. These services range from training, implementing
new features in RTEMS, helping establish a new project environment for a team,
to application and system design. The RTEMS Project does not endorse or promote
any provider of these services and we recommend you use a search engine to
locate a suitable provider. If you are unsrue please contact a provider and see
what is available.
If you develop a new feature or you have someone do this for you we recommend
you have the work submitted to the project and merged. Once accepted into the
project the work will be maintained as part of the development process within
the project and this is a benefit for.

View File

@ -1,12 +1,12 @@
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
=====
Tools
=====
.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
.. comment: All rights reserved.
XXX: All about rtems config
.. include:: build.rst
.. include:: simulation.rst
===========
RTEMS Tools
===========
The RTEMS kernel is cross-compiled on host computers and linked to 3rd party
packages and application code and run on target hardware. This section details
how to build asuitable cross-compiler and how to use the tools.