diff options
Diffstat (limited to 'user/installation/kernel.rst')
-rw-r--r-- | user/installation/kernel.rst | 308 |
1 files changed, 72 insertions, 236 deletions
diff --git a/user/installation/kernel.rst b/user/installation/kernel.rst index fca4ed7..d61f17f 100644 --- a/user/installation/kernel.rst +++ b/user/installation/kernel.rst @@ -18,10 +18,9 @@ Create a new location to build the RTEMS kernel: .. code-block:: none - $ cd - $ cd development/rtems - $ mkdir kernel - $ cd kernel + $ cd $HOME/development/rtems + $ mkdir src + $ cd src Clone the RTEMS respository: @@ -36,209 +35,72 @@ Clone the RTEMS respository: Resolving deltas: 100% (390053/390053), done. Checking connectivity... done. -Tools Path Set Up ------------------ - -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:: none - - $ export PATH=$HOME/development/rtems/5/bin:$PATH - -.. _bootstrapping: - -Bootstrapping -------------- - -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 we provide a command that can perform the bootstrap in -parallel using your available cores. We need to enter the cloned source -directory then run the bootstrap commands: - -.. code-block:: none - - $ cd rtems - $ ./bootstrap -c && ./rtems-bootstrap - removing automake generated Makefile.in files - removing configure files - removing aclocal.m4 files - RTEMS Bootstrap, 5 (089327b5dcf9) - 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 - Building a BSP -------------- -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: +We build RTEMS in a directory within the source tree we have just cloned. For +the details, see the :ref:`BSPBuildSystem`. We will build for the ``erc32`` +BSP with POSIX enabled. Firstly, create the file :file:`config.ini` in the +source tree root directory with the BSP build configuration, for example: -.. code-block:: none +.. code-block:: ini - $ cd .. - $ mkdir erc32 - $ cd erc32 + [sparc/erc32] + RTEMS_POSIX_API = True -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: +Configure RTEMS using the ``waf configure`` command: .. code-block:: none - $ $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/5 \ - --target=sparc-rtems5 --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-rtems5 - 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-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... /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: + $ cd $HOME/development/rtems/src/rtems + $ ./waf configure --prefix=$HOME/development/rtems/6 + Setting top to : $HOME/development/rtems/src/rtems + Setting out to : $HOME/development/rtems/src/rtems/build + Regenerate build specification cache (needs a couple of seconds)... + Configure board support package (BSP) : sparc/erc32 + Checking for program 'sparc-rtems6-gcc' : $HOME/development/rtems/6/bin/sparc-rtems6-gcc + Checking for program 'sparc-rtems6-g++' : $HOME/development/rtems/6/bin/sparc-rtems6-g++ + Checking for program 'sparc-rtems6-ar' : $HOME/development/rtems/6/bin/sparc-rtems6-ar + Checking for program 'sparc-rtems6-ld' : $HOME/development/rtems/6/bin/sparc-rtems6-ld + Checking for program 'ar' : $HOME/development/rtems/6/bin/sparc-rtems6-ar + Checking for program 'g++, c++' : $HOME/development/rtems/6/bin/sparc-rtems6-g++ + Checking for program 'ar' : $HOME/development/rtems/6/bin/sparc-rtems6-ar + Checking for program 'gas, gcc' : $HOME/development/rtems/6/bin/sparc-rtems6-gcc + Checking for program 'ar' : $HOME/development/rtems/6/bin/sparc-rtems6-ar + Checking for program 'gcc, cc' : $HOME/development/rtems/6/bin/sparc-rtems6-gcc + Checking for program 'ar' : $HOME/development/rtems/6/bin/sparc-rtems6-ar + Checking for asm flags '-MMD' : yes + Checking for c flags '-MMD' : yes + Checking for cxx flags '-MMD' : yes + Checking for program 'rtems-bin2c' : $HOME/development/rtems/6/bin/rtems-bin2c + Checking for program 'gzip' : /usr/bin/gzip + Checking for program 'xz' : /usr/bin/xz + Checking for program 'rtems-ld' : $HOME/development/rtems/6/bin/rtems-ld + Checking for program 'rtems-syms' : $HOME/development/rtems/6/bin/rtems-syms + Checking for program 'rtems-bin2c' : $HOME/development/rtems/6/bin/rtems-bin2c + Checking for program 'gzip' : /usr/bin/gzip + Checking for program 'xz' : /usr/bin/xz + 'configure' finished successfully (7.996s) + +Build RTEMS: .. code-block:: none - $ 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-rtems5/c - make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/c' - Making all in . - make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/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-rtems5 - ...... - sparc-rtems5-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-rtems5-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-rtems5-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-rtems5-nm -g -n nsecs.exe > nsecs.num - sparc-rtems5-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-rtems5/ c/erc32/testsuites/samples/nsecs' - make[5]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32/testsuites/samples' - make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32/testsuites/samples' - make[4]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32/testsuites' - make[4]: Nothing to be done for 'all-am'. - make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32/testsuites' - make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32/testsuites' - make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/ c/erc32' - make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/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' + $ ./waf + Waf: Entering directory `$HOME/development/rtems/src/rtems/build' + Waf: Leaving directory `$HOME/development/rtems/src/rtems/build' + 'build' finished successfully (0.051s) + Waf: Entering directory `$HOME/development/rtems/src/rtems/build/sparc/erc32' + [ 1/1524] Compiling bsps/shared/dev/serial/mc68681_reg2.c + [ 2/1524] Compiling bsps/shared/dev/rtc/mc146818a_ioreg.c + [ 3/1524] Compiling bsps/shared/dev/flash/am29lv160.c + ... + [1521/1524] Linking $HOME/development/rtems/src/rtems/build/sparc/erc32/libz.a + [1522/1524] Linking $HOME/development/rtems/src/rtems/build/sparc/erc32/librtemscxx.a + [1523/1524] Linking $HOME/development/rtems/src/rtems/build/sparc/erc32/testsuites/samples/paranoia.exe + [1524/1524] Linking $HOME/development/rtems/src/rtems/build/sparc/erc32/libmghttpd.a + Waf: Leaving directory `$HOME/development/rtems/src/rtems/build/sparc/erc32' + 'build_sparc/erc32' finished successfully (4.894s) Installing A BSP ---------------- @@ -252,46 +114,20 @@ RTEMS with the following command: .. code-block:: none - $ 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/5/bin' - /usr/bin/install -c cklength eolstrip packhex unhex rtems-bin2c '/home/chris/development/rtems/5/bin' - /bin/mkdir -p '/home/chris/development/rtems/5/bin' - /usr/bin/install -c install-if-change '/home/chris/development/rtems/5/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-rtems5/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/5/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/5/make' - /bin/mkdir -p '/home/chris/development/rtems/5/share/rtems5/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/5/share/rtems5/make/Templates' - /bin/mkdir -p '/home/chris/development/rtems/5/make/custom' - /usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/custom/default.cfg '/home/chris/development/rtems/5/make/custom' - make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32' - make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32' + $ ./waf install + Waf: Entering directory `$HOME/development/rtems/src/rtems/build' + Waf: Leaving directory `$HOME/development/rtems/src/rtems/build' + 'install' finished successfully (0.074s) + Waf: Entering directory `$HOME/development/rtems/src/rtems/build/sparc/erc32' + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/libchip/am29lv160.h (from bsps/include/libchip/am29lv160.h) + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/libchip/mc146818a.h (from bsps/include/libchip/mc146818a.h) + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/libchip/mc68681.h (from bsps/include/libchip/mc68681.h) + ... + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/rtems/version.h (from cpukit/include/rtems/version.h) + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/rtems/vmeintr.h (from cpukit/include/rtems/vmeintr.h) + + install $HOME/development/rtems/6/sparc-rtems6/erc32/lib/include/rtems/watchdogdrv.h (from cpukit/include/rtems/watchdogdrv.h) + Waf: Leaving directory `$HOME/development/rtems/src/rtems/build/sparc/erc32' + 'install_sparc/erc32' finished successfully (0.637s) Contributing Patches -------------------- @@ -313,7 +149,7 @@ has changed: .. code-block:: none - $ cd ../rtems + $ cd $HOME/development/rtems/src/rtems $ git status On branch master Your branch is up-to-date with 'origin/master'. |