Skip to main content.
Navigation:
DENX
>
ELDK-5
>
WebHome
Translations:
Edit
|
Attach
|
Raw
|
Ref-By
|
Printable
|
More
ELDK-5
Sections of this site:
DENX Home
|
DULG
|
ELDK-5
|
Know
|
Training
|
U-Boot
|
U-Bootdoc
Topics
ELDK-5 Home
Changes
Index
Search
Go
List of pages in ELDK-5
Search
%SECTION0{name=Eldk5Documentation}% ELDK 5.3 Documentation <hr> *Table of contents*: %CONTENTS% %SECTION1{name=Author}% Author This document was written by Wolfgang Denk (wd {at} denx {dot} de). %SECTION1{name=AvailableVersions}% Available versions ELDK v5.3:: released on Fri Dec 14, 2012 %BR% Git tag: ="eldk-5.3"= = commit id =c2836a8= ELDK v5.2.1:: released on Wed Jun 20, 2012 %BR% Git tag: ="eldk-5.2.1"= = commit id =33c5d31= ELDK v5.2:: released on Mon May 07, 2012 %BR% Git tag: ="eldk-5.2"= = commit id =3dfe6e5= ELDK v5.1:: released on Sun Dec 11, 2011 %BR% Git tag: ="eldk-5.1"= = commit id =a999e4a= ELDK v5.0:: released on Sun May 22, 2011 %BR% Git tag: ="eldk-5.0"= = commit id =5cde06e= This document covers the most recent version. %SECTION1{name=SupportedHostSystems}% Supported Host Systems ELDK v5.3 can be installed and run on any recent Linux distribution running on x86 (i686) and x86_64 systems. *Note:* 64-bit hosts require a compatibility layer; please see the [[DULG.ELDKUsageIn64BitEnvironment][FAQ]] for details. %SECTION1{name=SupportedTargetArchitectures}% Supported Target Architectures At the moment the following target architectures are supported: | * Target Architecture * | *Purpose* | | armv4t | Generic ARM target for the ARMv4T architecture %BR% (<nop>StrongARM, ARM7TDMI and ARM9TDMI processors | | armv5te | Generic ARM target for the ARMv5TE architecture %BR% (ARM9E, ARM10E, XScale processors) %BR% Similar to the ="arm"= target in older versions of the ELDK | | armv6 | Generic ARM target for the ARMv6 architecture %BR% (ARM11 processors) | | armv7a | Generic ARM target for the ARMv7-A architecture %BR% (Cortex-A5, -A8, -A9, -A15 processors) %BR% Similar to the ="armVFP"= target in older versions of the ELDK | | armv7a-hf | Generic ARM target for the ARMv7-A architecture %BR% (Cortex-A5, -A8, -A9, -A15 processors) %BR% using the *Hard-Float ABI* ( ="-mfloat-abi=hard"= ) | | mips | Generic MIPS target for the MIPS32 architecture %BR% Similar to a combination of the ="mips_4KC"= and ="mips_4KCle"= targets in older versions of the ELDK (target files are in Big-Endian mode, though) | | powerpc | Generic <nop>PowerPC target with FPU support %BR% Similar to the ="ppc_6xx"= target in older versions of the ELDK | | powerpc-softfloat | Generic <nop>PowerPC target for FPU-less systems like MPC8308 etc. %BR% Similar to the ="ppc_8xx"= target in older versions of the ELDK | | powerpc-4xx | Generic <nop>PowerPC target with FPU support for PPC4xx processors, %BR% similar to the ="ppc_4xxFP"= target in older versions of the ELDK | | powerpc-4xx-softfloat | Generic <nop>PowerPC target for FPU-less PPC4xx processors, %BR% similar to the ="ppc_4xx"= target in older versions of the ELDK | | powerpc-e500v2 | Generic <nop>PowerPC target for e500v2 core based processors, %BR% similar to the ="ppc_85xxDP"= target in older versions of the ELDK | %SECTION1{name=SupportedTargetConfigurations}% Supported Target Configurations ELDK v5.3 supports a number of different target configurations. These include different sets of target tools and target libraries depending on the primary usage mode of the target system. At this point of time the following configurations are available: | *Image Name* | *Purpose* | | minimal | A small image just capable of allowing a device to boot. | | minimal-mtdutils | A ="minimal"= image that also has support for the Minimal MTD Utilities, which let the user interact with the MTD subsystem in the kernel to perform operations on flash devices. | | minimal-dev | A ="minimal"= image suitable for development work. | | base | A console-only image that fully supports the target device hardware. | | basic | A foundational basic image without support for X that can be reasonably used for customization. | | clutter | An image with support for the Open GL-based toolkit Clutter, which enables development of rich and animated graphical user interfaces. | | lsb | A ="basic"= image suitable for implementations that conform to Linux Standard Base (LSB). | | lsb-dev | A ="lsb"= image that is suitable for development work. | | lsb-sdk | A ="lsb"= image that includes everything in meta-toolchain but also includes development headers and libraries to form a complete standalone SDK. | | qte-sdk | A Qt Embedded based image that also includes development headers and libraries to form a complete standalone SDK. | | sato | An image with Sato support, a mobile environment and visual style that works well with mobile devices. The image supports X11 with a Sato theme and Pimlico applications and also contains terminal, editor, and file manager. | | sato-dev | A ="sato"= image suitable for development that also includes a native toolchain and libraries needed to build applications on the device itself. The image also includes testing and profiling tools as well as debug symbols. | | sato-sdk | A ="sato"= image that also includes development headers and libraries to form a complete standalone SDK. | | x11 | An X11 image with simple applications such as terminal, editor, and file manager. | For details, please see [[http://www.yoctoproject.org/docs/current/poky-ref-manual/poky-ref-manual.html#ref-images][Appendix D. Reference: Images]] of [[http://www.yoctoproject.org/docs/current/poky-ref-manual/poky-ref-manual.html][The Yocto Project Reference Manual]] . There are two different environments for GUI oriented systems: * GMAE/Sato: This configuration is based on the GNOME Mobile & Embedded Initiative (GMAE) software stack. It focuses on mobile devices and provides user interfaces like Pimlico, Clutter, Sato and other GNOME Mobile technologies. %BR% %BR% In ELDK v5.3 this is represented by the ="gmae"= cross tool chain and the ="sato*"= target root file system packages. * QT Embedded: This configuration uses the Qt application framework. %BR% %BR% In ELDK v5.3 this is represented by the ="qte"= cross tool chain and the ="qte*"= target root file system packages. %SECTION1{name=Download}% Download %SECTION2{name=Binaries}% Binaries Ready-to-use binaries of ELDK v5.3 are available on our FTP server in the ftp://ftp.denx.de/pub/eldk/5.3/ directory. On the FTP server you can find: * An install script: [[ftp://ftp.denx.de/pub/eldk/5.3/install.sh]] * For each target architecture one directory: %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/armv4t]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/armv5te]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/armv6]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a-hf]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/mips]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/powerpc]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/powerpc-softfloat]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/powerpc-4xx]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/powerpc-4xx-softfloat]] %BR% [[ftp://ftp.denx.de/pub/eldk/5.3/targets/powerpc-e500v2]] * In each target directory there is: * a file ="*.sha256"= with the SHA256 checksums of all provided files * a configuration file ="target.conf"= for the install script * one or more cross tool chain images ="eldk-eglibc-*-toolchain-*-5.3.tar.bz2"= * one or more root file system images ="core-image-*.tar.gz"= To install ELDK v5.3 for a specific target architecture please download at least the install script, the ="target.conf"= file and the images you want to install. For example, for a installation of the GMAE/Sato configuration of the tool chain and both the ="minimal"= and ="sato-sdk"= root file systems for =armv7a= targets you would download the following files: <verbatim> $ mkdir eldk-download $ cd eldk-download $ mkdir -p targets/armv7a $ wget ftp://ftp.denx.de/pub/eldk/5.3/install.sh $ cd targets/armv7a $ wget ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a/target.conf $ wget ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a/eldk-eglibc-i686-arm-toolchain-gmae-5.3.sh $ wget ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a/core-image-minimal-generic-armv7a.tar.gz $ wget ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a/core-image-sato-sdk-generic-armv7a.tar.gz </verbatim> Make sure to keep the same directory structure on your system, as this is what the install script expects. Note that it is also an excellent idea to download the file with the SHA256 checksums so you can verify the integrity of your downloads using the ="sha256sum -c"= command: <verbatim> $ cd eldk-download/targets/armv7a $ wget ftp://ftp.denx.de/pub/eldk/5.3/targets/armv7a/armv7a.sha256 $ sha256sum -c armv7a.sha256 eldk-eglibc-i686-arm-toolchain-gmae-5.3.tar.bz2: OK core-image-minimal-generic-armv7a.tar.gz: OK core-image-sato-sdk-generic-armv7a.tar.gz: OK target.conf: OK ... </verbatim> %SECTION2{name=SourceCode}% Source Code The source code and all needed tools to build ELDK yourself from scratch are available from our [[http://git-scm.com/][git]] repository, see section %REF{type=Section,topic=GitRepositorySetup,name=GitRepositorySetup}%. %SECTION1{name=Installation}% Installation In principle you can install ELDK v5.3 by just unpacking the provided tarballs. There are however a few distinctive requirements that have to be kept in mind: * While ELDK v5.3 (and newer) can be installed in any directory, for ELDK v5.3 and older, the cross tool chain packages are not relocatable and can only be installed into their default location, i. e. into the ="/opt/eldk-5.3/"= directory. %BR% *Note:* To be able to do this, you need write permissions in the ="/opt/eldk-5.3/"= directory. If needed, run for example the command ="sudo chmod 01777 /opt/eldk-5.3/"=. %BR% *Note 2:* The installer attempts to be clever and runs _"sudo"_ where needed, after printing a respective warning message. * The root file system images can be installed anywhere, but superuser (root) permissions are needed to install them as they contain device files etc., and exact ownership and permissions of all files must be preserved. * At the moment, only one target configuration can be installed on a host. This is again a consequence of the fact that the tools are not relocatable. It is possible to install into another directory but then you will have to make software 'think' that it is installed into the default location, for example by using symbolic links or bind mounts (globally visible for all users) or name spaces (may be used on a per-process base), etc. We intentionally leave this to the experienced user here For the average user we recommend to use the install script which tries to hide these complexities and to provide a simple user interface: <verbatim> install.sh [-D] [-d <dest_dir>] [-a <host_arch>] [-s <sdk_images> ] [-r <rfs_images> ] [<target>] install.sh -l [<target>] install.sh -h </verbatim> Options: _-D_:: Dry-run: display commands, but don't actually execute them. _-a host_arch_:: Select the SDK host architecture. Chose one of 'i686' or 'x86_64". Defaults to "i686". (at the moment only the 32 bit version of the packages is provided on the FTP server) _-d dest_dir_:: Destination defaults to ="/opt/eldk-5.2"=; you can override it here but for ELDK v5.3 and older you will need to make software 'think' that it is installed into the default location (use symlink or namespaces or ...) Please make sure to read the comments above. _-h_:: Print help message. _-l_:: List the SDK and RFS images that are available for the selected target architecture. _-s sdk_images_:: Select SDK image. Chose one of 'gmae', 'qte', or '-' for none. Defaults to "gmae". _-r rfs_images_:: Select list of RFS images. Chose one or more of 'minimal', 'minimal-mtdutils', 'minimal-dev', 'base', 'basic', 'core', 'clutter', 'lsb', 'lsb-dev', 'lsb-sdk', 'sato', 'sato-dev', 'sato-sdk', 'qte-sdk', or '-' for none. Defaults to all vailable. _target_:: selects the target architecture and defaults to ="powerpc"= %SECTION2{name=Examples}% Examples * To install the GNOME Mobile / Sato configuration of the SDK and the "minimal", "lsb-sdk" and "sato-sdk" root file system images for the armv6 architecture: <verbatim> $ ./install.sh -s gmae -r "lsb-sdk minimal sato-sdk" armv6 *** Installing ./targets/armv6/eldk-eglibc-i686-arm-toolchain-gmae-5.3.tar.bz2 into /opt/eldk-5.3/armv6 -------------------------------------------------------------------- NOTICE: superuser priviledges will be needed to install the root file system; make sure you have sufficient permissions. -------------------------------------------------------------------- *** Installing ./targets/armv6/core-image-lsb-sdk-generic-armv6.tar.gz into /opt/eldk-5.3/armv6/rootfs-lsb-sdk [sudo] password for wd: *** Installing ./targets/armv6/core-image-minimal-generic-armv6.tar.gz into /opt/eldk-5.3/armv6/rootfs-minimal *** Installing ./targets/armv6/core-image-sato-sdk-generic-armv6.tar.gz into /opt/eldk-5.3/armv6/rootfs-sato-sdk </verbatim> * To install only the cross tools (but not the root file system) for the Qt Embedded configuration for the armv7a architecture: <verbatim> $ ./install.sh -s qte -r - armv7a ... </verbatim> %SECTION1{name=Usage}% Usage The use of the ELDK for software development tasks is controlled by a number of environment variables. There are two major groups of such software packages, which have slightly different requirements. The ELDK provides (as ="/opt/eldk-*/*/environment-setup-*"=) as script that sets (most of) the needed variables. The following sections describe how to use these for different development tasks. %SECTION2{name=LowLevel}% Low Level Code Many low level software packages, like for example the ==U-Boot== boot loader or the ==Linux== kernel, are (intentionally) implemented such that they are mostly _self-contained_, i. e. they do not depend on header files, system libraries or such of the development host or the used tool chain - instead, they contain all needed code, header files and libraries. This makes them largely independent from the actual build environment. To build these tools, only very few environment variables need to be set correctly: ==PATH==: defines in which directory the needed tools can be found %BR% _Example:_ <verbatim> $ export PATH=/opt/eldk-5.3/powerpc/sysroots/i686-eldk-linux/usr/bin:/opt/eldk-5.3/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux:$PATH </verbatim> ==ARCH==: defines the processor architecture %BR% _Example:_ <verbatim> $ export ARCH=powerpc </verbatim> ==CROSS_COMPILE==: defines the common prefix of the cross development tools; for example, the GNU C compiler is usually called by the name ="gcc"=, while the Power Architecture® cross compiler would be run as ="powerpc-linux-gcc"=. Thus the prefix would be ="powerpc-linux-". %BR% _Example:_ <verbatim> $ export CROSS_COMPILE=powerpc-linux- </verbatim> Note that while the "environment-setup-*" script correctly sets ==PATH==, it does *not* set ==ARCH== nor ==CROSS_COMPILE==. However, it sets another environment variable, which can be used to extract the needed information (=TARGET_PREFIX=). An automatic way to set all needed environment variables for low level code like ==U-Boot== or ==Linux== could be: <verbatim> $ source /opt/eldk-5.3/powerpc/environment-setup-* </verbatim> Here the __/powerpc/__ part is the critical information which selects which tool chain configuration to chose (and of course the __/eldk-5.3/__ part to select the release to use). The rest can be done automatically: <verbatim> $ export CROSS_COMPILE=${TARGET_PREFIX} $ export ARCH=${TARGET_PREFIX%%-*} </verbatim> %SECTION2{name=UserSpace}% User Space Code User space code, especially when building with complex software packages, requires more variable settings. Usually you want to provide definitions for the compilers (==CC==, ==CXX==), default compiler options and linker flags (==CPPFLAGS==, ==CFLAGS==, ==CXXFLAGS==, ==LDFLAGS==), debugger (==GDB==), etc. The "environment-setup-*" script provides all these. When installing the QT Embedded configuration of the development tools, the script also provides the needed definitions to build software for the Qt application framework (i. e. variables like ==QMAKESPEC==, ==OE_QMAKE_QT_CONFIG==, ==OE_QMAKE_CC== etc.) %SECTION2{name=EldkSwitch}% Using "eldk-switch" To make life a bit easier, especially when you have to work with multiple architectures and tool chain versions, the [[http://git.denx.de/?p=eldk-switch.git][ ==eldk-switch== ]] tool was created. It can be used to easily switch the build environment, and to provide a lot of other related information. Installation of the tool is simple: <verbatim> $ git clone git://git.denx.de/eldk-switch.git $ cd eldk-switch $ sudo make install </verbatim> Then define the following shell function: <verbatim> eldk-switch () { eval `eldk-switch.sh $*` } </verbatim> *Note:* It is a good idea to add this definition to your =~/.bash_profile= file, so you always have it ready available. Running the =eldk-switch= function without arguments gives an idea how to use it: <verbatim> $ eldk-switch usage: eldk-switch.sh [-v] [-m] [-r <release>] <board, cpu, eldkcc/target> Switches to using the ELDK <release> for <board>, <cpu> or <eldkcc>/<target>. -m will only effact a minimal amount of environment variables. eldk-switch.sh -l Lists the installed ELDKs eldk-switch.sh -q Queries the currently used ELDK </verbatim> The ="-l"= option allows to query which versions and configurations of the ELDK are installed on this machine: <verbatim> eldk 3.0: /opt/eldk-3.0 ppc_{4xx,4xxFP,74xx,7xx,82xx,8xx} eldk 3.1: /opt/eldk-3.1 arm mips_{4KC,4KCle} ppc_{4xx,4xxFP,6xx,6xx,6xx,74xx,8xx} eldk 3.1.1: /opt/eldk-3.1.1 arm mips_{4KC,4KCle} ppc_{4xx,4xxFP,6xx,74xx,85xx,8xx} eldk 3.1.1: /opt/eldk-3.1.1-2006-06-07 ppc_{4xx,4xxFP,6xx,74xx,85xx,8xx} eldk 4.0: /opt/eldk-4.0 -> eldk-4.0-2006-02-19 eldk 4.0: /opt/eldk-4.0-2006-02-19 arm mips_{4KC,4KCle} ppc_{4xx,4xxFP,6xx,74xx,85xx,8xx} eldk 4.1: /opt/eldk-4.1 -> eldk-4.1-2007-01-19 eldk 4.1: /opt/eldk-4.1-2007-01-19 arm mips_{4KC,4KCle} ppc_{4xx,4xxFP,6xx,74xx,85xx,8xx} eldk 4.1: /opt/eldk-4.1-2007-01-22-uclibc arm eldk 4.2: /opt/eldk-4.2 -> eldk-4.2-2008-04-01 eldk 4.2: /opt/eldk-4.2-2008-04-01 ppc_{4xx,4xxFP,6xx,74xx,85xx,85xxDP,8xx} eldk 4.2: /opt/eldk-4.2-2008-11-24 arm{,VFP} eldk 4.2: /opt/eldk-4.2-arm -> eldk-4.2-2008-11-24 eldk 4.2: /opt/eldk-4.2-ppc64-2008-04-01 ppc64 eldk 5.0: /opt/eldk-5.0 armv{5te,7a,7a-qte,7a-qte.old,7a-qte-rootfs.old} powerpc{,-softfloat} eldk 5.1: /opt/eldk-5.1 armv{4t,5te,6,7a} imx53 mips powerpc{,-4xx,-4xx-softfloat,-e500v2,-softfloat} eldk 5.2: /opt/eldk-5.2 armv7a powerpc eldk 5.2.1: /opt/eldk-5.2.1 armv{4t,5te,6,7a} imx53 mips powerpc{,-4xx,-4xx-softfloat,-e500v2,-softfloat} eldk 5.3: /opt/eldk-5.3 armv{4t,5te,6,7a,7a-hf} mips powerpc{,-4xx,-4xx-softfloat,-e500v2,-softfloat} eldk 5.3: /opt/eldk-5.3-qte armv{5te,7a,7a-hf} powerpc </verbatim> If you want to use ELDK release 5.3 to develop software for an ARMv7a system, you just have to type: <verbatim> $ eldk-switch -r 5.3 armv7a Setup for armv7a (using ELDK 5.3) </verbatim> Sometimes it is not necessary or not wanted to set all the variables defined in the "environment-setup-*" script script, which is what ="eldk-switch"= will do by default. You can use the ="-m"= option to acchieve a minimally intrusive effect, i. e. to only set the ==PATH==, ==ARCH== and ==CROSS_COMPILE== environment variables. #OptMWarning %X% %RED%WARNING:%ENDCOLOR% Be careful not to mix using "eldk-switch" with and without the "-m" option. For example, if you use "eldk-switch" *without* "-m" first to select - say - building for Power architecture systems, and later use "eldk-switch" *with* "-m" to switch to the ARM architecture, the second call will correctly define a minimal set of settings for ARM, but it will *not* undo any of the other settings made previously, so you will for example still have envrionment variables like "CC=powerpc-linux-gcc" etc. set. This may cause all kinds of nasty errors. So make it a habit to either always or never use "-m"; don't mix usage. The ="-q"= option allows to query the current settings: <verbatim> $ eldk-switch -q Currently using eldk unknown from /opt/eldk-5.3/armv7a/sysroots/i686-eldk-linux/usr CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm </verbatim> And additional tool, =="eldk-map"==, can be used to retrieve all kinds of information that may be needed to map for example CPU types to board names or vice versa, etc.: <verbatim> $ eldk-map usage: eldk-map <from> <to> <key> The table { <from>, <to> } is queried for <from> = <key> where <from> and <to> are fieldnames. eldk-map <column> Lists all possible values for <column> where <column> is a fieldname. Valid field names: 'board', 'cpu', 'eldkcc', 'arch', 'alias' 'target', 'uboot_config', 'linux_config' (can be abbreviated by shortest unique substring) Examples: eldk-map c b ppc440epx - show all boards using 440EPx eldk-map e b ppc_8xx - show all boards using ppc_8xx- as CROSS_COMPILE. eldk-map c - show all known CPUs eldk-map v - verify integrity of database </verbatim> %SECTION1{name=Origin}% Origin Release 5.3 of our Embedded Linux Development Kit (ELDK) is based on Version "Yocto 1.3" (git release tag ="1.3"= resp. ="danny-8.0"=) of the [[http://www.yoctoproject.org/][Yocto Project]]. The Yocto Project is an open-source collaboration project which is driven by the [[http://www.linuxfoundation.org/][Linux Foundation]]. It targets x86, ARM, MIPS, and Power Architecture based systems. The [[http://www.pokylinux.org/][Poky platform builder]] is used for development and building, which in turn is derived from and intimately connected with the [[http://www.openembedded.org/][<nop>OpenEmbedded]] project.
1. WebHome
2. Git Repository Setup
Home
Next