Difference between revisions of "Toolchain"

From ArmadeusWiki
Jump to: navigation, search
(Linux installation)
 
(22 intermediate revisions by 4 users not shown)
Line 1: Line 1:
How-To install Armadeus Software Development Kit for Linux/Window$
+
How-To install Armadeus "''Software Development Kit''" (SDK) aka "''Board Support Package''" (BSP) for Linux/Window$ Hosts.
  
==Forewords==
+
=Forewords=
Before writing your first program, you will need to build the required tools to compile it on your host system (cross compilation).
+
Before writing your first program or changing some of your system's utilities, you will need to build the tools required to compile them on your Host system (cross compilation).
The gnu toolchain will be used.
+
The GNU toolchain will be used.
  
==Lexical==
+
=Lexical=
 
* Binutils: several GNU utilities to generate executable files
 
* Binutils: several GNU utilities to generate executable files
* Buildroot / Busybox: "swiss knife" of the embedded Linux
+
* [http://buildroot.uclibc.org/ Buildroot]: set of Makefiles that allow to entirely build embedded Linux systems
* GCC: GNU C compiler
+
* [http://www.busybox.net/ Busybox]: "swiss knife" of the embedded Linux (regroup many common programs in one executable)
 +
* [http://gcc.gnu.org/ GCC]: GNU C compiler
 
* GDB: GNU debugger  
 
* GDB: GNU debugger  
* RootFS: root filesystem. Filesystem which will be installed on your target and used by Linux as root ("/") mountpoint.
+
* rootfs (root filesystem): filesystem image which will be installed on your target and used by Linux as root ("/") mountpoint.
* UBoot: Bios / Bootloader
+
* [http://www.denx.de/wiki/U-Boot U-Boot]: Bios / Bootloader
  
==Recommended System Requirements==
+
=Recommended System Requirements=
* HD free space: at least 1.5GB
+
* HD free space: at least 5GiB
* 1Go RAM is preferable
+
* 2GiB RAM is preferable
 
* 2GHz processor with a 533MHz FSB
 
* 2GHz processor with a 533MHz FSB
* High speed Internet connection (1Mbits)
+
* High speed Internet connection (1Mb/s)
 
With these settings, you will get a complete toolchain, Linux and the RootFS in about 1h30.
 
With these settings, you will get a complete toolchain, Linux and the RootFS in about 1h30.
  
==Linux installation==
+
=[[LinuxInstall | Installation on Linux Host]]=
[[LinuxInstall | Toolchain installation on Linux systems]]
+
{{:LinuxInstall}}
  
==Window$ installation==
+
=Window$ and MacOS installation=
After a performance test with VMWare, it is clear that Cygwin will be no more supported.
+
There are 3 ways of having Armadeus SDK (Linux based) running on Window$ Hosts:
We have observed quite a factor 2 in terms of compilation improvements.
+
* Cygwin (not supported anymore)
 +
* VMWare
 +
* VirtualBox / QEmu x86
  
*What is VMWare ?: it is a virtualization tool able to run a standard Linux distrib on a native Windows system or Windows on a Linux native system.
+
{{Note|After a performance test with VMWare, it is clear that '''Cygwin won't be supported anymore.''' We have observed quite a factor 2 in terms of compilation improvements with VMWare}}
*VMWare player is free. VMWare desktop (used to create the first virtual system) is available for evaluation. You need it only one time.
+
  
It has to be noted that a VMWare will require more disk space as cygwin because a complete Linux distribution will be installed.
+
So, on Window$ and MACOS Hosts, installing the SDK will summary in:
 +
* install VMWare or VirtualBox,
 +
** if you plan to configure your virtual machine as a server - TFTP, NFS.. - accessible by your armadeus board then change the virtual network adapteur configuration from NAT to bridged mode.
 +
** an alternative solution is to install server services on your host OS - Window$ and MacOS
 +
* install a Linux distribution on it (Ubuntu, Mandriva, Fedora, Gentoo,... as you like)
 +
* and then follow [[LinuxInstall | Linux installation steps]].
  
 +
==What are [http://www.vmware.com/ VMWare] & [http://www.virtualbox.org/ Virtual Box] ?==
 +
* They are virtualization tools able to run a standard Linux distribution on a native Window$ system or Window$ on a Linux native system.
 +
* VMWare player is free. VMWare desktop (used to create the first virtual system) is available for evaluation. You need it only one time.
 +
* VirtualBox is a Open Source software.
  
[[WindowsInstall]]
+
Be aware that VMWare/VirtualBox will require more disk space than cygwin, because a complete Linux distribution will be installed.<br>
 +
<br>
 +
[[WindowsInstall | Windows installation with Cygwin (no more used)]]
 +
 
 +
[[Category:Toolchain]]

Latest revision as of 18:34, 14 November 2017

How-To install Armadeus "Software Development Kit" (SDK) aka "Board Support Package" (BSP) for Linux/Window$ Hosts.

Forewords

Before writing your first program or changing some of your system's utilities, you will need to build the tools required to compile them on your Host system (cross compilation). The GNU toolchain will be used.

Lexical

  • Binutils: several GNU utilities to generate executable files
  • Buildroot: set of Makefiles that allow to entirely build embedded Linux systems
  • Busybox: "swiss knife" of the embedded Linux (regroup many common programs in one executable)
  • GCC: GNU C compiler
  • GDB: GNU debugger
  • rootfs (root filesystem): filesystem image which will be installed on your target and used by Linux as root ("/") mountpoint.
  • U-Boot: Bios / Bootloader

Recommended System Requirements

  • HD free space: at least 5GiB
  • 2GiB RAM is preferable
  • 2GHz processor with a 533MHz FSB
  • High speed Internet connection (1Mb/s)

With these settings, you will get a complete toolchain, Linux and the RootFS in about 1h30.

Installation on Linux Host

The installation was successfully tested on the following distributions:

  • Debian Lenny (5.0), Squeeze (6.0.x), Wheezy (7.2), Jessie (8.0)
  • X/KUbuntu Edgy Eft (6.10), Gutsy Gibbon (7.10), Hardy Heron (8.04) & Jaunty Jackalope (9.04)
  • Ubuntu Lucid Lynx (10.04) (32 & 64bits), 12.04 LTS (32 & 64bits), 13.10 (32 & 64bits), 14.04, 15.04 & 16.04
  • LUbuntu 17.10
  • Mandriva 2006
  • Fedora Core 3 & 4, Fedora 10, Laughlin (14)
  • Red Hat Enterprise 5.2
  • Gentoo 10.0 (32 & 64 bits)
  • SuSE 10.1, OpenSUSE 11.3 - 12.3

The installation may fail on:

  • Ubuntu Karmic Koala (9.10): tslib fails to build

APF28 requirements:

  • APF28 board requires a Linux distribution with (GNU) tar version 1.20 or later to compile the Linux Kernel - Please update or upgrade your Linux distribution.

Prerequisites for Linux installation

Note Note: From here we assume that your Linux system has a make version greater or equal to 3.81. To check it:
$ make -v
GNU Make 3.81
...

For armadeus up to 3.4, make should be strictly make-3.81 (make-3.82 is too strict). A Fedora (14 and 15) -specific solution can be found later; other recent distributions such as mageia1 also have make-3.82, and a generic solution, based on configure&& make&& sudo make install can be used to install make-3.81 (which can be retrieved from http://ftp.gnu.org/gnu/make/make-6.81.tar.gz) in /usr/local/bin (and , according to one's PATH, make 3-81 can be invoked directly or as /usr/local/bin/make).

Depending on your distribution, some additional packages are required:

Debian/Ubuntu based systems

Ubuntu/Debian installation prerequisites

Mandriva based systems

Mandriva installation prerequisites

RPM-based systems (RedHat, Fedora, CentOS)

RedHat/Fedora installation prerequisites

OpenSuse based systems

OpenSuse installation prerequisites

Gentoo based systems

Gentoo installation prerequisites

Get Armadeus software

 $ tar xjvf armadeus-7.0.tar.bz2
  • If you want the latest snapshot or if you have a recent SOM (OPOS6UL/OPOS8MM), the whole development tree can be checked out from our GIT repository.
 $ git clone git@gitlab.com:armadeus/armadeus-bsp.git armadeus
  • depending on your previous choice, a directory named armadeus/ or armadeus-7.0/ will be created on your hard-disk and will contain all the files you need.

Remarks:

  • Do not use spaces in the directory name !
  • Do not use a directory path beginning with /usr. It is a known bug of Buildroot (until BR2012.11, at 2012-12).
  • GIT write/push accesses are limited to the integrators (JulienB, SebastienSz, Jorasse, FabienM, SebastienR)

Configure SDK/BSP options

Note Note: If you are new to Armadeus and have troubles compiling armadeus-5.x/armadeus-6.x using the following instructions, you may find some hints here: Releases
  • Go to the directory where you put the Armadeus sources:
 $ cd armadeus/  (or armadeus-7.0/)
  • The first time you compile an Armadeus distribution you have to specify the target (here the APF9328) to work with.
 $ make apf9328_defconfig

This command reloads the default configuration to support your target and automatically start a Buildroot's configuration menu.

  • Current valid default configurations are:
apf9328_defconfig  apf27_defconfig  pps_defconfig  apf28_defconfig  apf51_defconfig  pps51_defconfig apf6_defconfig apf6legacy_defconfig opos6ul_defconfig opos6ulnano_defconfig
Note Note: To get the full list of available config just type make, it will download buildroot and print following message :
$ make
[...]
 System not configured. Use make <board>_defconfig 
 armadeus valid configurations are:                
     opos6ul_legacy_defconfig opos6ulnano-preempt-rt_defconfig apf6_defconfig pps_defconfig opos6ultest_defconfig apf51_defconfig opos6ulsp_defconfig apf6dawnsmalllinux_defconfig apf27preempt-rt_defconfig apf27test_defconfig apf27_defconfig apf28legacytest_defconfig opos6ullegacy-4.14_defconfig opos6ulnano_defconfig apf28legacy_defconfig apf6mainline-4.19_defconfig opos6ul_defconfig apf6legacy_defconfig apf6xenomai_defconfig apf51test_defconfig opos6ul-preempt-rt_defconfig apf6legacy-preempt-rt_defconfig apf6legacy-4.1_defconfig pps51_defconfig apf6mainline-4.9_defconfig apf28test_defconfig apf28_defconfig apf6mediacenter_defconfig opos6ullegacy-4.9_defconfig opos6ul_recovery_defconfig apf6failsafe_defconfig apf6test_defconfig opos6ullegacy-4.1_defconfig apf27xenomai_defconfig
                                                   
Makefile:129: recipe for target '/usr/local/projects/apf6_sp_419/buildroot/.configured' failed
make: *** [/usr/local/projects/apf6_sp_419/buildroot/.configured] Error 1


For PPS boards, please see APF27_PPS or PPS51 Wiki pages, as these boards have specific build.

  • After some downloads, you will get the Buildroot configuration interface:
Note Note: If you ever made changes during the following steps, at any time, you can reload the default configuration with:
$ make xxx_defconfig       (xxx depending on your module name)


Menuconfig3.png

  • If you are not familiar with Buildroot here are some tips:
    1. you can move the highlighted item with the "up"/"down" arrow keys
    2. with the "left"/"right" arrow keys you can choose between "Select", "Exit" or "Help" buttons
    3. "space"/"enter":
      • selects the currently highlighted item if you are on the "Select" button
      • go back in previous menu if you are on "Exit" button
      • show you some Help for current item if you are on "Help" button
    4. for more Help about Buildroot commands, select "Help" in the main configuration screen
  • Update the memory configuration of your board (if needed; by default BSP is configured for the minimal memory configuration available on the corresponding board):
In menu:
System configuration  --->    [*] Armadeus Device Support  --->
you can check and change the quantity of RAM available on your Armadeus board:
Build config memory.png
For APF9328 the memory can be either 16 or 32MiB (be sure to select 1 RAM chip)
For APF27 it could be either 64MiB or 128MiB (2 x 64MiB) (in that case be sure to select 2 chips of 64MiB instead of 1 chip of 128MiB).
For APF51 it could be either 256MiB or 512MiB (2x256MiB) (in such case be sure to select 2 chips of 256MiB instead of 1 chip of 512).
For APF28 The memory can be 128, 256, 512 or 1024MiB (be sure to select 1 RAM chip).
For APF6/APF6SP The memory can be 512 Mbytes or 1Gbytes with ram chip size of 512Mbytes.
For OPOS6UL/OPOS6UL_NANO The memory size is automatically detected so you don't care ;-)
  • You may decrease the compilation time by increasing the number of parallel jobs running simultaneously on your system (the result is not guaranteed). This option is located in:
Build Options --->    (0) Number of jobs to run simultaneously

0 means that Buildroot will try to guess automatically how much parallel jobs it can launch.

  • During the SDK/BSP build, a lot of software archives are downloaded from Internet. The downloaded files are put by default in the armadeus/downloads/ directory. If you have several views or plan to build the toolchain several times, we advise you to put all the downloaded files in /local/downloads (for example). This is done by configuring Buildroot to use this directory for all your views. Nevertheless, Buildroot will be downloaded separately for each build environment you set up.
Build options  --->    (...) Download dir
Build config download.png
Note Note: Of course, /local/downloads should exists on your system and you should have writing rights on it !
  • In recent Buildroot you can also use the following method:
export BR2_DL_DIR=/local/downloads
  • After the build, we advise you to copy all the files in downloads/ / /local/downloads on a removable medium, in case you want to install the development tools on other systems, without to have to reload all the archives.
  • Now, Exit the configuration tool and save your configuration
  • You can come back to this configuration menu, by typing (your changes will be kept):
make menuconfig

Launch build

$ make

The toolchain and the full distribution are automatically built. During this procedure, several files are downloaded from Internet.
Please wait for a while.... it takes at least one hour for the first run!
By default, the downloaded files/tarball are put in the armadeus/downloads/ directory. Please see the previous chapter to know how to optimize that if you plan to build several views or want to build faster.

Enjoy the result

The generated binary files can be found in the subdirectory buildroot/output/images:

Please note the new naming convention of binary files and directories (since Armadeus 4.0)

  • buildroot/output/build: contains all the build results for target root filesystem, Linux, Busybox and U-Boot...
  • buildroot/output/toolchain/: cross compilation toolchain's build dir. Binaries usable for cross-compilation are in buildroot/output/host/usr/bin.
  • buildroot/output/target/: target filessytem before generating rootfs images

More information is available in the Buildroot's documentation

  • Note: Previous versions (3.x) of Armadeus SDK stored the generated binary files at a different place: buildroot/binaries/XX/ (where XX was the name of your board).


Window$ and MacOS installation

There are 3 ways of having Armadeus SDK (Linux based) running on Window$ Hosts:

  • Cygwin (not supported anymore)
  • VMWare
  • VirtualBox / QEmu x86
Note Note: After a performance test with VMWare, it is clear that Cygwin won't be supported anymore. We have observed quite a factor 2 in terms of compilation improvements with VMWare


So, on Window$ and MACOS Hosts, installing the SDK will summary in:

  • install VMWare or VirtualBox,
    • if you plan to configure your virtual machine as a server - TFTP, NFS.. - accessible by your armadeus board then change the virtual network adapteur configuration from NAT to bridged mode.
    • an alternative solution is to install server services on your host OS - Window$ and MacOS
  • install a Linux distribution on it (Ubuntu, Mandriva, Fedora, Gentoo,... as you like)
  • and then follow Linux installation steps.

What are VMWare & Virtual Box ?

  • They are virtualization tools able to run a standard Linux distribution on a native Window$ system or Window$ on a Linux native system.
  • VMWare player is free. VMWare desktop (used to create the first virtual system) is available for evaluation. You need it only one time.
  • VirtualBox is a Open Source software.

Be aware that VMWare/VirtualBox will require more disk space than cygwin, because a complete Linux distribution will be installed.

Windows installation with Cygwin (no more used)