From 86518bd3ddeecc23d93344f085b042246e4adfdf Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Mon, 4 Jul 2016 12:30:09 +1000 Subject: Reorganisse the User Manual to make it easier to navigate. --- user/conf.py | 25 +- user/ecosys/index.rst | 87 ++++ user/glossary/index.rst | 2 - user/hosts/index.rst | 50 +++ user/hosts/macos.rst | 21 + user/hosts/os.rst | 32 ++ user/hosts/posix.rst | 39 ++ user/hosts/windows.rst | 375 +++++++++++++++++ user/index.rst | 13 +- user/installation/developer.rst | 672 ++++++++++++++++++++++++++++++ user/installation/index.rst | 47 +++ user/installation/prefixes-sandboxing.rst | 151 +++++++ user/installation/releases.rst | 284 +++++++++++++ user/overview/index.rst | 36 +- user/start/basics.rst | 149 ------- user/start/depend.rst | 490 ---------------------- user/start/development.rst | 609 --------------------------- user/start/index.rst | 84 +++- user/start/quick.rst | 68 +++ user/start/releases.rst | 284 ------------- user/start/windows.rst | 477 --------------------- user/support/index.rst | 30 +- user/tools/index.rst | 16 +- 23 files changed, 1966 insertions(+), 2075 deletions(-) create mode 100644 user/ecosys/index.rst create mode 100644 user/hosts/index.rst create mode 100644 user/hosts/macos.rst create mode 100644 user/hosts/os.rst create mode 100644 user/hosts/posix.rst create mode 100644 user/hosts/windows.rst create mode 100644 user/installation/developer.rst create mode 100644 user/installation/index.rst create mode 100644 user/installation/prefixes-sandboxing.rst create mode 100644 user/installation/releases.rst delete mode 100644 user/start/basics.rst delete mode 100644 user/start/depend.rst delete mode 100644 user/start/development.rst create mode 100644 user/start/quick.rst delete mode 100644 user/start/releases.rst delete mode 100644 user/start/windows.rst (limited to 'user') diff --git a/user/conf.py b/user/conf.py index d6a5277..d22b347 100644 --- a/user/conf.py +++ b/user/conf.py @@ -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 = [ diff --git a/user/ecosys/index.rst b/user/ecosys/index.rst new file mode 100644 index 0000000..c7f7f0c --- /dev/null +++ b/user/ecosys/index.rst @@ -0,0 +1,87 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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. diff --git a/user/glossary/index.rst b/user/glossary/index.rst index 7688cda..fa8caa7 100644 --- a/user/glossary/index.rst +++ b/user/glossary/index.rst @@ -1,8 +1,6 @@ .. comment SPDX-License-Identifier: CC-BY-SA-4.0 -.. _glossary: - Glossary ======== diff --git a/user/hosts/index.rst b/user/hosts/index.rst new file mode 100644 index 0000000..5d562e8 --- /dev/null +++ b/user/hosts/index.rst @@ -0,0 +1,50 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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 diff --git a/user/hosts/macos.rst b/user/hosts/macos.rst new file mode 100644 index 0000000..426b303 --- /dev/null +++ b/user/hosts/macos.rst @@ -0,0 +1,21 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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. diff --git a/user/hosts/os.rst b/user/hosts/os.rst new file mode 100644 index 0000000..9197144 --- /dev/null +++ b/user/hosts/os.rst @@ -0,0 +1,32 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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. diff --git a/user/hosts/posix.rst b/user/hosts/posix.rst new file mode 100644 index 0000000..fd4fb6c --- /dev/null +++ b/user/hosts/posix.rst @@ -0,0 +1,39 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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. diff --git a/user/hosts/windows.rst b/user/hosts/windows.rst new file mode 100644 index 0000000..093fa31 --- /dev/null +++ b/user/hosts/windows.rst @@ -0,0 +1,375 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. comment: All rights reserved. + +.. _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 +compilers and debuggers and we use the simulators that come with GDB and +QEMU. The Windows support for these tools varies and the RTEMS Project is +committed to helping the open source community improve the Windows +experience. If something is not working or supported please email the +:r:list:`users`. + +The RTEMS Project's Windows tools are native Windows executables giving the +user the best possible experience on Windows. Native Windows programs use the +standard Windows DLLs and paths. Integration with standard Windows integrated +development tools such as editors is straight forward. POSIX emulation +environments such as Cygwin and the MSYS2 shell have special executables that +require a POSIX emulation DLL and these emulation DLLs add an extra layer of +complexity as well as a performance over-head. The RTEMS Project uses these +POSIX emulation shells to run configure scripts that come with various open +source packages such as `gcc` so they form an important and valued part of the +environment we describe here. The output of this procedure forms the tools you +use during your application development and they do not depend on the emulation +DLLs. + +The performance of the compiler is as good as you can have on Windows and the +performance compiling a single file will be similar to that on a host like +Linux or FreeBSD given the same hardware. Building the tools from source is +much slower on Windows because POSIX shells and related tools are used and the +POSIX emulation overhead it much much slower than a native POSIX operating +system like Linux and FreeBSD. This overhead is only during the building of the +tools and the RTEMS kernel and if you use a suitable build system that is +native to Windows your application development should be similar to other +operating systems. + +Building is known to work on `Windows 7 64bit Professional` and `Windows 10`. + +.. _windows-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 +characters. This can effect some of the tools used by RTEMS. It is recommended +you keep the top level directories as short as possible when building the RTEMS +tools and you should also keep an eye on the path length when developing your +application. The RTEMS built tools can handle much longer path lengths however +some of the GNU tools such as those in the ``binutils`` package cannot. + +The release packages of the RSB when unpacked have top level file names that +are too big to build RTEMS. You need to change or rename that path to something +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 +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 +or MSYS2. This document focuses on MSYS2. It is smaller than Cygwin and comes +with the Arch Linux package manager ``pacman``. + +MSYS2 provides MinGW64 support as well as a POSIX shell called MSYS2. The +MinGW64 compiler and related tools produce 64bit native Windows +executables. The shell is a standard Bourne shell and the MSYS2 environment is +a stripped Cygwin shell with enough support to run the various ``configure`` +scripts needed to build the RTEMS tools and the RTEMS kernel. + +MSYS2 is built around the ``pacman`` packaging tool. This makes MSYS2 a +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 +support. This places specific demands on the Python we need installed and +available and MSYS2 provides suitable Python versions we can use. You need to +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 provides us with a +simple solution so we do not support linking MSC libraries. + +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. + +You also need to install the MSYS version of Python along with the MinGW64 +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 +support. Run the installer following the 7 steps listed on the page. + +MSYS2 uses the ``pacman`` package manager. The Arch Linux project has detailed +documentation on how to use ``pacman``. What is shown here is a just few +examples of what you can do. + +.. sidebar:: **Pin MSYS2 Shell to Taskbar** + + Pin the MSYS2 64bit Shell to the Taskbar so you always use it rather than the + 32bit Shell. + +Open a 64bit MSYS shell from the Start Menu: + +.. figure:: ../../images/msys2-minw64-start-menu.png + :width: 50% + :align: center + :alt: MSYS2 64bit Shell Start Menu + +The packages we require are: + +* python +* mingw-w64-x86_64-python2 +* mingw-w64-x86_64-gcc +* git +* bison +* cvs +* diffutils +* make +* patch +* tar +* texinfo +* unzip + +.. note:: + + The actual output provided may vary due to changes in the dependent packages + or newer package versions. + +Install the packages using ``pacman``: + +.. code-block:: shell + + ~ + $ pacman -S python mingw-w64-x86_64-python2 mingw-w64-x86_64-gcc \ + bison cvs diffutils git make patch tar texinfo unzip + resolving dependencies... + looking for conflicting packages... + + Packages (74) db-5.3.28-2 expat-2.1.0-2 gdbm-1.11-3 heimdal-1.5.3-8 + libgdbm-1.11-3 mingw-w64-x86_64-binutils-2.26-21 + mingw-w64-x86_64-bzip2-1.0.6-5 + mingw-w64-x86_64-ca-certificates-20150426-2 + mingw-w64-x86_64-crt-git-5.0.0.4627.03684c4-1 + mingw-w64-x86_64-expat-2.1.0-6 mingw-w64-x86_64-gcc-libs-5.3.0-2 + mingw-w64-x86_64-gdbm-1.11-3 mingw-w64-x86_64-gettext-0.19.6-2 + mingw-w64-x86_64-gmp-6.1.0-1 + mingw-w64-x86_64-headers-git-5.0.0.4627.53be55d-1 + mingw-w64-x86_64-isl-0.15-1 mingw-w64-x86_64-libffi-3.2.1-3 + mingw-w64-x86_64-libiconv-1.14-5 + mingw-w64-x86_64-libsystre-1.0.1-2 + mingw-w64-x86_64-libtasn1-4.7-1 + mingw-w64-x86_64-libtre-git-r122.c2f5d13-4 + mingw-w64-x86_64-libwinpthread-git-5.0.0.4573.628fdbf-1 + mingw-w64-x86_64-mpc-1.0.3-2 mingw-w64-x86_64-mpfr-3.1.3.p0-2 + mingw-w64-x86_64-ncurses-6.0.20160220-2 + mingw-w64-x86_64-openssl-1.0.2.g-1 + mingw-w64-x86_64-p11-kit-0.23.1-3 + mingw-w64-x86_64-readline-6.3.008-1 mingw-w64-x86_64-tcl-8.6.5-1 + mingw-w64-x86_64-termcap-1.3.1-2 mingw-w64-x86_64-tk-8.6.5-1 + mingw-w64-x86_64-windows-default-manifest-6.4-2 + mingw-w64-x86_64-winpthreads-git-5.0.0.4573.628fdbf-1 + mingw-w64-x86_64-zlib-1.2.8-9 openssh-7.1p2-1 perl-5.22.0-2 + perl-Authen-SASL-2.16-2 perl-Convert-BinHex-1.123-2 + perl-Encode-Locale-1.04-1 perl-Error-0.17024-1 + perl-File-Listing-6.04-2 perl-HTML-Parser-3.71-3 + perl-HTML-Tagset-3.20-2 perl-HTTP-Cookies-6.01-2 + perl-HTTP-Daemon-6.01-2 perl-HTTP-Date-6.02-2 + perl-HTTP-Message-6.06-2 perl-HTTP-Negotiate-6.01-2 + perl-IO-Socket-SSL-2.016-1 perl-IO-stringy-2.111-1 + perl-LWP-MediaTypes-6.02-2 perl-MIME-tools-5.506-1 + perl-MailTools-2.14-1 perl-Net-HTTP-6.09-1 + perl-Net-SMTP-SSL-1.02-1 perl-Net-SSLeay-1.70-1 + perl-TermReadKey-2.33-1 perl-TimeDate-2.30-2 perl-URI-1.68-1 + perl-WWW-RobotRules-6.02-2 perl-libwww-6.13-1 vim-7.4.1468-1 + bison-3.0.4-1 cvs-1.11.23-2 diffutils-3.3-3 git-2.7.2-1 + make-4.1-4 mingw-w64-x86_64-gcc-5.3.0-2 + mingw-w64-x86_64-python2-2.7.11-4 patch-2.7.5-1 python-3.4.3-3 + tar-1.28-3 texinfo-6.0-1 unzip-6.0-2 + + Total Download Size: 114.10 MiB + Total Installed Size: 689.61 MiB + + :: Proceed with installation? [Y/n] y + :: Retrieving packages... + mingw-w64-x86_64-gm... 477.1 KiB 681K/s 00:01 [#####################] 100% + mingw-w64-x86_64-li... 24.2 KiB 755K/s 00:00 [#####################] 100% + mingw-w64-x86_64-gc... 541.9 KiB 705K/s 00:01 [#####################] 100% + mingw-w64-x86_64-ex... 106.7 KiB 702K/s 00:00 [#####################] 100% + mingw-w64-x86_64-bz... 77.9 KiB 666K/s 00:00 [#####################] 100% + mingw-w64-x86_64-li... 600.2 KiB 703K/s 00:01 [#####################] 100% + mingw-w64-x86_64-ge... 3.0 MiB 700K/s 00:04 [#####################] 100% + mingw-w64-x86_64-gd... 151.8 KiB 483K/s 00:00 [#####################] 100% + mingw-w64-x86_64-li... 34.5 KiB 705K/s 00:00 [#####################] 100% + mingw-w64-x86_64-li... 69.2 KiB 713K/s 00:00 [#####################] 100% + mingw-w64-x86_64-li... 9.3 KiB 778K/s 00:00 [#####################] 100% + mingw-w64-x86_64-nc... 1800.5 KiB 701K/s 00:03 [#####################] 100% + mingw-w64-x86_64-li... 171.4 KiB 708K/s 00:00 [#####################] 100% + mingw-w64-x86_64-p1... 193.5 KiB 709K/s 00:00 [#####################] 100% + mingw-w64-x86_64-ca... 382.1 KiB 705K/s 00:01 [#####################] 100% + mingw-w64-x86_64-zl... 148.6 KiB 704K/s 00:00 [#####################] 100% + mingw-w64-x86_64-op... 3.3 MiB 624K/s 00:05 [#####################] 100% + mingw-w64-x86_64-te... 12.6 KiB 76.7K/s 00:00 [#####################] 100% + mingw-w64-x86_64-re... 327.4 KiB 277K/s 00:01 [#####################] 100% + mingw-w64-x86_64-tc... 2.9 MiB 699K/s 00:04 [#####################] 100% + mingw-w64-x86_64-tk... 1869.2 KiB 703K/s 00:03 [#####################] 100% + mingw-w64-x86_64-py... 10.9 MiB 699K/s 00:16 [#####################] 100% + mingw-w64-x86_64-bi... 12.7 MiB 688K/s 00:19 [#####################] 100% + mingw-w64-x86_64-he... 5.0 MiB 645K/s 00:08 [#####################] 100% + mingw-w64-x86_64-cr... 2.6 MiB 701K/s 00:04 [#####################] 100% + mingw-w64-x86_64-is... 524.3 KiB 684K/s 00:01 [#####################] 100% + mingw-w64-x86_64-mp... 265.2 KiB 705K/s 00:00 [#####################] 100% + mingw-w64-x86_64-mp... 62.3 KiB 82.9K/s 00:01 [#####################] 100% + mingw-w64-x86_64-wi... 1484.0 B 0.00B/s 00:00 [#####################] 100% + mingw-w64-x86_64-wi... 33.2 KiB 346K/s 00:00 [#####################] 100% + mingw-w64-x86_64-gc... 25.1 MiB 701K/s 00:37 [#####################] 100% + python-3.4.3-3-x86_64 12.1 MiB 700K/s 00:18 [#####################] 100% + bison-3.0.4-1-x86_64 1045.1 KiB 703K/s 00:01 [#####################] 100% + heimdal-1.5.3-8-x86_64 543.7 KiB 703K/s 00:01 [#####################] 100% + cvs-1.11.23-2-x86_64 508.2 KiB 388K/s 00:01 [#####################] 100% + diffutils-3.3-3-x86_64 265.7 KiB 478K/s 00:01 [#####################] 100% + expat-2.1.0-2-x86_64 13.1 KiB 817K/s 00:00 [#####################] 100% + vim-7.4.1468-1-x86_64 6.1 MiB 700K/s 00:09 [#####################] 100% + openssh-7.1p2-1-x86_64 653.4 KiB 703K/s 00:01 [#####################] 100% + db-5.3.28-2-x86_64 41.7 KiB 719K/s 00:00 [#####################] 100% + libgdbm-1.11-3-x86_64 20.4 KiB 754K/s 00:00 [#####################] 100% + gdbm-1.11-3-x86_64 108.5 KiB 704K/s 00:00 [#####################] 100% + perl-5.22.0-2-x86_64 12.4 MiB 702K/s 00:18 [#####################] 100% + perl-Error-0.17024-... 17.1 KiB 742K/s 00:00 [#####################] 100% + perl-Authen-SASL-2.... 42.4 KiB 731K/s 00:00 [#####################] 100% + perl-Encode-Locale-... 9.7 KiB 745K/s 00:00 [#####################] 100% + perl-HTTP-Date-6.02... 8.6 KiB 784K/s 00:00 [#####################] 100% + perl-File-Listing-6... 7.7 KiB 769K/s 00:00 [#####################] 100% + perl-HTML-Tagset-3.... 10.3 KiB 732K/s 00:00 [#####################] 100% + perl-HTML-Parser-3.... 76.9 KiB 516K/s 00:00 [#####################] 100% + perl-LWP-MediaTypes... 18.0 KiB 752K/s 00:00 [#####################] 100% + perl-URI-1.68-1-any 75.6 KiB 609K/s 00:00 [#####################] 100% + perl-HTTP-Message-6... 71.3 KiB 625K/s 00:00 [#####################] 100% + perl-HTTP-Cookies-6... 20.4 KiB 499K/s 00:00 [#####################] 100% + perl-HTTP-Daemon-6.... 14.2 KiB 749K/s 00:00 [#####################] 100% + perl-HTTP-Negotiate... 11.4 KiB 817K/s 00:00 [#####################] 100% + perl-Net-HTTP-6.09-... 19.8 KiB 732K/s 00:00 [#####################] 100% + perl-WWW-RobotRules... 12.2 KiB 766K/s 00:00 [#####################] 100% + perl-libwww-6.13-1-any 122.2 KiB 661K/s 00:00 [#####################] 100% + perl-TimeDate-2.30-... 35.9 KiB 718K/s 00:00 [#####################] 100% + perl-MailTools-2.14... 58.4 KiB 712K/s 00:00 [#####################] 100% + perl-IO-stringy-2.1... 52.6 KiB 721K/s 00:00 [#####################] 100% + perl-Convert-BinHex... 30.1 KiB 733K/s 00:00 [#####################] 100% + perl-MIME-tools-5.5... 180.4 KiB 705K/s 00:00 [#####################] 100% + perl-Net-SSLeay-1.7... 191.2 KiB 708K/s 00:00 [#####################] 100% + perl-IO-Socket-SSL-... 112.5 KiB 703K/s 00:00 [#####################] 100% + perl-Net-SMTP-SSL-1... 3.5 KiB 881K/s 00:00 [#####################] 100% + perl-TermReadKey-2.... 20.9 KiB 745K/s 00:00 [#####################] 100% + git-2.7.2-1-x86_64 3.6 MiB 702K/s 00:05 [#####################] 100% + make-4.1-4-x86_64 387.0 KiB 671K/s 00:01 [#####################] 100% + patch-2.7.5-1-x86_64 75.9 KiB 684K/s 00:00 [#####################] 100% + tar-1.28-3-x86_64 671.9 KiB 379K/s 00:02 [#####################] 100% + texinfo-6.0-1-x86_64 992.7 KiB 625K/s 00:02 [#####################] 100% + unzip-6.0-2-x86_64 93.1 KiB 705K/s 00:00 [#####################] 100% + (74/74) checking keys in keyring [#####################] 100% + (74/74) checking package integrity [#####################] 100% + (74/74) loading package files [#####################] 100% + (74/74) checking for file conflicts [#####################] 100% + (74/74) checking available disk space [#####################] 100% + :: Processing package changes... + ( 1/74) installing python [#####################] 100% + ( 2/74) installing mingw-w64-x86_64-gmp [#####################] 100% + ( 3/74) installing mingw-w64-x86_64-libwinpthr... [#####################] 100% + ( 4/74) installing mingw-w64-x86_64-gcc-libs [#####################] 100% + ( 5/74) installing mingw-w64-x86_64-expat [#####################] 100% + ( 6/74) installing mingw-w64-x86_64-bzip2 [#####################] 100% + ( 7/74) installing mingw-w64-x86_64-libiconv [#####################] 100% + ( 8/74) installing mingw-w64-x86_64-gettext [#####################] 100% + ( 9/74) installing mingw-w64-x86_64-gdbm [#####################] 100% + (10/74) installing mingw-w64-x86_64-libffi [#####################] 100% + (11/74) installing mingw-w64-x86_64-libtre-git [#####################] 100% + (12/74) installing mingw-w64-x86_64-libsystre [#####################] 100% + (13/74) installing mingw-w64-x86_64-ncurses [#####################] 100% + (14/74) installing mingw-w64-x86_64-libtasn1 [#####################] 100% + (15/74) installing mingw-w64-x86_64-p11-kit [#####################] 100% + (16/74) installing mingw-w64-x86_64-ca-certifi... [#####################] 100% + (17/74) installing mingw-w64-x86_64-zlib [#####################] 100% + (18/74) installing mingw-w64-x86_64-openssl [#####################] 100% + (19/74) installing mingw-w64-x86_64-termcap [#####################] 100% + (20/74) installing mingw-w64-x86_64-readline [#####################] 100% + (21/74) installing mingw-w64-x86_64-tcl [#####################] 100% + (22/74) installing mingw-w64-x86_64-tk [#####################] 100% + (23/74) installing mingw-w64-x86_64-python2 [#####################] 100% + (24/74) installing mingw-w64-x86_64-binutils [#####################] 100% + (25/74) installing mingw-w64-x86_64-headers-git [#####################] 100% + (26/74) installing mingw-w64-x86_64-crt-git [#####################] 100% + (27/74) installing mingw-w64-x86_64-isl [#####################] 100% + (28/74) installing mingw-w64-x86_64-mpfr [#####################] 100% + (29/74) installing mingw-w64-x86_64-mpc [#####################] 100% + (30/74) installing mingw-w64-x86_64-windows-de... [#####################] 100% + (31/74) installing mingw-w64-x86_64-winpthread... [#####################] 100% + (32/74) installing mingw-w64-x86_64-gcc [#####################] 100% + (33/74) installing bison [#####################] 100% + (34/74) installing heimdal [#####################] 100% + (35/74) installing cvs [#####################] 100% + (36/74) installing diffutils [#####################] 100% + (37/74) installing expat [#####################] 100% + (38/74) installing vim [#####################] 100% + (39/74) installing openssh [#####################] 100% + (40/74) installing db [#####################] 100% + (41/74) installing libgdbm [#####################] 100% + (42/74) installing gdbm [#####################] 100% + (43/74) installing perl [#####################] 100% + (44/74) installing perl-Error [#####################] 100% + (45/74) installing perl-Authen-SASL [#####################] 100% + (46/74) installing perl-Encode-Locale [#####################] 100% + (47/74) installing perl-HTTP-Date [#####################] 100% + (48/74) installing perl-File-Listing [#####################] 100% + (49/74) installing perl-HTML-Tagset [#####################] 100% + (50/74) installing perl-HTML-Parser [#####################] 100% + (51/74) installing perl-LWP-MediaTypes [#####################] 100% + (52/74) installing perl-URI [#####################] 100% + (53/74) installing perl-HTTP-Message [#####################] 100% + (54/74) installing perl-HTTP-Cookies [#####################] 100% + (55/74) installing perl-HTTP-Daemon [#####################] 100% + (56/74) installing perl-HTTP-Negotiate [#####################] 100% + (57/74) installing perl-Net-HTTP [#####################] 100% + (58/74) installing perl-WWW-RobotRules [#####################] 100% + (59/74) installing perl-libwww [#####################] 100% + Optional dependencies for perl-libwww + perl-LWP-Protocol-HTTPS: for https:// url schemes + (60/74) installing perl-TimeDate [#####################] 100% + (61/74) installing perl-MailTools [#####################] 100% + (62/74) installing perl-IO-stringy [#####################] 100% + (63/74) installing perl-Convert-BinHex [#####################] 100% + module test... pass. + (64/74) installing perl-MIME-tools [#####################] 100% + (65/74) installing perl-Net-SSLeay [#####################] 100% + (66/74) installing perl-IO-Socket-SSL [#####################] 100% + (67/74) installing perl-Net-SMTP-SSL [#####################] 100% + (68/74) installing perl-TermReadKey [#####################] 100% + (69/74) installing git [#####################] 100% + Optional dependencies for git + python2: various helper scripts + subversion: git svn + (70/74) installing make [#####################] 100% + (71/74) installing patch [#####################] 100% + Optional dependencies for patch + ed: for patch -e functionality + (72/74) installing tar [#####################] 100% + (73/74) installing texinfo [#####################] 100% + (74/74) installing unzip [#####################] 100% diff --git a/user/index.rst b/user/index.rst index bec769f..868e187 100644 --- a/user/index.rst +++ b/user/index.rst @@ -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 diff --git a/user/installation/developer.rst b/user/installation/developer.rst new file mode 100644 index 0000000..0db4a51 --- /dev/null +++ b/user/installation/developer.rst @@ -0,0 +1,672 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. comment: All rights reserved. + +.. _developer: +.. _development-version: +.. _unstable: + +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 +Windows. The installation documented here is on `Windows 7 64bit +Professional`. Building on `Windows 10` has been reported as working. + +Please see :ref:`microsoft-windows` before continuing. + +.. note:: + + If the RSB reports ``error: no hosts defaults found; please add`` you have + probably opened an MSYS2 32bit Shell. Close all 32bit Shell windows and open + the MSYS2 64bit Shell. + +RTEMS Windows Tools +^^^^^^^^^^^^^^^^^^^ + +Create a workspace for RTEMS using the following shell command: + +.. sidebar:: *Creating Tool Archives* + + Add ``--bset-tar-file`` to the ``sb-set-builder`` command line to create + tar files of the built package set. + +.. code-block:: shell + + ~ + $ mkdir -p /c/opt/rtems + +The ``/c`` path is an internal MSYS2 mount point of the ``C:`` drive. The +command creates the RTEMS work space on the ``C:`` drive. If you wish to use +another drive please subsitute ``/c`` with your drive letter. + +We build and install all RTEMS packages under the `prefix` we just +created. Change to that directory and get a copy of the RSB: + +.. code-block:: shell + + ~ + $ cd /c/opt/rtems + /c/opt/rtems + $ git clone git://git.rtems.org/rtems-source-builder.git rsb + Cloning into 'rsb'... + remote: Counting objects: 5716, done. + remote: Compressing objects: 100% (2183/2183), done. + remote: Total 5716 (delta 3919), reused 5071 (delta 3494) + Receiving objects: 100% (5716/5716), 2.46 MiB | 656.00 KiB/s, done. + Resolving deltas: 100% (3919/3919), done. + Checking connectivity... done. + Checking out files: 100% (630/630), done. + /c/opt/rtems + $ cd rsb + +We are building RTEMS 4.11 tools so select the *4.11* branch: + +.. code-block:: shell + + /c/opt/rtems/rsb + $ git checkout 4.11 + Branch 4.11 set up to track remote branch 4.11 from origin. + Switched to a new branch '4.11' + /c/opt/rtems/rsb + $ + +Check the RSB has a valid environment: + +.. code-block:: shell + + /c/opt/rtems/rsb + $ cd rtems + /c/opt/rtems/rsb/rtems + $ ../source-builder/sb-check + RTEMS Source Builder - Check, 4.11 (01ac76f2f90f) + Environment is ok + /c/opt/rtems/rsb/rtems + $ + +To build a set of RTEMS tools for the Intel ``i386`` architecture. The build +runs a single job rather than a job per CPU in your machine and will take a +long time so please be patient. The RSB creates a log file containing all the +build output and it will be changing size. The RSB command to build ``i386`` +tools is: + +.. code-block:: shell + + /c/opt/rtems/rsb/rtems + $ ../source-builder/sb-set-builder --prefix=/c/opt/rtems/4.11 \ + --jobs=none 4.11/rtems-i386 + RTEMS Source Builder - Set Builder, 4.11 (01ac76f2f90f) + Build Set: 4.11/rtems-i386 + Build Set: 4.11/rtems-autotools.bset + Build Set: 4.11/rtems-autotools-internal.bset + config: tools/rtems-autoconf-2.69-1.cfg + package: autoconf-2.69-x86_64-w64-mingw32-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-w64-mingw32-1 + config: tools/rtems-automake-1.12.6-1.cfg + package: automake-1.12.6-x86_64-w64-mingw32-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%) + building: automake-1.12.6-x86_64-w64-mingw32-1 + cleaning: autoconf-2.69-x86_64-w64-mingw32-1 + cleaning: automake-1.12.6-x86_64-w64-mingw32-1 + Build Set: Time 0:00:42.515625 + Build Set: 4.11/rtems-autotools-base.bset + config: tools/rtems-autoconf-2.69-1.cfg + package: autoconf-2.69-x86_64-w64-mingw32-1 + building: autoconf-2.69-x86_64-w64-mingw32-1 + reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.txt + reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.xml + config: tools/rtems-automake-1.12.6-1.cfg + package: automake-1.12.6-x86_64-w64-mingw32-1 + building: automake-1.12.6-x86_64-w64-mingw32-1 + reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.txt + reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.xml + tarball: tar/rtems-4.11-autotools-x86_64-w64-mingw32-1.tar.bz2 + installing: autoconf-2.69-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + installing: automake-1.12.6-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + cleaning: autoconf-2.69-x86_64-w64-mingw32-1 + cleaning: automake-1.12.6-x86_64-w64-mingw32-1 + Build Set: Time 0:00:37.718750 + Build Set: Time 0:01:20.234375 + config: devel/expat-2.1.0-1.cfg + package: expat-2.1.0-x86_64-w64-mingw32-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://iweb.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-w64-mingw32-1 + reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.txt + reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.xml + config: tools/rtems-binutils-2.24-1.cfg + package: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 + download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2 -> sources/binutils-2.24.tar.bz2 + downloading: sources/binutils-2.24.tar.bz2 - 21.7MB of 21.7MB (100%) + building: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 + reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.txt + reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.xml + config: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg + package: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 + download: ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2 -> sources/gcc-4.9.3.tar.bz2 + downloading: sources/gcc-4.9.3.tar.bz2 - 85.8MB of 85.8MB (100%) + download: ftp://sourceware.org/pub/newlib/newlib-2.2.0.20150423.tar.gz -> sources/newlib-2.2.0.20150423.tar.gz + downloading: sources/newlib-2.2.0.20150423.tar.gz - 16.7MB of 16.7MB (100%) + download: http://www.mpfr.org/mpfr-3.0.1/mpfr-3.0.1.tar.bz2 -> sources/mpfr-3.0.1.tar.bz2 + downloading: sources/mpfr-3.0.1.tar.bz2 - 1.1MB of 1.1MB (100%) + download: http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz -> sources/mpc-0.8.2.tar.gz + downloading: sources/mpc-0.8.2.tar.gz - 535.5kB of 535.5kB (100%) + download: ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2 -> sources/gmp-5.0.5.tar.bz2 + downloading: sources/gmp-5.0.5.tar.bz2 - 2.0MB of 2.0MB (100%) + building: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 + reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> + i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.txt + reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> + i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.xml + config: tools/rtems-gdb-7.9-1.cfg + package: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-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.11/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.11/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%) + building: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 + reporting: tools/rtems-gdb-7.9-1.cfg -> + i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.txt + reporting: tools/rtems-gdb-7.9-1.cfg -> + i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.xml + config: tools/rtems-tools-4.11-1.cfg + package: rtems-tools-4.11-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 => 4.11 + git: pull: git://git.rtems.org/rtems-tools.git + building: rtems-tools-4.11-1 + reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.txt + reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.xml + config: tools/rtems-kernel-4.11.cfg + installing: expat-2.1.0-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + installing: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + installing: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + installing: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 + installing: rtems-tools-4.11-1 -> C:\opt\rtems\4.11 + cleaning: expat-2.1.0-x86_64-w64-mingw32-1 + cleaning: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 + cleaning: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 + cleaning: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 + cleaning: rtems-tools-4.11-1 + Build Set: Time 1:32:58.972919 + /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: + +.. code-block:: shell + + /c + $ cd /c/opt/rtems + /c/opt/rtems + $ export PATH=/c/opt/rtems/4.11/bin:$PATH + /c/opt/rtems + $ + +We currently build RTEMS from the git release branch for 4.11: + +.. code-block:: shell + + /c/opt/rtems + $ mkdir kernel + /c/opt/rtems + $ cd kernel + /c/opt/rtems/kernel + $ git clone git://git.rtems.org/rtems.git rtems + Cloning into 'rtems'... + remote: Counting objects: 482766, done. + remote: Compressing objects: 100% (88781/88781), done. + remote: Total 482766 (delta 389610), reused 475155 (delta 383437) + Receiving objects: 100% (482766/482766), 69.77 MiB | 697.00 KiB/s, done. + Resolving deltas: 100% (389610/389610), done. + Checking connectivity... done. + Checking out files: 100% (10626/10626), done. + /c/opt/rtems/kernel + $ cd rtems + /c/opt/rtems/kernel/rtems + $ git checkout 4.11 + Checking out files: 100% (2553/2553), done. + Branch 4.11 set up to track remote branch 4.11 from origin. + Switched to a new branch '4.11' + /c/opt/rtems/kernel + $ + +The kernel code cloned from git needs to be `bootstrapped`. Bootstrapping +creates ``autoconf`` and ``automake`` generated files. To bootstrap we first +clean away any files, then generate the pre-install header file lists and +finally we generate the ``autoconf`` and ``automake`` files using the RSB's +bootstrap tool. First we clean any generated files that exist: + +.. code-block:: shell + + /c/opt/rtems/kernel/rtems + $ ./bootstrap -c + removing automake generated Makefile.in files + removing configure files + removing aclocal.m4 files + +Then we generate the pre-install header file automake make files: + +.. code-block:: shell + + /c/opt/rtems/kernel/rtems + $ ./bootstrap -p + Generating ./c/src/ada/preinstall.am + Generating ./c/src/lib/libbsp/arm/altera-cyclone-v/preinstall.am + Generating ./c/src/lib/libbsp/arm/atsam/preinstall.am + Generating ./c/src/lib/libbsp/arm/beagle/preinstall.am + Generating ./c/src/lib/libbsp/arm/csb336/preinstall.am + Generating ./c/src/lib/libbsp/arm/csb337/preinstall.am + Generating ./c/src/lib/libbsp/arm/edb7312/preinstall.am + Generating ./c/src/lib/libbsp/arm/gdbarmsim/preinstall.am + ....... + Generating ./cpukit/score/cpu/mips/preinstall.am + Generating ./cpukit/score/cpu/moxie/preinstall.am + Generating ./cpukit/score/cpu/nios2/preinstall.am + Generating ./cpukit/score/cpu/no_cpu/preinstall.am + Generating ./cpukit/score/cpu/or1k/preinstall.am + Generating ./cpukit/score/cpu/powerpc/preinstall.am + Generating ./cpukit/score/cpu/sh/preinstall.am + Generating ./cpukit/score/cpu/sparc/preinstall.am + Generating ./cpukit/score/cpu/sparc64/preinstall.am + Generating ./cpukit/score/cpu/v850/preinstall.am + Generating ./cpukit/score/preinstall.am + Generating ./cpukit/telnetd/preinstall.am + Generating ./cpukit/wrapup/preinstall.am + Generating ./cpukit/zlib/preinstall.am + /c/opt/rtems/kernel/rtems + +Finally we run the RSB's parallel ``bootstrap`` command: + +.. code-block:: shell + + $ /c/opt/rtems/rsb/source-builder/sb-bootstrap + RTEMS Source Builder - RTEMS Bootstrap, 4.11 (76188ee494dd) + 1/139: autoreconf: configure.ac + 2/139: autoreconf: c/configure.ac + 3/139: autoreconf: c/src/configure.ac + 4/139: autoreconf: c/src/ada-tests/configure.ac + 5/139: autoreconf: c/src/lib/libbsp/arm/configure.ac + 6/139: autoreconf: c/src/lib/libbsp/arm/altera-cyclone-v/configure.ac + 7/139: autoreconf: c/src/lib/libbsp/arm/atsam/configure.ac + 8/139: autoreconf: c/src/lib/libbsp/arm/beagle/configure.ac + 9/139: autoreconf: c/src/lib/libbsp/arm/csb336/configure.ac + 10/139: autoreconf: c/src/lib/libbsp/arm/csb337/configure.ac + 11/139: autoreconf: c/src/lib/libbsp/arm/edb7312/configure.ac + ....... + 129/139: autoreconf: testsuites/samples/configure.ac + 130/139: autoreconf: testsuites/smptests/configure.ac + 131/139: autoreconf: testsuites/sptests/configure.ac + 132/139: autoreconf: testsuites/tmtests/configure.ac + 133/139: autoreconf: testsuites/tools/configure.ac + 134/139: autoreconf: testsuites/tools/generic/configure.ac + 135/139: autoreconf: tools/build/configure.ac + 136/139: autoreconf: tools/cpu/configure.ac + 137/139: autoreconf: tools/cpu/generic/configure.ac + 138/139: autoreconf: tools/cpu/nios2/configure.ac + 139/139: autoreconf: tools/cpu/sh/configure.ac + Bootstrap time: 0:20:38.759766 + /c/opt/rtems/kernel/rtems + $ + +We will build the RTEMS kernel for the ``i386`` target and the ``pc686`` +BSP. You can check the available BSPs by running the ``rtems-bsps`` command +found in the top directory of the RTEMS kernel source. We build the Board +Support Package (BSP) outside the kernel source tree: + +.. code-block:: shell + + /c/opt/rtems/kernel/rtems + $ cd .. + /c/opt/rtems/kernel + $ mkdir pc686 + /c/opt/rtems/kernel + $ cd pc686 + /c/opt/rtems/kernel/pc686 + $ + +Configure the RTEMS kernel to build ``pc686`` BSP for the ``i386`` target with +networking disabled, We will build the external libBSD stack later: + +.. code-block:: shell + + /c/opt/rtems/kernel/pc686 + $ /c/opt/rtems/kernel/rtems/configure --prefix=/c/opt/rtems/4.11 \ + --target=i386-rtems4.11 --disable-networking --enable-rtemsbsp=pc686 + checking for gmake... no + checking for make... make + checking for RTEMS Version... 4.11.99.0 + checking build system type... x86_64-pc-mingw64 + checking host system type... x86_64-pc-mingw64 + checking target system type... i386-pc-rtems4.11 + checking for a BSD-compatible install... /usr/bin/install -c + checking whether build environment is sane... yes + checking for a thread-safe mkdir -p... /usr/bin/mkdir -p + checking for gawk... gawk + 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 + configure: configuring in ./tools/build + ....... + 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: i386. + available BSPs: pc686. + 'make all' will build the following BSPs: pc686. + other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."' + + config.status: creating Makefile + /c/opt/rtems/kernel/pc686 + $ + +Build the kernel: + +.. code-block:: shell + + /c/opt/rtems/kernel/pc686 + $ make + Making all in tools/build + make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' + make all-am + make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' + gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build -g -O2 -MT + cklength.o -MD -MP -MF .deps/cklength.Tpo -c -o cklength.o + /c/opt/rtems/kernel/rtems/tools/build/cklength.c + gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build -g -O2 -MT + eolstrip.o -MD -MP -MF .deps/eolstrip.Tpo -c -o eolstrip.o + /c/opt/rtems/kernel/rtems/tools/build/eolstrip.c + .......... + i386-rtems4.11-objcopy -O binary nsecs.nxe nsecs.bin + ../../../../../pc686/build-tools/bin2boot -v nsecs.ralf 0x00097E00 + ../../../../../pc686/lib/start16.bin 0x00097C00 0 nsecs.bin 0x00100000 0 + header address 0x00097e00, its memory size 0xzx + first image address 0x00097c00, its memory size 0x00000200 + second image address 0x00100000, its memory size 0x0003d800 + rm -f nsecs.nxe + make[6]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples/nsecs' + make[5]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples' + make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples' + make[4]: Entering directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' + make[4]: Nothing to be done for 'all-am'. + make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' + make[3]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' + make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686' + make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c' + make[1]: Entering directory '/c/opt/rtems/kernel/pc686' + make[1]: Nothing to be done for 'all-am'. + make[1]: Leaving directory '/c/opt/rtems/kernel/pc686' + /c/opt/rtems/kernel/pc696 + $ + +Install the kernel to our prefix: + +.. code-block:: shell + + /c/opt/rtems/kernel/pc686 + $ make install + Making install in tools/build + make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' + make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' + /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin' + /usr/bin/install -c cklength.exe eolstrip.exe packhex.exe unhex.exe + rtems-bin2c.exe '/c/opt/rtems/4.11/bin' + /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin' + /usr/bin/install -c install-if-change '/c/opt/rtems/4.11/bin' + make[2]: Nothing to be done for 'install-data-am'. + make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build' + make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build' + Making install in tools/cpu + make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' + Making install in generic + make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic' + make[3]: Entering directory '/c/opt/rtems/kernel/pc686/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 '/c/opt/rtems/kernel/pc686/tools/cpu/generic' + make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic' + make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' + make[3]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' + make[3]: Nothing to be done for 'install-exec-am'. + make[3]: Nothing to be done for 'install-data-am'. + .......... + make[2]: Entering directory '/c/opt/rtems/kernel/pc686' + make[2]: Nothing to be done for 'install-exec-am'. + /usr/bin/mkdir -p '/c/opt/rtems/4.11/make' + /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/main.cfg + /c/opt/rtems/kernel/rtems/make/leaf.cfg '/c/opt/rtems/4.11/make' + /usr/bin/mkdir -p '/c/opt/rtems/4.11/share/rtems4.11/make/Templates' + /usr/bin/install -c -m 644 + /c/opt/rtems/kernel/rtems/make/Templates/Makefile.dir + /c/opt/rtems/kernel/rtems/make/Templates/Makefile.leaf + /c/opt/rtems/kernel/rtems/make/Templates/Makefile.lib + '/c/opt/rtems/4.11/share/rtems4.11/make/Templates' + /usr/bin/mkdir -p '/c/opt/rtems/4.11/make/custom' + /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/custom/default.cfg + '/c/opt/rtems/4.11/make/custom' + make[2]: Leaving directory '/c/opt/rtems/kernel/pc686' + make[1]: Leaving directory '/c/opt/rtems/kernel/pc686' + /c/opt/rtems/kernel/pc686 + $ diff --git a/user/installation/index.rst b/user/installation/index.rst new file mode 100644 index 0000000..357fb8a --- /dev/null +++ b/user/installation/index.rst @@ -0,0 +1,47 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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 diff --git a/user/installation/prefixes-sandboxing.rst b/user/installation/prefixes-sandboxing.rst new file mode 100644 index 0000000..c797a1f --- /dev/null +++ b/user/installation/prefixes-sandboxing.rst @@ -0,0 +1,151 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. comment: All rights reserved. + +.. _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 +the internet. A **prefix** is the path on your computer a software package is +built and installed under. Packages that have a **prefix** will place all parts +under the **prefix** path. On a host computer like Linux the packages you +install from your distribution typically use a platform specific standard +**prefix**. For example on Linux it is :file:`/usr` and on FreeBSD it is +:file:`/usr/local`. + +We recommend you *DO NOT* use the standard **prefix** when installing the RTEMS +Tools. The standard **prefix** is the default **prefix** each package built by +the RSB contains. If you are building the tools when logged in as a *Standard +User* and not as the *Super User* (``root``) or *Administrator* the RTEMS +Source Builder (RSB) *will* fail and report an error if the default **prefix** +is not writable. We recommend you leave the standand **prefix** for the +packages your operating system installs or software you manually install such +as applications. + +A further reason not to use the standard **prefix** is to allow more than one +version of RTEMS to exist on your host machine at a time. The ``autoconf`` and +``automake`` tools required by RTEMS are not versioned and vary between the +various versions of RTEMS. If you use a single **prefix** such as the standard +**prefix** there is a chance parts from a package of different versions may +interact. This should not happen but it can. + +For POSIX or Unix hosts, the RTEMS Project uses :file:`/opt/rtems` as it's +standard **prefix**. We view this **prefix** as a production level path, and we +prefer to place development versions under a different **prefix** away from the +production versions. Under this top level **prefix** we place the various +versions we need for development. For example the version 4.11.0 **prefix** +would be :file:`/opt/rtems/4.11.0`. If an update called 4.11.1 is released the +**prefix** would be :file:`/opt/rtems/4.11.1`. These are recommendations and +the choice of what you use is entirely yours. You may decide to have a single +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 specific sandboxes let you have a number of projects running in +parallel with each project in its own sandbox. You simply have a +:ref:term:`prefix` per project and under that prefix you create a simple yet +repeatable structure. + +As an example lets say I have a large disk mounted under :file:`/bd` for *Big +Disk*. As ``root`` create a directory called ``projects`` and give the +directory suitable permissions to be writable by you as a user. + +Lets create a project sandbox for my *Box Sorter* project. First create a +project directory called :file:`/bd/projects/box-sorter`. Under this create +:file:`rtems` and under that create :file:`rtems-4.11.0`. Under this path you +can follow the :ref:`released-version` procedure to build a tool set using the +prefix of :file:`/bd/projects/box-sorter/rtems/4.11.0`. You are free to create +your project specific directories under :file:`/bd/projects/box-sorter`. The +top level directories would be: + +:file:`/bd/projects` + Project specific development trees. + +:file:`/bd/projects/box-sorter` + Box Sorter project sandbox. + +:file:`/bd/projects/box-sorter/rtems/4.11.0` + Project prefix for RTEMS 4.11.0 compiler, debuggers, tools and installed + Board Support Package (BSP). + +A variation is to use the ``--without-rtems`` option with the RSB to not build +the BSPs when building the tools and to build RTEMS specifically for each +project. This lets you have a production tools installed at a top level on your +disk and each project can have a specific and possibly customised version of +RTEMS. The top level directories would be: + +:file:`/bd/rtems` + The top path to production tools. + +:file:`/bd/rtems/4.11.0` + Production prefix for RTEMS 4.11.0 compiler, debuggers and tools. + +:file:`/bd/projects` + Project specific development trees. + +:file:`/bd/projects/box-sorter` + Box Sorter project sandbox. + +:file:`/bd/projects/box-sorter/rtems` + Box Sorter project's custom RTEMS kernel source and installed BSP. + +A further varation if there is an RTEMS kernel you want to share between +projects is it to move this to a top level and share. In this case you will end +up with: + +:file:`/bd/rtems` + The top path to production tools and kernels. + +:file:`/bd/rtems/4.11.0` + Production prefix for RTEMS 4.11.0. + +:file:`/bd/rtems/4.11.0/tools` + Production prefix for RTEMS 4.11.0 compiler, debuggers and tools. + +:file:`/bd/rtems/4.11.0/bsps` + Production prefix for RTEMS 4.11.0 Board Support Packages (BSPs). + +:file:`/bd/projects` + Project specific development trees. + +:file:`/bd/projects/box-sorter` + Box Sorter project sandbox. + +Finally you can have a single set of *production* tools and RTEMS BSPs on the +disk under :file:`/bd/rtems` you can share between your projects. The top level +directories would be: + +:file:`/bd/rtems` + The top path to production tools and kernels. + +:file:`/bd/rtems/4.11.0` + Production prefix for RTEMS 4.11.0 compiler, debuggers, tools and Board + Support Packages (BSPs). + +:file:`/bd/projects` + Project specific development trees. + +:file:`/bd/projects/box-sorter` + Box Sorter project sandbox. + +The project sandoxing approach allows you move a specific production part into +the project's sandbox to allow you to customise it. This is useful if you are +testing new releases. The typical dependency is the order listed above. You can +test new RTEMS kernels with production tools but new tools will require you +build the kernel with them. Release notes with each release will let know +what you need to update. + +If the machine is a central project development machine simply replace +:file:`projects` with :file:`users` and give each user a personal directory. diff --git a/user/installation/releases.rst b/user/installation/releases.rst new file mode 100644 index 0000000..ec458f2 --- /dev/null +++ b/user/installation/releases.rst @@ -0,0 +1,284 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. comment: All rights reserved. + +.. _released-version: + +Releases +-------- +.. index:: tarball +.. index:: release + +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-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 +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, 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 +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 by using the same `prefix` as the 4.11 +build. A separate `prefix` for each version avoids this. + +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 be +shosted here. It has excellent internet access and performance. + +.. note:: **Controlling the RTEMS Kernel Build** + + Building releases by default builds the RTEMS kernel. To not build the RTEMS + kernel add the ``--without-rtems`` option to the RSB command line. + + By default all the BSPs for an architecture are built. If you only wish to + have a specific BSP built you can specify the BSP list by providing to the + RSB the option ``--with-rtemsbsp``. For example to build two BSPs for the + 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 and Kernel +~~~~~~~~~~~~~~~~~~~~~~ + +This procedure will build a SPARC tool chain. Set up a suitable workspace to +build the release in. On Unix: + +.. code-block:: shell + + $ cd + $ mkdir -p development/rtems/releases + $ cd development/rtems/releases + +If building on Windows: + +.. code-block:: shell + + $ cd /c + $ mkdir -p opt/rtems + $ cd opt/rtems + +**Note** the paths on Windows will be different to those shown. + +Download the RTEMS Source Builder (RSB) from the RTEMS FTP server: + +.. code-block:: shell + + $ wget https://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-source-builder-4.11.0.tar.xz + --2016-03-21 10:50:04-- https://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-source-builder-4.11.0.tar.xz + Resolving ftp.rtems.org (ftp.rtems.org)... 140.211.10.151 + Connecting to ftp.rtems.org (ftp.rtems.org)|140.211.10.151|:443... connected. + HTTP request sent, awaiting response... 200 OK + Length: 967056 (944K) [application/x-xz] + Saving to: 'rtems-source-builder-4.11.0.tar.xz' + + rtems-source-builder-4.1 100%[====================================>] 944.39K 206KB/s in 5.5s + + 2016-03-21 10:50:11 (173 KB/s) - 'rtems-source-builder-4.11.0.tar.xz' saved [967056/967056] + +On Unix unpack the RSB release tar file using: + +.. code-block:: shell + + $ tar Jxf rtems-source-builder-4.11.0.tar.xz + $ cd rtems-source-builder-4.11.0/rtems/ + +On Windows you need to shorten the path (See :ref:`windows-path-length`) after +you have unpacked the tar file: + +.. code-block:: shell + + $ tar Jxf rtems-source-builder-4.11.0.tar.xz + $ mv rtems-source-builder-4.11.0 4.110 + $ cd 4.11.0 + +Build a tool chain for the SPARC architecure. We are using the SPARC +architecture in our example because GDB has a good simulator that lets us run +and test the samples RTEMS builds by default + +If building on Windows add ``--jobs=none`` to avoid GNU make issues on Windows +discussed in :ref:`msys2_parallel_builds`. + +.. code-block:: shell + + $ ../source-builder/sb-set-builder \ + --prefix=/opt/rtems/4.11 4.11/rtems-sparc + Build Set: 4.11/rtems-sparc + Build Set: 4.11/rtems-autotools.bset + Build Set: 4.11/rtems-autotools-internal.bset + config: tools/rtems-autoconf-2.69-1.cfg + package: autoconf-2.69-x86_64-freebsd10.1-1 + Creating source directory: sources + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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-freebsd10.1-1 + config: tools/rtems-automake-1.12.6-1.cfg + package: automake-1.12.6-x86_64-freebsd10.1-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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-freebsd10.1-1 + cleaning: autoconf-2.69-x86_64-freebsd10.1-1 + cleaning: automake-1.12.6-x86_64-freebsd10.1-1 + Build Set: Time 0:00:32.749337 + Build Set: 4.11/rtems-autotools-base.bset + config: tools/rtems-autoconf-2.69-1.cfg + package: autoconf-2.69-x86_64-freebsd10.1-1 + building: autoconf-2.69-x86_64-freebsd10.1-1 + reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-freebsd10.1-1.txt + reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-freebsd10.1-1.xml + config: tools/rtems-automake-1.12.6-1.cfg + package: automake-1.12.6-x86_64-freebsd10.1-1 + building: automake-1.12.6-x86_64-freebsd10.1-1 + reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-freebsd10.1-1.txt + reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-freebsd10.1-1.xml + installing: autoconf-2.69-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + installing: automake-1.12.6-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + cleaning: autoconf-2.69-x86_64-freebsd10.1-1 + cleaning: automake-1.12.6-x86_64-freebsd10.1-1 + Build Set: Time 0:00:15.619219 + Build Set: Time 0:00:48.371085 + config: devel/expat-2.1.0-1.cfg + package: expat-2.1.0-x86_64-freebsd10.1-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/expat-2.1.0.tar.gz -> sources/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-freebsd10.1-1 + reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-freebsd10.1-1.txt + reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-freebsd10.1-1.xml + config: tools/rtems-binutils-2.26-1.cfg + package: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/binutils-2.26.tar.bz2 -> sources/binutils-2.26.tar.bz2 + downloading: sources/binutils-2.26.tar.bz2 - 24.4MB of 24.4MB (100%) + building: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 + reporting: tools/rtems-binutils-2.26-1.cfg -> + sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1.txt + reporting: tools/rtems-binutils-2.26-1.cfg -> + sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1.xml + config: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg + package: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/gcc-4.9.3.tar.bz2 -> sources/gcc-4.9.3.tar.bz2 + downloading: sources/gcc-4.9.3.tar.bz2 - 85.8MB of 85.8MB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/newlib-2.2.0.20150423.tar.gz -> sources/newlib-2.2.0.20150423.tar.gz + downloading: sources/newlib-2.2.0.20150423.tar.gz - 16.7MB of 16.7MB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/mpfr-3.0.1.tar.bz2 -> sources/mpfr-3.0.1.tar.bz2 + downloading: sources/mpfr-3.0.1.tar.bz2 - 1.1MB of 1.1MB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/mpc-0.8.2.tar.gz -> sources/mpc-0.8.2.tar.gz + downloading: sources/mpc-0.8.2.tar.gz - 535.5kB of 535.5kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/gmp-5.0.5.tar.bz2 -> sources/gmp-5.0.5.tar.bz2 + downloading: sources/gmp-5.0.5.tar.bz2 - 2.0MB of 2.0MB (100%) + building: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 + reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> + sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1.txt + reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> + sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1.xml + config: tools/rtems-gdb-7.9-1.cfg + package: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch -> patches/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch + downloading: patches/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch - 1.9kB of 1.9kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch -> patches/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch + downloading: patches/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch - 827.0 bytes of 827.0 bytes (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch -> patches/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch + downloading: patches/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch - 2.6kB of 2.6kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch -> patches/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch + downloading: patches/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch - 4.9kB of 4.9kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch -> patches/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch + downloading: patches/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch - 871.0 bytes of 871.0 bytes (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch -> patches/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch + downloading: patches/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch - 5.6kB of 5.6kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch -> patches/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch + downloading: patches/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch - 1.0kB of 1.0kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch -> patches/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch + downloading: patches/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch - 3.6kB of 3.6kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch -> patches/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch + downloading: patches/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch - 1.9kB of 1.9kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch -> patches/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch + downloading: patches/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch - 16.0kB of 16.0kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch -> patches/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch + downloading: patches/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch - 14.8kB of 14.8kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch -> patches/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch + downloading: patches/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch - 3.8kB of 3.8kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0013-sim-erc32-Fix-a-few-compiler-warnings.patch-> patches/0013-sim-erc32-Fix-a-few-compiler-warnings.patch + downloading: patches/0013-sim-erc32-Fix-a-few-compiler-warnings.patch - 2.2kB of 2.2kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch -> patches/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch + downloading: patches/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch - 9.2kB of 9.2kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch -> patches/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch + downloading: patches/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch - 22.9kB of 22.9kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch -> patches/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch + downloading: patches/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch - 1.5kB of 1.5kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch -> patches/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch + downloading: patches/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch - 5.8kB of 5.8kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch -> patches/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch + downloading: patches/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch - 66.7kB of 66.7kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch -> patches/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch + downloading: patches/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch - 26.1kB of 26.1kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0020-sim-erc32-Updated-documentation.patch -> patches/0020-sim-erc32-Updated-documentation.patch + downloading: patches/0020-sim-erc32-Updated-documentation.patch - 16.1kB of 16.1kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0021-sim-erc32-Add-data-watchpoint-support.patch -> patches/0021-sim-erc32-Add-data-watchpoint-support.patch + downloading: patches/0021-sim-erc32-Add-data-watchpoint-support.patch - 10.1kB of 10.1kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch -> patches/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch + downloading: patches/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch - 25.5kB of 25.5kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch -> patches/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch + downloading: patches/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch - 1.3kB of 1.3kB (100%) + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/patch-gdb-python-python-config.py -> patches/patch-gdb-python-python-config.py + downloading: patches/patch-gdb-python-python-config.py - 449.0 bytes of 449.0 bytes (100%) + building: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 + reporting: tools/rtems-gdb-7.9-1.cfg -> + sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1.txt + reporting: tools/rtems-gdb-7.9-1.cfg -> + sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1.xml + config: tools/rtems-tools-4.11-1.cfg + package: rtems-tools-4.11.0-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-tools-4.11.0.tar.xz -> sources/rtems-tools-4.11.0.tar.xz + downloading: sources/rtems-tools-4.11.0.tar.xz - 1.6MB of 1.6MB (100%) + building: rtems-tools-4.11.0-1 + reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11.0-1.txt + reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11.0-1.xml + config: tools/rtems-kernel-4.11.cfg + package: sparc-rtems4.11-kernel-4.11.0-1 + download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-4.11.0.tar.xz -> sources/rtems-4.11.0.tar.xz + downloading: sources/rtems-4.11.0.tar.xz - 9.3MB of 9.3MB (100%) + building: sparc-rtems4.11-kernel-4.11.0-1 + reporting: tools/rtems-kernel-4.11.cfg -> sparc-rtems4.11-kernel-4.11.0-1.txt + reporting: tools/rtems-kernel-4.11.cfg -> sparc-rtems4.11-kernel-4.11.0-1.xml + installing: expat-2.1.0-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + installing: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + installing: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + installing: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 + installing: rtems-tools-4.11.0-1 -> /opt/work/rtems/4.11.0 + installing: sparc-rtems4.11-kernel-4.11.0-1 -> /opt/work/rtems/4.11.0 + cleaning: expat-2.1.0-x86_64-freebsd10.1-1 + cleaning: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 + cleaning: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 + cleaning: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 + 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. diff --git a/user/overview/index.rst b/user/overview/index.rst index 137c734..a8cfc32 100644 --- a/user/overview/index.rst +++ b/user/overview/index.rst @@ -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. diff --git a/user/start/basics.rst b/user/start/basics.rst deleted file mode 100644 index e1e9ce9..0000000 --- a/user/start/basics.rst +++ /dev/null @@ -1,149 +0,0 @@ -.. comment SPDX-License-Identifier: CC-BY-SA-4.0 - -.. comment: Copyright (c) 2016 Chris Johns -.. comment: All rights reserved. - -.. _prefixes: - -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 -the internet. A **prefix** is the path on your computer a software package is -built and installed under. Packages that have a **prefix** will place all parts -under the **prefix** path. On a host computer like Linux the packages you -install from your distribution typically use a platform specific standard -**prefix**. For example on Linux it is :file:`/usr` and on FreeBSD it is -:file:`/usr/local`. - -We recommend you *DO NOT* use the standard **prefix** when installing the RTEMS -Tools. The standard **prefix** is the default **prefix** each package built by -the RSB contains. If you are building the tools when logged in as a *Standard -User* and not as the *Super User* (``root``) or *Administrator* the RTEMS -Source Builder (RSB) *will* fail and report an error if the default **prefix** -is not writable. We recommend you leave the standand **prefix** for the -packages your operating system installs or software you manually install such -as applications. - -A further reason not to use the standard **prefix** is to allow more than one -version of RTEMS to exist on your host machine at a time. The ``autoconf`` and -``automake`` tools required by RTEMS are not versioned and vary between the -various versions of RTEMS. If you use a single **prefix** such as the standard -**prefix** there is a chance parts from a package of different versions may -interact. This should not happen but it can. - -For POSIX or Unix hosts, the RTEMS Project uses :file:`/opt/rtems` as it's -standard **prefix**. We view this **prefix** as a production level path, and we -prefer to place development versions under a different **prefix** away from the -production versions. Under this top level **prefix** we place the various -versions we need for development. For example the version 4.11.0 **prefix** -would be :file:`/opt/rtems/4.11.0`. If an update called 4.11.1 is released the -**prefix** would be :file:`/opt/rtems/4.11.1`. These are recommendations and -the choice of what you use is entirely yours. You may decide to have a single -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 specific sandboxes let you have a number of projects running in -parallel with each project in its own sandbox. You simply have a -:ref:term:`prefix` per project and under that prefix you create a simple yet -repeatable structure. - -As an example lets say I have a large disk mounted under :file:`/bd` for *Big -Disk*. As ``root`` create a directory called ``projects`` and give the -directory suitable permissions to be writable by you as a user. - -Lets create a project sandbox for my *Box Sorter* project. First create a -project directory called :file:`/bd/projects/box-sorter`. Under this create -:file:`rtems` and under that create :file:`rtems-4.11.0`. Under this path you -can follow the :ref:`released-version` procedure to build a tool set using the -prefix of :file:`/bd/projects/box-sorter/rtems/4.11.0`. You are free to create -your project specific directories under :file:`/bd/projects/box-sorter`. The -top level directories would be: - -:file:`/bd/projects` - Project specific development trees. - -:file:`/bd/projects/box-sorter` - Box Sorter project sandbox. - -:file:`/bd/projects/box-sorter/rtems/4.11.0` - Project prefix for RTEMS 4.11.0 compiler, debuggers, tools and installed - Board Support Package (BSP). - -A variation is to use the ``--without-rtems`` option with the RSB to not build -the BSPs when building the tools and to build RTEMS specifically for each -project. This lets you have a production tools installed at a top level on your -disk and each project can have a specific and possibly customised version of -RTEMS. The top level directories would be: - -:file:`/bd/rtems` - The top path to production tools. - -:file:`/bd/rtems/4.11.0` - Production prefix for RTEMS 4.11.0 compiler, debuggers and tools. - -:file:`/bd/projects` - Project specific development trees. - -:file:`/bd/projects/box-sorter` - Box Sorter project sandbox. - -:file:`/bd/projects/box-sorter/rtems` - Box Sorter project's custom RTEMS kernel source and installed BSP. - -A further varation if there is an RTEMS kernel you want to share between -projects is it to move this to a top level and share. In this case you will end -up with: - -:file:`/bd/rtems` - The top path to production tools and kernels. - -:file:`/bd/rtems/4.11.0` - Production prefix for RTEMS 4.11.0. - -:file:`/bd/rtems/4.11.0/tools` - Production prefix for RTEMS 4.11.0 compiler, debuggers and tools. - -:file:`/bd/rtems/4.11.0/bsps` - Production prefix for RTEMS 4.11.0 Board Support Packages (BSPs). - -:file:`/bd/projects` - Project specific development trees. - -:file:`/bd/projects/box-sorter` - Box Sorter project sandbox. - -Finally you can have a single set of *production* tools and RTEMS BSPs on the -disk under :file:`/bd/rtems` you can share between your projects. The top level -directories would be: - -:file:`/bd/rtems` - The top path to production tools and kernels. - -:file:`/bd/rtems/4.11.0` - Production prefix for RTEMS 4.11.0 compiler, debuggers, tools and Board - Support Packages (BSPs). - -:file:`/bd/projects` - Project specific development trees. - -:file:`/bd/projects/box-sorter` - Box Sorter project sandbox. - -The project sandoxing approach allows you move a specific production part into -the project's sandbox to allow you to customise it. This is useful if you are -testing new releases. The typical dependency is the order listed above. You can -test new RTEMS kernels with production tools but new tools will require you -build the kernel with them. Release notes with each release will let know -what you need to update. - -If the machine is a central project development machine simply replace -:file:`projects` with :file:`users` and give each user a personal directory. diff --git a/user/start/depend.rst b/user/start/depend.rst deleted file mode 100644 index 73c54f6..0000000 --- a/user/start/depend.rst +++ /dev/null @@ -1,490 +0,0 @@ -.. comment SPDX-License-Identifier: CC-BY-SA-4.0 - -.. comment: Copyright (c) 2016 Chris Johns -.. 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 -compilers and debuggers and we use the simulators that come with GDB and -QEMU. The Windows support for these tools varies and the RTEMS Project is -committed to helping the open source community improve the Windows -experience. If something is not working or supported please email the -:r:list:`users`. - -The RTEMS Project's Windows tools are native Windows executables giving the -user the best possible experience on Windows. Native Windows programs use the -standard Windows DLLs and paths. Integration with standard Windows integrated -development tools such as editors is straight forward. POSIX emulation -environments such as Cygwin and the MSYS2 shell have special executables that -require a POSIX emulation DLL and these emulation DLLs add an extra layer of -complexity as well as a performance over-head. The RTEMS Project uses these -POSIX emulation shells to run configure scripts that come with various open -source packages such as `gcc` so they form an important and valued part of the -environment we describe here. The output of this procedure forms the tools you -use during your application development and they do not depend on the emulation -DLLs. - -The performance of the compiler is as good as you can have on Windows and the -performance compiling a single file will be similar to that on a host like -Linux or FreeBSD given the same hardware. Building the tools from source is -much slower on Windows because POSIX shells and related tools are used and the -POSIX emulation overhead it much much slower than a native POSIX operating -system like Linux and FreeBSD. This overhead is only during the building of the -tools and the RTEMS kernel and if you use a suitable build system that is -native to Windows your application development should be similar to other -operating systems. - -Building is known to work on `Windows 7 64bit Professional` and `Windows 10`. - -.. _windows-path-length: - -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 -characters. This can effect some of the tools used by RTEMS. It is recommended -you keep the top level directories as short as possible when building the RTEMS -tools and you should also keep an eye on the path length when developing your -application. The RTEMS built tools can handle much longer path lengths however -some of the GNU tools such as those in the ``binutils`` package cannot. - -The release packages of the RSB when unpacked have top level file names that -are too big to build RTEMS. You need to change or rename that path to something -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 -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 -or MSYS2. This document focuses on MSYS2. It is smaller than Cygwin and comes -with the Arch Linux package manager ``pacman``. - -MSYS2 provides MinGW64 support as well as a POSIX shell called MSYS2. The -MinGW64 compiler and related tools produce 64bit native Windows -executables. The shell is a standard Bourne shell and the MSYS2 environment is -a stripped Cygwin shell with enough support to run the various ``configure`` -scripts needed to build the RTEMS tools and the RTEMS kernel. - -MSYS2 is built around the ``pacman`` packaging tool. This makes MSYS2 a -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 -support. This places specific demands on the Python we need installed and -available and MSYS2 provides suitable Python versions we can use. You need to -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 -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 -suitables libraries and we have to have Python version 2 because on Windows GDB -only builds with Python2. - -You also need to install the MSYS version of Python along with the MinGW64 -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. - -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 -support. Run the installer following the 7 steps listed on the page. - -MSYS2 uses the ``pacman`` package manager. The Arch Linux project has detailed -documentation on how to use ``pacman``. What is shown here is a just few -examples of what you can do. - -.. sidebar:: **Pin MSYS2 Shell to Taskbar** - - Pin the MSYS2 64bit Shell to the Taskbar so you always use it rather than the - 32bit Shell. - -Open a 64bit MSYS shell from the Start Menu: - -.. figure:: ../../images/msys2-minw64-start-menu.png - :width: 50% - :align: center - :alt: MSYS2 64bit Shell Start Menu - -The packages we require are: - -* python -* mingw-w64-x86_64-python2 -* mingw-w64-x86_64-gcc -* git -* bison -* cvs -* diffutils -* make -* patch -* tar -* texinfo -* unzip - -.. note:: - -The actual output provided may vary due to changes in the dependent packages or -newer package versions. - -Install the packages using ``pacman``: - -.. code-block:: shell - - ~ - $ pacman -S python mingw-w64-x86_64-python2 mingw-w64-x86_64-gcc \ - bison cvs diffutils git make patch tar texinfo unzip - resolving dependencies... - looking for conflicting packages... - - Packages (74) db-5.3.28-2 expat-2.1.0-2 gdbm-1.11-3 heimdal-1.5.3-8 - libgdbm-1.11-3 mingw-w64-x86_64-binutils-2.26-21 - mingw-w64-x86_64-bzip2-1.0.6-5 - mingw-w64-x86_64-ca-certificates-20150426-2 - mingw-w64-x86_64-crt-git-5.0.0.4627.03684c4-1 - mingw-w64-x86_64-expat-2.1.0-6 mingw-w64-x86_64-gcc-libs-5.3.0-2 - mingw-w64-x86_64-gdbm-1.11-3 mingw-w64-x86_64-gettext-0.19.6-2 - mingw-w64-x86_64-gmp-6.1.0-1 - mingw-w64-x86_64-headers-git-5.0.0.4627.53be55d-1 - mingw-w64-x86_64-isl-0.15-1 mingw-w64-x86_64-libffi-3.2.1-3 - mingw-w64-x86_64-libiconv-1.14-5 - mingw-w64-x86_64-libsystre-1.0.1-2 - mingw-w64-x86_64-libtasn1-4.7-1 - mingw-w64-x86_64-libtre-git-r122.c2f5d13-4 - mingw-w64-x86_64-libwinpthread-git-5.0.0.4573.628fdbf-1 - mingw-w64-x86_64-mpc-1.0.3-2 mingw-w64-x86_64-mpfr-3.1.3.p0-2 - mingw-w64-x86_64-ncurses-6.0.20160220-2 - mingw-w64-x86_64-openssl-1.0.2.g-1 - mingw-w64-x86_64-p11-kit-0.23.1-3 - mingw-w64-x86_64-readline-6.3.008-1 mingw-w64-x86_64-tcl-8.6.5-1 - mingw-w64-x86_64-termcap-1.3.1-2 mingw-w64-x86_64-tk-8.6.5-1 - mingw-w64-x86_64-windows-default-manifest-6.4-2 - mingw-w64-x86_64-winpthreads-git-5.0.0.4573.628fdbf-1 - mingw-w64-x86_64-zlib-1.2.8-9 openssh-7.1p2-1 perl-5.22.0-2 - perl-Authen-SASL-2.16-2 perl-Convert-BinHex-1.123-2 - perl-Encode-Locale-1.04-1 perl-Error-0.17024-1 - perl-File-Listing-6.04-2 perl-HTML-Parser-3.71-3 - perl-HTML-Tagset-3.20-2 perl-HTTP-Cookies-6.01-2 - perl-HTTP-Daemon-6.01-2 perl-HTTP-Date-6.02-2 - perl-HTTP-Message-6.06-2 perl-HTTP-Negotiate-6.01-2 - perl-IO-Socket-SSL-2.016-1 perl-IO-stringy-2.111-1 - perl-LWP-MediaTypes-6.02-2 perl-MIME-tools-5.506-1 - perl-MailTools-2.14-1 perl-Net-HTTP-6.09-1 - perl-Net-SMTP-SSL-1.02-1 perl-Net-SSLeay-1.70-1 - perl-TermReadKey-2.33-1 perl-TimeDate-2.30-2 perl-URI-1.68-1 - perl-WWW-RobotRules-6.02-2 perl-libwww-6.13-1 vim-7.4.1468-1 - bison-3.0.4-1 cvs-1.11.23-2 diffutils-3.3-3 git-2.7.2-1 - make-4.1-4 mingw-w64-x86_64-gcc-5.3.0-2 - mingw-w64-x86_64-python2-2.7.11-4 patch-2.7.5-1 python-3.4.3-3 - tar-1.28-3 texinfo-6.0-1 unzip-6.0-2 - - Total Download Size: 114.10 MiB - Total Installed Size: 689.61 MiB - - :: Proceed with installation? [Y/n] y - :: Retrieving packages... - mingw-w64-x86_64-gm... 477.1 KiB 681K/s 00:01 [#####################] 100% - mingw-w64-x86_64-li... 24.2 KiB 755K/s 00:00 [#####################] 100% - mingw-w64-x86_64-gc... 541.9 KiB 705K/s 00:01 [#####################] 100% - mingw-w64-x86_64-ex... 106.7 KiB 702K/s 00:00 [#####################] 100% - mingw-w64-x86_64-bz... 77.9 KiB 666K/s 00:00 [#####################] 100% - mingw-w64-x86_64-li... 600.2 KiB 703K/s 00:01 [#####################] 100% - mingw-w64-x86_64-ge... 3.0 MiB 700K/s 00:04 [#####################] 100% - mingw-w64-x86_64-gd... 151.8 KiB 483K/s 00:00 [#####################] 100% - mingw-w64-x86_64-li... 34.5 KiB 705K/s 00:00 [#####################] 100% - mingw-w64-x86_64-li... 69.2 KiB 713K/s 00:00 [#####################] 100% - mingw-w64-x86_64-li... 9.3 KiB 778K/s 00:00 [#####################] 100% - mingw-w64-x86_64-nc... 1800.5 KiB 701K/s 00:03 [#####################] 100% - mingw-w64-x86_64-li... 171.4 KiB 708K/s 00:00 [#####################] 100% - mingw-w64-x86_64-p1... 193.5 KiB 709K/s 00:00 [#####################] 100% - mingw-w64-x86_64-ca... 382.1 KiB 705K/s 00:01 [#####################] 100% - mingw-w64-x86_64-zl... 148.6 KiB 704K/s 00:00 [#####################] 100% - mingw-w64-x86_64-op... 3.3 MiB 624K/s 00:05 [#####################] 100% - mingw-w64-x86_64-te... 12.6 KiB 76.7K/s 00:00 [#####################] 100% - mingw-w64-x86_64-re... 327.4 KiB 277K/s 00:01 [#####################] 100% - mingw-w64-x86_64-tc... 2.9 MiB 699K/s 00:04 [#####################] 100% - mingw-w64-x86_64-tk... 1869.2 KiB 703K/s 00:03 [#####################] 100% - mingw-w64-x86_64-py... 10.9 MiB 699K/s 00:16 [#####################] 100% - mingw-w64-x86_64-bi... 12.7 MiB 688K/s 00:19 [#####################] 100% - mingw-w64-x86_64-he... 5.0 MiB 645K/s 00:08 [#####################] 100% - mingw-w64-x86_64-cr... 2.6 MiB 701K/s 00:04 [#####################] 100% - mingw-w64-x86_64-is... 524.3 KiB 684K/s 00:01 [#####################] 100% - mingw-w64-x86_64-mp... 265.2 KiB 705K/s 00:00 [#####################] 100% - mingw-w64-x86_64-mp... 62.3 KiB 82.9K/s 00:01 [#####################] 100% - mingw-w64-x86_64-wi... 1484.0 B 0.00B/s 00:00 [#####################] 100% - mingw-w64-x86_64-wi... 33.2 KiB 346K/s 00:00 [#####################] 100% - mingw-w64-x86_64-gc... 25.1 MiB 701K/s 00:37 [#####################] 100% - python-3.4.3-3-x86_64 12.1 MiB 700K/s 00:18 [#####################] 100% - bison-3.0.4-1-x86_64 1045.1 KiB 703K/s 00:01 [#####################] 100% - heimdal-1.5.3-8-x86_64 543.7 KiB 703K/s 00:01 [#####################] 100% - cvs-1.11.23-2-x86_64 508.2 KiB 388K/s 00:01 [#####################] 100% - diffutils-3.3-3-x86_64 265.7 KiB 478K/s 00:01 [#####################] 100% - expat-2.1.0-2-x86_64 13.1 KiB 817K/s 00:00 [#####################] 100% - vim-7.4.1468-1-x86_64 6.1 MiB 700K/s 00:09 [#####################] 100% - openssh-7.1p2-1-x86_64 653.4 KiB 703K/s 00:01 [#####################] 100% - db-5.3.28-2-x86_64 41.7 KiB 719K/s 00:00 [#####################] 100% - libgdbm-1.11-3-x86_64 20.4 KiB 754K/s 00:00 [#####################] 100% - gdbm-1.11-3-x86_64 108.5 KiB 704K/s 00:00 [#####################] 100% - perl-5.22.0-2-x86_64 12.4 MiB 702K/s 00:18 [#####################] 100% - perl-Error-0.17024-... 17.1 KiB 742K/s 00:00 [#####################] 100% - perl-Authen-SASL-2.... 42.4 KiB 731K/s 00:00 [#####################] 100% - perl-Encode-Locale-... 9.7 KiB 745K/s 00:00 [#####################] 100% - perl-HTTP-Date-6.02... 8.6 KiB 784K/s 00:00 [#####################] 100% - perl-File-Listing-6... 7.7 KiB 769K/s 00:00 [#####################] 100% - perl-HTML-Tagset-3.... 10.3 KiB 732K/s 00:00 [#####################] 100% - perl-HTML-Parser-3.... 76.9 KiB 516K/s 00:00 [#####################] 100% - perl-LWP-MediaTypes... 18.0 KiB 752K/s 00:00 [#####################] 100% - perl-URI-1.68-1-any 75.6 KiB 609K/s 00:00 [#####################] 100% - perl-HTTP-Message-6... 71.3 KiB 625K/s 00:00 [#####################] 100% - perl-HTTP-Cookies-6... 20.4 KiB 499K/s 00:00 [#####################] 100% - perl-HTTP-Daemon-6.... 14.2 KiB 749K/s 00:00 [#####################] 100% - perl-HTTP-Negotiate... 11.4 KiB 817K/s 00:00 [#####################] 100% - perl-Net-HTTP-6.09-... 19.8 KiB 732K/s 00:00 [#####################] 100% - perl-WWW-RobotRules... 12.2 KiB 766K/s 00:00 [#####################] 100% - perl-libwww-6.13-1-any 122.2 KiB 661K/s 00:00 [#####################] 100% - perl-TimeDate-2.30-... 35.9 KiB 718K/s 00:00 [#####################] 100% - perl-MailTools-2.14... 58.4 KiB 712K/s 00:00 [#####################] 100% - perl-IO-stringy-2.1... 52.6 KiB 721K/s 00:00 [#####################] 100% - perl-Convert-BinHex... 30.1 KiB 733K/s 00:00 [#####################] 100% - perl-MIME-tools-5.5... 180.4 KiB 705K/s 00:00 [#####################] 100% - perl-Net-SSLeay-1.7... 191.2 KiB 708K/s 00:00 [#####################] 100% - perl-IO-Socket-SSL-... 112.5 KiB 703K/s 00:00 [#####################] 100% - perl-Net-SMTP-SSL-1... 3.5 KiB 881K/s 00:00 [#####################] 100% - perl-TermReadKey-2.... 20.9 KiB 745K/s 00:00 [#####################] 100% - git-2.7.2-1-x86_64 3.6 MiB 702K/s 00:05 [#####################] 100% - make-4.1-4-x86_64 387.0 KiB 671K/s 00:01 [#####################] 100% - patch-2.7.5-1-x86_64 75.9 KiB 684K/s 00:00 [#####################] 100% - tar-1.28-3-x86_64 671.9 KiB 379K/s 00:02 [#####################] 100% - texinfo-6.0-1-x86_64 992.7 KiB 625K/s 00:02 [#####################] 100% - unzip-6.0-2-x86_64 93.1 KiB 705K/s 00:00 [#####################] 100% - (74/74) checking keys in keyring [#####################] 100% - (74/74) checking package integrity [#####################] 100% - (74/74) loading package files [#####################] 100% - (74/74) checking for file conflicts [#####################] 100% - (74/74) checking available disk space [#####################] 100% - :: Processing package changes... - ( 1/74) installing python [#####################] 100% - ( 2/74) installing mingw-w64-x86_64-gmp [#####################] 100% - ( 3/74) installing mingw-w64-x86_64-libwinpthr... [#####################] 100% - ( 4/74) installing mingw-w64-x86_64-gcc-libs [#####################] 100% - ( 5/74) installing mingw-w64-x86_64-expat [#####################] 100% - ( 6/74) installing mingw-w64-x86_64-bzip2 [#####################] 100% - ( 7/74) installing mingw-w64-x86_64-libiconv [#####################] 100% - ( 8/74) installing mingw-w64-x86_64-gettext [#####################] 100% - ( 9/74) installing mingw-w64-x86_64-gdbm [#####################] 100% - (10/74) installing mingw-w64-x86_64-libffi [#####################] 100% - (11/74) installing mingw-w64-x86_64-libtre-git [#####################] 100% - (12/74) installing mingw-w64-x86_64-libsystre [#####################] 100% - (13/74) installing mingw-w64-x86_64-ncurses [#####################] 100% - (14/74) installing mingw-w64-x86_64-libtasn1 [#####################] 100% - (15/74) installing mingw-w64-x86_64-p11-kit [#####################] 100% - (16/74) installing mingw-w64-x86_64-ca-certifi... [#####################] 100% - (17/74) installing mingw-w64-x86_64-zlib [#####################] 100% - (18/74) installing mingw-w64-x86_64-openssl [#####################] 100% - (19/74) installing mingw-w64-x86_64-termcap [#####################] 100% - (20/74) installing mingw-w64-x86_64-readline [#####################] 100% - (21/74) installing mingw-w64-x86_64-tcl [#####################] 100% - (22/74) installing mingw-w64-x86_64-tk [#####################] 100% - (23/74) installing mingw-w64-x86_64-python2 [#####################] 100% - (24/74) installing mingw-w64-x86_64-binutils [#####################] 100% - (25/74) installing mingw-w64-x86_64-headers-git [#####################] 100% - (26/74) installing mingw-w64-x86_64-crt-git [#####################] 100% - (27/74) installing mingw-w64-x86_64-isl [#####################] 100% - (28/74) installing mingw-w64-x86_64-mpfr [#####################] 100% - (29/74) installing mingw-w64-x86_64-mpc [#####################] 100% - (30/74) installing mingw-w64-x86_64-windows-de... [#####################] 100% - (31/74) installing mingw-w64-x86_64-winpthread... [#####################] 100% - (32/74) installing mingw-w64-x86_64-gcc [#####################] 100% - (33/74) installing bison [#####################] 100% - (34/74) installing heimdal [#####################] 100% - (35/74) installing cvs [#####################] 100% - (36/74) installing diffutils [#####################] 100% - (37/74) installing expat [#####################] 100% - (38/74) installing vim [#####################] 100% - (39/74) installing openssh [#####################] 100% - (40/74) installing db [#####################] 100% - (41/74) installing libgdbm [#####################] 100% - (42/74) installing gdbm [#####################] 100% - (43/74) installing perl [#####################] 100% - (44/74) installing perl-Error [#####################] 100% - (45/74) installing perl-Authen-SASL [#####################] 100% - (46/74) installing perl-Encode-Locale [#####################] 100% - (47/74) installing perl-HTTP-Date [#####################] 100% - (48/74) installing perl-File-Listing [#####################] 100% - (49/74) installing perl-HTML-Tagset [#####################] 100% - (50/74) installing perl-HTML-Parser [#####################] 100% - (51/74) installing perl-LWP-MediaTypes [#####################] 100% - (52/74) installing perl-URI [#####################] 100% - (53/74) installing perl-HTTP-Message [#####################] 100% - (54/74) installing perl-HTTP-Cookies [#####################] 100% - (55/74) installing perl-HTTP-Daemon [#####################] 100% - (56/74) installing perl-HTTP-Negotiate [#####################] 100% - (57/74) installing perl-Net-HTTP [#####################] 100% - (58/74) installing perl-WWW-RobotRules [#####################] 100% - (59/74) installing perl-libwww [#####################] 100% - Optional dependencies for perl-libwww - perl-LWP-Protocol-HTTPS: for https:// url schemes - (60/74) installing perl-TimeDate [#####################] 100% - (61/74) installing perl-MailTools [#####################] 100% - (62/74) installing perl-IO-stringy [#####################] 100% - (63/74) installing perl-Convert-BinHex [#####################] 100% - module test... pass. - (64/74) installing perl-MIME-tools [#####################] 100% - (65/74) installing perl-Net-SSLeay [#####################] 100% - (66/74) installing perl-IO-Socket-SSL [#####################] 100% - (67/74) installing perl-Net-SMTP-SSL [#####################] 100% - (68/74) installing perl-TermReadKey [#####################] 100% - (69/74) installing git [#####################] 100% - Optional dependencies for git - python2: various helper scripts - subversion: git svn - (70/74) installing make [#####################] 100% - (71/74) installing patch [#####################] 100% - Optional dependencies for patch - ed: for patch -e functionality - (72/74) installing tar [#####################] 100% - (73/74) installing texinfo [#####################] 100% - (74/74) installing unzip [#####################] 100% diff --git a/user/start/development.rst b/user/start/development.rst deleted file mode 100644 index fd60354..0000000 --- a/user/start/development.rst +++ /dev/null @@ -1,609 +0,0 @@ -.. comment SPDX-License-Identifier: CC-BY-SA-4.0 - -.. comment: Copyright (c) 2016 Chris Johns -.. 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 ..." to update what will be committed) - (use "git checkout -- ..." 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 - # - # 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 - - -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. diff --git a/user/start/index.rst b/user/start/index.rst index d1b5d12..98fcf7b 100644 --- a/user/start/index.rst +++ b/user/start/index.rst @@ -3,17 +3,73 @@ .. comment: Copyright (c) 2016 Chris Johns .. comment: All rights reserved. -=============== -Getting Started -=============== - -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. - -.. include:: basics.rst -.. include:: depend.rst -.. include:: installation.rst -.. include:: releases.rst -.. include:: development.rst -.. include:: windows.rst +Quick Start +============ + +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. + +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. diff --git a/user/start/quick.rst b/user/start/quick.rst new file mode 100644 index 0000000..47597af --- /dev/null +++ b/user/start/quick.rst @@ -0,0 +1,68 @@ +.. comment SPDX-License-Identifier: CC-BY-SA-4.0 + +.. comment: Copyright (c) 2016 Chris Johns +.. 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. diff --git a/user/start/releases.rst b/user/start/releases.rst deleted file mode 100644 index 9f2ebb9..0000000 --- a/user/start/releases.rst +++ /dev/null @@ -1,284 +0,0 @@ -.. comment SPDX-License-Identifier: CC-BY-SA-4.0 - -.. comment: Copyright (c) 2016 Chris Johns -.. comment: All rights reserved. - -.. _released-version: - -Released Version -================ -.. index:: tarball -.. index:: release - -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. - -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 -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. - -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 -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 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. - -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. - -.. note:: **Controlling the RTEMS Kernel Build** - - Building releases by default builds the RTEMS kernel. To not build the RTEMS - kernel add the ``--without-rtems`` option to the RSB command line. - - By default all the BSPs for an architecture are built. If you only wish to - have a specific BSP built you can specify the BSP list by providing to the - RSB the option ``--with-rtemsbsp``. For example to build two BSPs for the - 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 ------------------ - -This procedure will build a SPARC tool chain. Set up a suitable workspace to -build the release in. On Unix: - -.. code-block:: shell - - $ cd - $ mkdir -p development/rtems/releases - $ cd development/rtems/releases - -If building on Windows: - -.. code-block:: shell - - $ cd /c - $ mkdir -p opt/rtems - $ cd opt/rtems - -**Note** the paths on Windows will be different to those shown. - -Download the RTEMS Source Builder (RSB) from the RTEMS FTP server: - -.. code-block:: shell - - $ wget https://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-source-builder-4.11.0.tar.xz - --2016-03-21 10:50:04-- https://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-source-builder-4.11.0.tar.xz - Resolving ftp.rtems.org (ftp.rtems.org)... 140.211.10.151 - Connecting to ftp.rtems.org (ftp.rtems.org)|140.211.10.151|:443... connected. - HTTP request sent, awaiting response... 200 OK - Length: 967056 (944K) [application/x-xz] - Saving to: 'rtems-source-builder-4.11.0.tar.xz' - - rtems-source-builder-4.1 100%[====================================>] 944.39K 206KB/s in 5.5s - - 2016-03-21 10:50:11 (173 KB/s) - 'rtems-source-builder-4.11.0.tar.xz' saved [967056/967056] - -On Unix unpack the RSB release tar file using: - -.. code-block:: shell - - $ tar Jxf rtems-source-builder-4.11.0.tar.xz - $ cd rtems-source-builder-4.11.0/rtems/ - -On Windows you need to shorten the path (See :ref:`windows-path-length`) after -you have unpacked the tar file: - -.. code-block:: shell - - $ tar Jxf rtems-source-builder-4.11.0.tar.xz - $ mv rtems-source-builder-4.11.0 4.110 - $ cd 4.11.0 - -Build a tool chain for the SPARC architecure. We are using the SPARC -architecture in our example because GDB has a good simulator that lets us run -and test the samples RTEMS builds by default - -If building on Windows add ``--jobs=none`` to avoid GNU make issues on Windows -discussed in :ref:`msys2_parallel_builds`. - -.. code-block:: shell - - $ ../source-builder/sb-set-builder \ - --prefix=/opt/rtems/4.11 4.11/rtems-sparc - Build Set: 4.11/rtems-sparc - Build Set: 4.11/rtems-autotools.bset - Build Set: 4.11/rtems-autotools-internal.bset - config: tools/rtems-autoconf-2.69-1.cfg - package: autoconf-2.69-x86_64-freebsd10.1-1 - Creating source directory: sources - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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-freebsd10.1-1 - config: tools/rtems-automake-1.12.6-1.cfg - package: automake-1.12.6-x86_64-freebsd10.1-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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-freebsd10.1-1 - cleaning: autoconf-2.69-x86_64-freebsd10.1-1 - cleaning: automake-1.12.6-x86_64-freebsd10.1-1 - Build Set: Time 0:00:32.749337 - Build Set: 4.11/rtems-autotools-base.bset - config: tools/rtems-autoconf-2.69-1.cfg - package: autoconf-2.69-x86_64-freebsd10.1-1 - building: autoconf-2.69-x86_64-freebsd10.1-1 - reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-freebsd10.1-1.txt - reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-freebsd10.1-1.xml - config: tools/rtems-automake-1.12.6-1.cfg - package: automake-1.12.6-x86_64-freebsd10.1-1 - building: automake-1.12.6-x86_64-freebsd10.1-1 - reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-freebsd10.1-1.txt - reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-freebsd10.1-1.xml - installing: autoconf-2.69-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - installing: automake-1.12.6-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - cleaning: autoconf-2.69-x86_64-freebsd10.1-1 - cleaning: automake-1.12.6-x86_64-freebsd10.1-1 - Build Set: Time 0:00:15.619219 - Build Set: Time 0:00:48.371085 - config: devel/expat-2.1.0-1.cfg - package: expat-2.1.0-x86_64-freebsd10.1-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/expat-2.1.0.tar.gz -> sources/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-freebsd10.1-1 - reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-freebsd10.1-1.txt - reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-freebsd10.1-1.xml - config: tools/rtems-binutils-2.26-1.cfg - package: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/binutils-2.26.tar.bz2 -> sources/binutils-2.26.tar.bz2 - downloading: sources/binutils-2.26.tar.bz2 - 24.4MB of 24.4MB (100%) - building: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 - reporting: tools/rtems-binutils-2.26-1.cfg -> - sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1.txt - reporting: tools/rtems-binutils-2.26-1.cfg -> - sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1.xml - config: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg - package: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/gcc-4.9.3.tar.bz2 -> sources/gcc-4.9.3.tar.bz2 - downloading: sources/gcc-4.9.3.tar.bz2 - 85.8MB of 85.8MB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/newlib-2.2.0.20150423.tar.gz -> sources/newlib-2.2.0.20150423.tar.gz - downloading: sources/newlib-2.2.0.20150423.tar.gz - 16.7MB of 16.7MB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/mpfr-3.0.1.tar.bz2 -> sources/mpfr-3.0.1.tar.bz2 - downloading: sources/mpfr-3.0.1.tar.bz2 - 1.1MB of 1.1MB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/mpc-0.8.2.tar.gz -> sources/mpc-0.8.2.tar.gz - downloading: sources/mpc-0.8.2.tar.gz - 535.5kB of 535.5kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/gmp-5.0.5.tar.bz2 -> sources/gmp-5.0.5.tar.bz2 - downloading: sources/gmp-5.0.5.tar.bz2 - 2.0MB of 2.0MB (100%) - building: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 - reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> - sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1.txt - reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> - sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1.xml - config: tools/rtems-gdb-7.9-1.cfg - package: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch -> patches/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch - downloading: patches/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch - 1.9kB of 1.9kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch -> patches/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch - downloading: patches/0002-sim-erc32-Corrected-wrong-CPU-implementation-and-ver.patch - 827.0 bytes of 827.0 bytes (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch -> patches/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch - downloading: patches/0003-sim-erc32-Perform-pseudo-init-if-binary-linked-to-no.patch - 2.6kB of 2.6kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch -> patches/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch - downloading: patches/0004-sim-erc32-Use-fenv.h-for-host-FPU-access.patch - 4.9kB of 4.9kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch -> patches/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch - downloading: patches/0005-sim-erc32-Remove-unused-defines-in-Makefile-and-swit.patch - 871.0 bytes of 871.0 bytes (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch -> patches/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch - downloading: patches/0006-sim-erc32-Fix-incorrect-simulator-performance-report.patch - 5.6kB of 5.6kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch -> patches/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch - downloading: patches/0007-sim-erc32-File-loading-via-command-line-did-not-work.patch - 1.0kB of 1.0kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch -> patches/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch - downloading: patches/0008-sim-erc32-Added-v-command-line-switch-for-verbose-ou.patch - 3.6kB of 3.6kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch -> patches/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch - downloading: patches/0009-sim-erc32-Removed-type-mismatch-compiler-warnings.patch - 1.9kB of 1.9kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch -> patches/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch - downloading: patches/0010-sim-erc32-Switched-emulated-memory-to-host-endian-or.patch - 16.0kB of 16.0kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch -> patches/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch - downloading: patches/0011-sim-erc32-use-SIM_AC_OPTION_HOSTENDIAN-to-probe-for-.patch - 14.8kB of 14.8kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch -> patches/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch - downloading: patches/0012-sim-erc32-Use-memory_iread-function-for-instruction-.patch - 3.8kB of 3.8kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0013-sim-erc32-Fix-a-few-compiler-warnings.patch-> patches/0013-sim-erc32-Fix-a-few-compiler-warnings.patch - downloading: patches/0013-sim-erc32-Fix-a-few-compiler-warnings.patch - 2.2kB of 2.2kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch -> patches/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch - downloading: patches/0014-sim-erc32-Use-gdb-callback-for-UART-I-O-when-linked-.patch - 9.2kB of 9.2kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch -> patches/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch - downloading: patches/0015-sim-erc32-Access-memory-subsystem-through-struct-mem.patch - 22.9kB of 22.9kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch -> patches/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch - downloading: patches/0016-sim-erc32-Use-readline.h-for-readline-types-and-func.patch - 1.5kB of 1.5kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch -> patches/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch - downloading: patches/0017-sim-erc32-Move-local-extern-declarations-into-sis.h.patch - 5.8kB of 5.8kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch -> patches/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch - downloading: patches/0018-sim-erc32-Add-support-for-LEON3-processor-emulation.patch - 66.7kB of 66.7kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch -> patches/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch - downloading: patches/0019-sim-erc32-Add-support-for-LEON2-processor-emulation.patch - 26.1kB of 26.1kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0020-sim-erc32-Updated-documentation.patch -> patches/0020-sim-erc32-Updated-documentation.patch - downloading: patches/0020-sim-erc32-Updated-documentation.patch - 16.1kB of 16.1kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0021-sim-erc32-Add-data-watchpoint-support.patch -> patches/0021-sim-erc32-Add-data-watchpoint-support.patch - downloading: patches/0021-sim-erc32-Add-data-watchpoint-support.patch - 10.1kB of 10.1kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch -> patches/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch - downloading: patches/0022-Add-watchpoint-support-to-gdb-simulator-interface.patch - 25.5kB of 25.5kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch -> patches/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch - downloading: patches/0023-sim-erc32-ELF-loading-could-fail-on-unaligned-sectio.patch - 1.3kB of 1.3kB (100%) - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/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: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/sources/patch-gdb-python-python-config.py -> patches/patch-gdb-python-python-config.py - downloading: patches/patch-gdb-python-python-config.py - 449.0 bytes of 449.0 bytes (100%) - building: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 - reporting: tools/rtems-gdb-7.9-1.cfg -> - sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1.txt - reporting: tools/rtems-gdb-7.9-1.cfg -> - sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1.xml - config: tools/rtems-tools-4.11-1.cfg - package: rtems-tools-4.11.0-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-tools-4.11.0.tar.xz -> sources/rtems-tools-4.11.0.tar.xz - downloading: sources/rtems-tools-4.11.0.tar.xz - 1.6MB of 1.6MB (100%) - building: rtems-tools-4.11.0-1 - reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11.0-1.txt - reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11.0-1.xml - config: tools/rtems-kernel-4.11.cfg - package: sparc-rtems4.11-kernel-4.11.0-1 - download: ftp://ftp.rtems.org/pub/rtems/releases/4.11/4.11.0/rtems-4.11.0.tar.xz -> sources/rtems-4.11.0.tar.xz - downloading: sources/rtems-4.11.0.tar.xz - 9.3MB of 9.3MB (100%) - building: sparc-rtems4.11-kernel-4.11.0-1 - reporting: tools/rtems-kernel-4.11.cfg -> sparc-rtems4.11-kernel-4.11.0-1.txt - reporting: tools/rtems-kernel-4.11.cfg -> sparc-rtems4.11-kernel-4.11.0-1.xml - installing: expat-2.1.0-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - installing: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - installing: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - installing: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 -> /opt/work/rtems/4.11.0 - installing: rtems-tools-4.11.0-1 -> /opt/work/rtems/4.11.0 - installing: sparc-rtems4.11-kernel-4.11.0-1 -> /opt/work/rtems/4.11.0 - cleaning: expat-2.1.0-x86_64-freebsd10.1-1 - cleaning: sparc-rtems4.11-binutils-2.26-x86_64-freebsd10.1-1 - cleaning: sparc-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-freebsd10.1-1 - cleaning: sparc-rtems4.11-gdb-7.9-x86_64-freebsd10.1-1 - cleaning: rtems-tools-4.11.0-1 - cleaning: sparc-rtems4.11-kernel-4.11.0-1 - Build Set: Time 0:19:15.713662 diff --git a/user/start/windows.rst b/user/start/windows.rst deleted file mode 100644 index 9e41276..0000000 --- a/user/start/windows.rst +++ /dev/null @@ -1,477 +0,0 @@ -.. comment SPDX-License-Identifier: CC-BY-SA-4.0 - -.. comment: Copyright (c) 2016 Chris Johns -.. comment: All rights reserved. - -.. _microsoft-windows-installation: - -Microsoft Windows ------------------ -.. index:: Microsoft Windows Installation - -This section details how you create an RTEMS development environment on -Windows. The installation documented here is on `Windows 7 64bit -Professional`. Building on `Windows 10` has been reported as working. - -Please see :ref:`microsoft-windows` before continuing. - -.. note:: - - If the RSB reports ``error: no hosts defaults found; please add`` you have - probably opened an MSYS2 32bit Shell. Close all 32bit Shell windows and open - the MSYS2 64bit Shell. - -RTEMS Tools -~~~~~~~~~~~ - -Create a workspace for RTEMS using the following shell command: - -.. sidebar:: *Creating Tool Archives* - - Add ``--bset-tar-file`` to the ``sb-set-builder`` command line to create - tar files of the built package set. - -.. code-block:: shell - - ~ - $ mkdir -p /c/opt/rtems - -The ``/c`` path is an internal MSYS2 mount point of the ``C:`` drive. The -command creates the RTEMS work space on the ``C:`` drive. If you wish to use -another drive please subsitute ``/c`` with your drive letter. - -We build and install all RTEMS packages under the `prefix` we just -created. Change to that directory and get a copy of the RSB: - -.. code-block:: shell - - ~ - $ cd /c/opt/rtems - /c/opt/rtems - $ git clone git://git.rtems.org/rtems-source-builder.git rsb - Cloning into 'rsb'... - remote: Counting objects: 5716, done. - remote: Compressing objects: 100% (2183/2183), done. - remote: Total 5716 (delta 3919), reused 5071 (delta 3494) - Receiving objects: 100% (5716/5716), 2.46 MiB | 656.00 KiB/s, done. - Resolving deltas: 100% (3919/3919), done. - Checking connectivity... done. - Checking out files: 100% (630/630), done. - /c/opt/rtems - $ cd rsb - -We are building RTEMS 4.11 tools so select the *4.11* branch: - -.. code-block:: shell - - /c/opt/rtems/rsb - $ git checkout 4.11 - Branch 4.11 set up to track remote branch 4.11 from origin. - Switched to a new branch '4.11' - /c/opt/rtems/rsb - $ - -Check the RSB has a valid environment: - -.. code-block:: shell - - /c/opt/rtems/rsb - $ cd rtems - /c/opt/rtems/rsb/rtems - $ ../source-builder/sb-check - RTEMS Source Builder - Check, 4.11 (01ac76f2f90f) - Environment is ok - /c/opt/rtems/rsb/rtems - $ - -To build a set of RTEMS tools for the Intel ``i386`` architecture. The build -runs a single job rather than a job per CPU in your machine and will take a -long time so please be patient. The RSB creates a log file containing all the -build output and it will be changing size. The RSB command to build ``i386`` -tools is: - -.. code-block:: shell - - /c/opt/rtems/rsb/rtems - $ ../source-builder/sb-set-builder --prefix=/c/opt/rtems/4.11 \ - --jobs=none 4.11/rtems-i386 - RTEMS Source Builder - Set Builder, 4.11 (01ac76f2f90f) - Build Set: 4.11/rtems-i386 - Build Set: 4.11/rtems-autotools.bset - Build Set: 4.11/rtems-autotools-internal.bset - config: tools/rtems-autoconf-2.69-1.cfg - package: autoconf-2.69-x86_64-w64-mingw32-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-w64-mingw32-1 - config: tools/rtems-automake-1.12.6-1.cfg - package: automake-1.12.6-x86_64-w64-mingw32-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%) - building: automake-1.12.6-x86_64-w64-mingw32-1 - cleaning: autoconf-2.69-x86_64-w64-mingw32-1 - cleaning: automake-1.12.6-x86_64-w64-mingw32-1 - Build Set: Time 0:00:42.515625 - Build Set: 4.11/rtems-autotools-base.bset - config: tools/rtems-autoconf-2.69-1.cfg - package: autoconf-2.69-x86_64-w64-mingw32-1 - building: autoconf-2.69-x86_64-w64-mingw32-1 - reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.txt - reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.xml - config: tools/rtems-automake-1.12.6-1.cfg - package: automake-1.12.6-x86_64-w64-mingw32-1 - building: automake-1.12.6-x86_64-w64-mingw32-1 - reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.txt - reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.xml - tarball: tar/rtems-4.11-autotools-x86_64-w64-mingw32-1.tar.bz2 - installing: autoconf-2.69-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - installing: automake-1.12.6-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - cleaning: autoconf-2.69-x86_64-w64-mingw32-1 - cleaning: automake-1.12.6-x86_64-w64-mingw32-1 - Build Set: Time 0:00:37.718750 - Build Set: Time 0:01:20.234375 - config: devel/expat-2.1.0-1.cfg - package: expat-2.1.0-x86_64-w64-mingw32-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://iweb.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-w64-mingw32-1 - reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.txt - reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.xml - config: tools/rtems-binutils-2.24-1.cfg - package: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 - download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2 -> sources/binutils-2.24.tar.bz2 - downloading: sources/binutils-2.24.tar.bz2 - 21.7MB of 21.7MB (100%) - building: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 - reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.txt - reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.xml - config: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg - package: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 - download: ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2 -> sources/gcc-4.9.3.tar.bz2 - downloading: sources/gcc-4.9.3.tar.bz2 - 85.8MB of 85.8MB (100%) - download: ftp://sourceware.org/pub/newlib/newlib-2.2.0.20150423.tar.gz -> sources/newlib-2.2.0.20150423.tar.gz - downloading: sources/newlib-2.2.0.20150423.tar.gz - 16.7MB of 16.7MB (100%) - download: http://www.mpfr.org/mpfr-3.0.1/mpfr-3.0.1.tar.bz2 -> sources/mpfr-3.0.1.tar.bz2 - downloading: sources/mpfr-3.0.1.tar.bz2 - 1.1MB of 1.1MB (100%) - download: http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz -> sources/mpc-0.8.2.tar.gz - downloading: sources/mpc-0.8.2.tar.gz - 535.5kB of 535.5kB (100%) - download: ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2 -> sources/gmp-5.0.5.tar.bz2 - downloading: sources/gmp-5.0.5.tar.bz2 - 2.0MB of 2.0MB (100%) - building: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 - reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> - i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.txt - reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg -> - i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.xml - config: tools/rtems-gdb-7.9-1.cfg - package: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-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.11/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.11/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%) - building: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 - reporting: tools/rtems-gdb-7.9-1.cfg -> - i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.txt - reporting: tools/rtems-gdb-7.9-1.cfg -> - i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.xml - config: tools/rtems-tools-4.11-1.cfg - package: rtems-tools-4.11-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 => 4.11 - git: pull: git://git.rtems.org/rtems-tools.git - building: rtems-tools-4.11-1 - reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.txt - reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.xml - config: tools/rtems-kernel-4.11.cfg - installing: expat-2.1.0-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - installing: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - installing: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - installing: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11 - installing: rtems-tools-4.11-1 -> C:\opt\rtems\4.11 - cleaning: expat-2.1.0-x86_64-w64-mingw32-1 - cleaning: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 - cleaning: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 - cleaning: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 - cleaning: rtems-tools-4.11-1 - Build Set: Time 1:32:58.972919 - /c/opt/rtems/rsb/rtems - $ - -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: - -.. code-block:: shell - - /c - $ cd /c/opt/rtems - /c/opt/rtems - $ export PATH=/c/opt/rtems/4.11/bin:$PATH - /c/opt/rtems - $ - -We currently build RTEMS from the git release branch for 4.11: - -.. code-block:: shell - - /c/opt/rtems - $ mkdir kernel - /c/opt/rtems - $ cd kernel - /c/opt/rtems/kernel - $ git clone git://git.rtems.org/rtems.git rtems - Cloning into 'rtems'... - remote: Counting objects: 482766, done. - remote: Compressing objects: 100% (88781/88781), done. - remote: Total 482766 (delta 389610), reused 475155 (delta 383437) - Receiving objects: 100% (482766/482766), 69.77 MiB | 697.00 KiB/s, done. - Resolving deltas: 100% (389610/389610), done. - Checking connectivity... done. - Checking out files: 100% (10626/10626), done. - /c/opt/rtems/kernel - $ cd rtems - /c/opt/rtems/kernel/rtems - $ git checkout 4.11 - Checking out files: 100% (2553/2553), done. - Branch 4.11 set up to track remote branch 4.11 from origin. - Switched to a new branch '4.11' - /c/opt/rtems/kernel - $ - -The kernel code cloned from git needs to be `bootstrapped`. Bootstrapping -creates ``autoconf`` and ``automake`` generated files. To bootstrap we first -clean away any files, then generate the pre-install header file lists and -finally we generate the ``autoconf`` and ``automake`` files using the RSB's -bootstrap tool. First we clean any generated files that exist: - -.. code-block:: shell - - /c/opt/rtems/kernel/rtems - $ ./bootstrap -c - removing automake generated Makefile.in files - removing configure files - removing aclocal.m4 files - -Then we generate the pre-install header file automake make files: - -.. code-block:: shell - - /c/opt/rtems/kernel/rtems - $ ./bootstrap -p - Generating ./c/src/ada/preinstall.am - Generating ./c/src/lib/libbsp/arm/altera-cyclone-v/preinstall.am - Generating ./c/src/lib/libbsp/arm/atsam/preinstall.am - Generating ./c/src/lib/libbsp/arm/beagle/preinstall.am - Generating ./c/src/lib/libbsp/arm/csb336/preinstall.am - Generating ./c/src/lib/libbsp/arm/csb337/preinstall.am - Generating ./c/src/lib/libbsp/arm/edb7312/preinstall.am - Generating ./c/src/lib/libbsp/arm/gdbarmsim/preinstall.am - ....... - Generating ./cpukit/score/cpu/mips/preinstall.am - Generating ./cpukit/score/cpu/moxie/preinstall.am - Generating ./cpukit/score/cpu/nios2/preinstall.am - Generating ./cpukit/score/cpu/no_cpu/preinstall.am - Generating ./cpukit/score/cpu/or1k/preinstall.am - Generating ./cpukit/score/cpu/powerpc/preinstall.am - Generating ./cpukit/score/cpu/sh/preinstall.am - Generating ./cpukit/score/cpu/sparc/preinstall.am - Generating ./cpukit/score/cpu/sparc64/preinstall.am - Generating ./cpukit/score/cpu/v850/preinstall.am - Generating ./cpukit/score/preinstall.am - Generating ./cpukit/telnetd/preinstall.am - Generating ./cpukit/wrapup/preinstall.am - Generating ./cpukit/zlib/preinstall.am - /c/opt/rtems/kernel/rtems - -Finally we run the RSB's parallel ``bootstrap`` command: - -.. code-block:: shell - - $ /c/opt/rtems/rsb/source-builder/sb-bootstrap - RTEMS Source Builder - RTEMS Bootstrap, 4.11 (76188ee494dd) - 1/139: autoreconf: configure.ac - 2/139: autoreconf: c/configure.ac - 3/139: autoreconf: c/src/configure.ac - 4/139: autoreconf: c/src/ada-tests/configure.ac - 5/139: autoreconf: c/src/lib/libbsp/arm/configure.ac - 6/139: autoreconf: c/src/lib/libbsp/arm/altera-cyclone-v/configure.ac - 7/139: autoreconf: c/src/lib/libbsp/arm/atsam/configure.ac - 8/139: autoreconf: c/src/lib/libbsp/arm/beagle/configure.ac - 9/139: autoreconf: c/src/lib/libbsp/arm/csb336/configure.ac - 10/139: autoreconf: c/src/lib/libbsp/arm/csb337/configure.ac - 11/139: autoreconf: c/src/lib/libbsp/arm/edb7312/configure.ac - ....... - 129/139: autoreconf: testsuites/samples/configure.ac - 130/139: autoreconf: testsuites/smptests/configure.ac - 131/139: autoreconf: testsuites/sptests/configure.ac - 132/139: autoreconf: testsuites/tmtests/configure.ac - 133/139: autoreconf: testsuites/tools/configure.ac - 134/139: autoreconf: testsuites/tools/generic/configure.ac - 135/139: autoreconf: tools/build/configure.ac - 136/139: autoreconf: tools/cpu/configure.ac - 137/139: autoreconf: tools/cpu/generic/configure.ac - 138/139: autoreconf: tools/cpu/nios2/configure.ac - 139/139: autoreconf: tools/cpu/sh/configure.ac - Bootstrap time: 0:20:38.759766 - /c/opt/rtems/kernel/rtems - $ - -We will build the RTEMS kernel for the ``i386`` target and the ``pc686`` -BSP. You can check the available BSPs by running the ``rtems-bsps`` command -found in the top directory of the RTEMS kernel source. We build the Board -Support Package (BSP) outside the kernel source tree: - -.. code-block:: shell - - /c/opt/rtems/kernel/rtems - $ cd .. - /c/opt/rtems/kernel - $ mkdir pc686 - /c/opt/rtems/kernel - $ cd pc686 - /c/opt/rtems/kernel/pc686 - $ - -Configure the RTEMS kernel to build ``pc686`` BSP for the ``i386`` target with -networking disabled, We will build the external libBSD stack later: - -.. code-block:: shell - - /c/opt/rtems/kernel/pc686 - $ /c/opt/rtems/kernel/rtems/configure --prefix=/c/opt/rtems/4.11 \ - --target=i386-rtems4.11 --disable-networking --enable-rtemsbsp=pc686 - checking for gmake... no - checking for make... make - checking for RTEMS Version... 4.11.99.0 - checking build system type... x86_64-pc-mingw64 - checking host system type... x86_64-pc-mingw64 - checking target system type... i386-pc-rtems4.11 - checking for a BSD-compatible install... /usr/bin/install -c - checking whether build environment is sane... yes - checking for a thread-safe mkdir -p... /usr/bin/mkdir -p - checking for gawk... gawk - 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 - configure: configuring in ./tools/build - ....... - 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: i386. - available BSPs: pc686. - 'make all' will build the following BSPs: pc686. - other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."' - - config.status: creating Makefile - /c/opt/rtems/kernel/pc686 - $ - -Build the kernel: - -.. code-block:: shell - - /c/opt/rtems/kernel/pc686 - $ make - Making all in tools/build - make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' - make all-am - make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' - gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build -g -O2 -MT - cklength.o -MD -MP -MF .deps/cklength.Tpo -c -o cklength.o - /c/opt/rtems/kernel/rtems/tools/build/cklength.c - gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build -g -O2 -MT - eolstrip.o -MD -MP -MF .deps/eolstrip.Tpo -c -o eolstrip.o - /c/opt/rtems/kernel/rtems/tools/build/eolstrip.c - .......... - i386-rtems4.11-objcopy -O binary nsecs.nxe nsecs.bin - ../../../../../pc686/build-tools/bin2boot -v nsecs.ralf 0x00097E00 - ../../../../../pc686/lib/start16.bin 0x00097C00 0 nsecs.bin 0x00100000 0 - header address 0x00097e00, its memory size 0xzx - first image address 0x00097c00, its memory size 0x00000200 - second image address 0x00100000, its memory size 0x0003d800 - rm -f nsecs.nxe - make[6]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples/nsecs' - make[5]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples' - make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples' - make[4]: Entering directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' - make[4]: Nothing to be done for 'all-am'. - make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' - make[3]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites' - make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686' - make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c' - make[1]: Entering directory '/c/opt/rtems/kernel/pc686' - make[1]: Nothing to be done for 'all-am'. - make[1]: Leaving directory '/c/opt/rtems/kernel/pc686' - /c/opt/rtems/kernel/pc696 - $ - -Install the kernel to our prefix: - -.. code-block:: shell - - /c/opt/rtems/kernel/pc686 - $ make install - Making install in tools/build - make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' - make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build' - /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin' - /usr/bin/install -c cklength.exe eolstrip.exe packhex.exe unhex.exe - rtems-bin2c.exe '/c/opt/rtems/4.11/bin' - /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin' - /usr/bin/install -c install-if-change '/c/opt/rtems/4.11/bin' - make[2]: Nothing to be done for 'install-data-am'. - make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build' - make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build' - Making install in tools/cpu - make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' - Making install in generic - make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic' - make[3]: Entering directory '/c/opt/rtems/kernel/pc686/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 '/c/opt/rtems/kernel/pc686/tools/cpu/generic' - make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic' - make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' - make[3]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu' - make[3]: Nothing to be done for 'install-exec-am'. - make[3]: Nothing to be done for 'install-data-am'. - .......... - make[2]: Entering directory '/c/opt/rtems/kernel/pc686' - make[2]: Nothing to be done for 'install-exec-am'. - /usr/bin/mkdir -p '/c/opt/rtems/4.11/make' - /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/main.cfg - /c/opt/rtems/kernel/rtems/make/leaf.cfg '/c/opt/rtems/4.11/make' - /usr/bin/mkdir -p '/c/opt/rtems/4.11/share/rtems4.11/make/Templates' - /usr/bin/install -c -m 644 - /c/opt/rtems/kernel/rtems/make/Templates/Makefile.dir - /c/opt/rtems/kernel/rtems/make/Templates/Makefile.leaf - /c/opt/rtems/kernel/rtems/make/Templates/Makefile.lib - '/c/opt/rtems/4.11/share/rtems4.11/make/Templates' - /usr/bin/mkdir -p '/c/opt/rtems/4.11/make/custom' - /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/custom/default.cfg - '/c/opt/rtems/4.11/make/custom' - make[2]: Leaving directory '/c/opt/rtems/kernel/pc686' - 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. diff --git a/user/support/index.rst b/user/support/index.rst index ef28b17..03a95df 100644 --- a/user/support/index.rst +++ b/user/support/index.rst @@ -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 `_ 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. diff --git a/user/tools/index.rst b/user/tools/index.rst index f0c611d..3f32aa3 100644 --- a/user/tools/index.rst +++ b/user/tools/index.rst @@ -1,12 +1,12 @@ .. comment SPDX-License-Identifier: CC-BY-SA-4.0 -===== -Tools -===== +.. comment: Copyright (c) 2016 Chris Johns +.. 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. -- cgit v1.2.3