From fa12cab2b9a39a63e0f481a2296f9e5631a8f21d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 23 Jan 2019 14:26:47 +0100 Subject: user: Add "Build a Board Support Package (BSP)" --- user/start/bsp-build.rst | 146 +++++++++++++++++++++++++++++++++++++++++++++++ user/start/index.rst | 1 + 2 files changed, 147 insertions(+) create mode 100644 user/start/bsp-build.rst (limited to 'user') diff --git a/user/start/bsp-build.rst b/user/start/bsp-build.rst new file mode 100644 index 0000000..3b9eb15 --- /dev/null +++ b/user/start/bsp-build.rst @@ -0,0 +1,146 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +.. Copyright (C) 2019 embedded brains GmbH +.. Copyright (C) 2019 Sebastian Huber + +.. _QuickStartBSPBuild: + +Build a Board Support Package (BSP) +=================================== + +You installed the tool suite in your installation prefix, cloned two RTEMS +repositories and bootstrapped the RTEMS sources in the previous sections. We +installed the tool suite in :file:`$HOME/quick-start/rtems/5` and cloned the +repositories in :file:`$HOME/quick-start/src`. We also bootstrapped the RTEMS +sources. + +You are now able to build :ref:`Board Support Packages (BSPs) ` for all +architectures where you have an RTEMS tool suite installed. To build +applications on top of RTEMS, you have to configure, build and install a BSP +for your target hardware. To select a proper BSP for your target hardware +consult the :ref:`BSPs ` chapter. We select the `erc32` BSP. + +We configure, build and install the BSP in four steps. The first step is to +create a build directory. It must be separate from the RTEMS source directory. +We use :file:`$HOME/quick-start/build/b-erc32`. + +.. code-block:: none + + mkdir -p $HOME/quick-start/build/b-erc32 + +The second step is to configure the BSP. There are various configuration +options available. Some configuration options are BSP-specific. Prepend the +RTEMS tool suite binary directory to your ``$PATH`` throughout the remaining +steps. + +.. code-block:: none + + cd $HOME/quick-start/build/b-erc32 + export PATH=$HOME/quick-start/rtems/5/bin:"$PATH" + $HOME/quick-start/src/rtems/configure \ + --prefix=$HOME/quick-start/rtems/5 \ + --enable-maintainer-mode \ + --target=sparc-rtems5 \ + --enable-rtemsbsp=erc32 \ + --enable-tests + +This command should output something like this (omitted lines are denoted by +...): + +.. code-block:: none + + checking for gmake... gmake + checking for RTEMS Version... 5.0.0 + checking build system type... x86_64-unknown-freebsd12.0 + checking host system type... x86_64-unknown-freebsd12.0 + checking target system type... sparc-unknown-rtems5 + ... + config.status: creating Makefile + + target architecture: sparc. + available BSPs: erc32. + 'gmake all' will build the following BSPs: erc32. + other BSPs can be built with 'gmake RTEMS_BSP="bsp1 bsp2 ..."' + + config.status: creating Makefile + +Building the BSP is the third step. + +.. code-block:: none + + cd $HOME/quick-start/build/b-erc32 + make + +This command should output something like this (omitted lines are denoted by +...). In this output the base directory :file:`$HOME/quick-start` was replaced +by ``$BASE``. + +.. code-block:: none + + Configuring RTEMS_BSP=erc32 + checking for gmake... gmake + checking build system type... x86_64-unknown-freebsd12.0 + checking host system type... sparc-unknown-rtems5 + 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-rtems5-strip... sparc-rtems5-strip + checking for a thread-safe mkdir -p... $BASE/src/rtems/c/src/../../install-sh -c -d + checking for gawk... no + checking for mawk... no + checking for nawk... nawk + checking whether gmake sets $(MAKE)... yes + checking whether to enable maintainer-specific portions of Makefiles... yes + checking for RTEMS_BSP... erc32 + checking whether CPU supports libposix... yes + configure: setting up make/custom + configure: creating make/erc32.cache + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32' + ... + sparc-rtems5-gcc -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -B./../../lib/libbsp/sparc/erc32 -B$BASE/src/rtems/bsps/sparc/erc32/start -specs bsp_specs -qrtems -L./../../cpukit -L$BASE/src/rtems/bsps/sparc/shared/start -Wl,--wrap=printf -Wl,--wrap=puts -Wl,--wrap=putchar -Wl,--gc-sections -o spwkspace.exe spwkspace/spwkspace-init.o ./../../lib/libbsp/sparc/erc32/librtemsbsp.a ./../../cpukit/librtemscpu.a + gmake[5]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/testsuites/sptests' + gmake[4]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/testsuites' + gmake[3]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32' + gmake[2]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32' + gmake[1]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c' + gmake[1]: Entering directory '$BASE/build/b-erc32' + gmake[1]: Nothing to be done for 'all-am'. + gmake[1]: Leaving directory '$BASE/build/b-erc32' + +The last step is to install the BSP. + +.. code-block:: none + + cd $HOME/quick-start/build/b-erc32 + make install + +This command should output something like this (omitted lines are denoted by +...). In this output the base directory :file:`$HOME/quick-start` was replaced +by ``$BASE``. + +.. code-block:: none + + Making install in sparc-rtems5/c + gmake[1]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c' + Making install in . + gmake[2]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c' + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c' + gmake[3]: Nothing to be done for 'install-exec-am'. + gmake[3]: Nothing to be done for 'install-data-am'. + gmake[3]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c' + gmake[2]: Leaving directory '$BASE/build/b-erc32/sparc-rtems5/c' + Making install in erc32 + gmake[2]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32' + gmake[3]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32' + Making install-am in . + Making install-am in cpukit + gmake[4]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/cpukit' + gmake[5]: Entering directory '$BASE/build/b-erc32/sparc-rtems5/c/erc32/cpukit' + gmake[5]: Nothing to be done for 'install-exec-am'. + $BASE/src/rtems/c/src/../../cpukit/../install-sh -c -d '$BASE/rtems/5/sparc-rtems5/erc32/lib/include' + ... + $BASE/src/rtems/make/Templates/Makefile.lib '$BASE/rtems/5/share/rtems5/make/Templates' + $BASE/src/rtems/./install-sh -c -d '$BASE/rtems/5/make/custom' + /usr/bin/install -c -m 644 $BASE/src/rtems/make/custom/default.cfg '$BASE/rtems/5/make/custom' + gmake[2]: Leaving directory '$BASE/build/b-erc32' + gmake[1]: Leaving directory '$BASE/build/b-erc32' diff --git a/user/start/index.rst b/user/start/index.rst index c4bb1ed..00a3644 100644 --- a/user/start/index.rst +++ b/user/start/index.rst @@ -21,6 +21,7 @@ applications on top of RTEMS. sources tools bootstrap + bsp-build 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 -- cgit v1.2.3