State of Openembedded Internal Toolchain and Sdks

State of Openembedded Internal Toolchain and Sdks

State of OpenEmbedded Internal Toolchain and SDKs Khem Raj Embedded Linux Conference 11-13 April 2011, San Fransisco Agenda ➢ Introduction ➢ Internal Toolchain ➢ Current state ➢ Features ➢ Pains ➢ SDKs ➢ Build your own SDK ➢ Using SDK ➢ Q & A 2 What is OpenEmbedded ? ➢ Framework to build Embedded Linux distributions ➢ Meta-data describing how to build software ➢ Includes tools to help build various RFS types. ➢ Learn more at http://www.openembedded.org ➢ http://wiki.openembedded.net/index.php/Mailing_lists ➢ IRC channel #oe on irc.freenode.net 3 Internal Toolchain ➢ GNU Toolchain based ➢ Supports C, C++, Fortran, objective-C ➢ Choice of system C libraries Glibc, eglibc, uClibc 4 Internal Toolchain ➢ Multiple versions of Toolchain components available ➢ GCC 4.5, 4.4, 4.3, 4.2 ➢ Glibc 2.10.1, 2.9 ➢ Eglibc 2.12, 2.11, 2.10, 2.9 ➢ uClibc 0.9.30, 0.9.31, git Option to select threading model (NPTL/LT) ➢ Distributions select sane combinations 5 Internal Toolchain Bootstrap Build required Bootstrap Rest of build Cross Native packages Cross process ToolchainToolchain External or prebuilt toolchain 6 Internal Toolchain ➢ Supports Multiple architectures ➢ ARM, MIPS/MIPS64, powerpc, x86, SuperH … ➢ Detects host include poisoning ➢ ARM ➢ Can be configured for hardfp or softfp floating ABI ➢ Chosen by setting ARM_FP_ABI = {hardfp|softfp} Only supported with gcc 4.5 ➢ Linaro gcc 4.5 improvements ➢ MIPS ➢ Configured with –with-mips-plt 7 Internal Toolchain Cross binutils GCC cross bootstrap stage 1 C Library headers/runtime Native sysroot GCC cross bootstrap stage 2 C Library(uClibc/eglibc/glibc) GCC cross Final 8 Internal Toolchain - Niggles ➢ Rebuilding not so straightforward ➢ Target support libraries and headers intertwined with cross compiler ➢ No support for multilibs 9 OpenEmbedded SDK ➢ Some SDKs pre-exist in OE metadata ➢ meta-toolchain, meta-toolchain-qte, meta-toolchain-shr etc. ➢ But thats not all 10 OpenEmbedded SDK ➢ OE's SDK generation is easily customizable ➢ SDK has ➢ Host packages e.g. cmake, qemu ➢ Target packages e.g. libc headers/libraries 11 OpenEmbedded SDK HostHost TargetTarget packagespackages Packages Packages e.g. e.g. e.g.e.g. cmake cmake libc-devlibc-dev AdditionalAdditional ExtraExtra host host TargetTarget packagedpackaged packagespackages OpenEmbeddedOpenEmbedded SDKSDK 12 Creating your own SDK ➢ Host side ➢ Create sdk recipes that need to be part of SDK BBCLASSEXTEND = “sdk” ➢ Create new task in recipes/tasks task-<YOURS>-toolchain- host.bb ➢ Append your packages-<sdk> to RDEPENDS_${PN} RDEPENDS_${PN} += "your-recipe-sdk” 13 Creating Your own SDK ➢ Target side ➢ -dev packages provide headers/libraries and other useful files for development ➢ Create a new task task-<YOUR>-toolchain-target.bb ➢ Append -dev packages of your recipe to RDEPENDS_${PN} along with task-sdk-bare RDEPENDS_${PN} += "your-lib-dev” 14 Creating your own SDK ➢ Create meta-toolchain-<YOUR>.bb in recipes/meta ➢ Set TOOLCHAIN_TARGET_TASK = "task- <YOUR>-toolchain-target" ➢ Set TOOLCHAIN_HOST_TASK = "task- <YOUR>-toolchain-host" ➢ Add require meta-toolchain.bb ➢ Set SDK_SUFFIX to something 15 Creating your own SDK bitbake meta-toolchain-<YOUR> 16 Using SDK ➢ Untar SDK tarball tar -C / -xjf angstrom-armv5te-linux-gnueabi- toolchain-qte.tar.bz2 ➢ Source the setup script source /usr/local/angstrom/arm/environment-setup ➢ SDK is configured !! 17 Future ➢ Use OpenEmbedded Core Features ➢ Multilib support ➢ Upgrade to gcc 4.6 ➢ Enable gold along with GNU ld ➢ Automatic regression testing 18 QA Thank you 19.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    19 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us