summaryrefslogtreecommitdiffstats
path: root/user/start/tools.rst
diff options
context:
space:
mode:
Diffstat (limited to 'user/start/tools.rst')
-rw-r--r--user/start/tools.rst80
1 files changed, 58 insertions, 22 deletions
diff --git a/user/start/tools.rst b/user/start/tools.rst
index c3f039b..3656867 100644
--- a/user/start/tools.rst
+++ b/user/start/tools.rst
@@ -1,8 +1,9 @@
.. SPDX-License-Identifier: CC-BY-SA-4.0
-.. Copyright (C) 2019 embedded brains GmbH
+.. Copyright (C) 2019 embedded brains GmbH & Co. KG
.. Copyright (C) 2019 Sebastian Huber
.. Copyright (C) 2020 Chris Johns
+.. Copyright (C) 2020 Utkarsh Rai
.. _QuickStartTools:
@@ -11,12 +12,12 @@ Install the Tool Suite
You have chosen an installation prefix, the BSP to build, the tool's
architecure and prepared the source for the RSB in the previous sections. We
-have chosen :file:`$HOME/quick-start/rtems/5` as the installation prefix, the
-``erc32`` BSP and the SPARC architecture name of ``sparc-rtems5``, and unpacked
+have chosen :file:`$HOME/quick-start/rtems/6` as the installation prefix, the
+``erc32`` BSP and the SPARC architecture name of ``sparc-rtems6``, and unpacked
the RSB source in :file:`$HOME/quick-start/src`.
The tool suite for RTEMS and the RTEMS sources are tightly coupled. For
-example, do not use a RTEMS version 5 tool suite with RTEMS version 4.11
+example, do not use a RTEMS version 6 tool suite with RTEMS version 4.11 or 5
sources and vice versa.
Build and install the tool suite:
@@ -24,7 +25,7 @@ Build and install the tool suite:
.. code-block:: none
cd $HOME/quick-start/src/rsb/rtems
- ../source-builder/sb-set-builder --prefix=$HOME/quick-start/rtems/5 5/rtems-sparc
+ ../source-builder/sb-set-builder --prefix=$HOME/quick-start/rtems/6 6/rtems-sparc
This command should output something like this (omitted lines are denoted by
...). The build host appears as part of the name of the package being
@@ -32,29 +33,32 @@ built. The name you see may vary depending on the host you are using:
.. code-block:: none
- RTEMS Source Builder - Set Builder, 5.1.0
- Build Set: 5/rtems-sparc
+ RTEMS Source Builder - Set Builder, 6 (5e449fb5c2cb)
+ Build Set: 6/rtems-sparc
...
- config: tools/rtems-binutils-2.34.cfg
- package: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1
- building: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1
- sizes: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1: 305.866MB (installed: 29.966MB)
- cleaning: sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1
- reporting: tools/rtems-binutils-2.34.cfg -> sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1.txt
- reporting: tools/rtems-binutils-2.34.cfg -> sparc-rtems5-binutils-2.34-x86_64-freebsd12.1-1.xml
- config: tools/rtems-gcc-7.5.0-newlib-fbaa096.cfg
- package: sparc-rtems5-gcc-7.5.0-newlib-fbaa096-x86_64-freebsd12.1-1
- building: sparc-rtems5-gcc-7.5.0-newlib-fbaa096-x86_64-freebsd12.1-1
+ config: tools/rtems-binutils-2.36.cfg
+ package: sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1
+ building: sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1
+ sizes: sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1: 716.015MB (installed: 163.538MB)
+ cleaning: sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1
+ reporting: tools/rtems-binutils-2.36.cfg -> sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1.txt
+ reporting: tools/rtems-binutils-2.36.cfg -> sparc-rtems6-binutils-fbb9a7e-x86_64-linux-gnu-1.xml
+ config: tools/rtems-gcc-10-newlib-head.cfg
+ package: sparc-rtems6-gcc-6051af8-newlib-d10d0d9-x86_64-linux-gnu-1
+ building: sparc-rtems6-gcc-6051af8-newlib-d10d0d9-x86_64-linux-gnu-1
....
- Build Sizes: usage: 5.684GB total: 1.112GB (sources: 143.803MB, patches: 21.348KB, installed 995.188MB)
- Build Set: Time 0:21:35.626294
+ Build Sizes: usage: 9.607GB total: 2.244GB (sources: 264.186MB, patches: 43.468KB, installed 1.986GB)
+ installing: 6/rtems-sparc -> $HOME/quick-start/rtems/6
+ clean staging: 6/rtems-sparc
+ Staging Size: 5.292MB
+ Build Set: Time 1:01:48.019157
Once the build has successfully completed you can check if the cross C compiler
works with the following command:
.. code-block:: none
- $HOME/quick-start/rtems/5/bin/sparc-rtems5-gcc --version
+ $HOME/quick-start/rtems/6/bin/sparc-rtems6-gcc --version
This command should output something like below. The version informtion helps
you to identify the exact sources used to build the cross compiler of your
@@ -68,11 +72,43 @@ source code used.
.. code-block:: none
- sparc-rtems5-gcc (GCC) 7.5.0 20191114 (RTEMS 5, RSB 5.1.0, Newlib fbaa096)
- Copyright (C) 2017 Free Software Foundation, Inc.
+ sparc-rtems6-gcc (GCC) 10.2.1 20210309 (RTEMS 6, RSB 5e449fb5c2cb6812a238f9f9764fd339cbbf05c2, Newlib d10d0d9)
+ Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Add ``--verbose`` to the GCC command for the the verbose version details.
+
+Need for RTEMS-Specific Cross-Compiler
+---------------------------------------------------------
+
+New users are often confused as to why they cannot use their distribution's
+cross-compiler for their target on RTEMS, e.g., the riscv64-linux-gnu or the
+arm-none-eabi-gcc. Below mentioned are some of the reasons for using
+the RTEMS cross-compiler.
+
+ Correct configuration of Newlib
+ Newlib is a C standard library implementation intended for use on embedded
+ systems. Most of the POSIX and libc support for RTEMS is derived from
+ Newlib. The RTEMS cross-compiler configures Newlib correctly for RTEMS.
+
+ Threading in GCC support libraries
+ Several threading packages in GCC such as Go threads (libgo), OpenMP
+ (libgomp), and OpenACC need to be customized according to RTEMS. This is
+ done by the RTEMS specific cross-compiler.
+
+ Provide preprocessor define __rtems__
+ The ``__rtems__`` preprocessor define is used to provide conditional code
+ compilation in source files that are shared with other projects e.g. in
+ Newlib or imported code from FreeBSD.
+
+ Multilib variants to match the BSP
+ RTEMS configures GCC to create separate runtime libraries for each
+ supported instruction set, floating point unit, vector unit, word size
+ (e.g. 32-bit and 64-bit), endianness, ABI, processor errata workarounds,
+ and so on in the architecture. These libraries are termed as :ref:`Multilib
+ <TargetArchitectures>` variants. Multilib variants to match the BSP are set
+ by selecting a specific set of machine options using the RTEMS
+ cross-compiler.