OpenEmbedded

Jump to: navigation, search
OpenEmbedded
Developer(s) 75+ developers[1]
Development status Active
Operating system Linux
Platform Cross-platform
Type Build automation
License MIT
Website www.openembedded.org

OpenEmbedded is a build automation framework and cross-compile environment used to create Linux distributions for embedded devices.[2] The OpenEmbedded framework is developed by the OpenEmbedded community, which was formally established in 2003. OpenEmbedded is the recommended build system of the Yocto Project, which is a Linux Foundation workgroup that assists commercial companies in the development of Linux-based systems for embedded products.

The build system is based on BitBake "recipes", which specify how a particular package is built, but also includes lists of dependencies and source code locations, as well as instructions on how to install and remove a compiled package. OpenEmbedded tools use these recipes to fetch and patch source code, compile and link binaries, produce binary packages (ipk, deb, rpm), and create bootable images.

Historically, OpenEmbedded's collection of recipes were stored in a single repository, and the metadatad was structure in a form now called "OpenEmbedded-Classic". By 2010, it had become increasingly difficult to manage the ever-growing number of recipes. To resolve this, recipe metadata was split into multiple layers. The lowest layer, which includes platform-independent and distribution-independent metadata is called "OpenEmbedded-Core".[3] Architecture-specific, application-specific and distribution-dependent instructions are applied in appropriate target support layers that can override or complement the instructions from lower layers. Additionally, changes to the recipes at the core layer are now managed with a pull model: instead of committing their changes directly to the repository (as was previously the case), developers now send their patches to the mailing list. The patches, if approved, are then merged (pulled) by a maintainer.[3]

The OpenEmbedded framework can be installed and automatically updated via Git.[2]

History

The OpenEmbedded Project (OE for short, but mostly called OE-dev, following the name of the mailing list[4]) was created by Chris Larson, Michael Lauer, and Holger Schurig, merging the achievements of OpenZaurus with contributions from projects like Familiar Linux and OpenSIMpad into a common codebase. OpenEmbedded superseded these projects and was used to build any of them from the same code base. Stable maintenance builds exist for the old OpenEmbedded-Classic,[5] although most development is, or will be, based on the new OpenEmbedded-Core in the future.

The OpenEmbedded-Core Project (OE-Core for short) resulted from the merge of the Yocto Project with OpenEmbedded.[6] This is the most recent version of OpenEmbedded and many of the OE-dev recipes are available in OE-Core. Newer versions of package recipes may only get ported for OpenEmbedded-Core.

Layer organisation

OpenEmbedded-Core has adapted this layered structure in the merge with Yocto and new layer entries were added over time.[7][8] The Layers represent a structure which is only of declarative nature. The specific entries are stricter in the scope of deciding which entry provides which packages. Overview of layers is available in: layers.openembedded.org/layerindex/branch/master/layers/

Developer layer
The user-defined layer for custom Bitbake recipes. Embedded system software developers would place their recipe here if the software would not fit the commercial or base layer.
Commercial layer
Packages, plugins and configurations from open source vendors go in this layer.
UI-specific layer
Layers currently present within the meta-openembedded layer:
  • meta-efl (Enlightenment window manager)
  • meta-gnome (GNOME window manager)
  • meta-gpe (GPE window manager)
  • meta-xfce (Xfce window manager)
Hardware-specific layer
Yocto layer
  • meta-yocto (Yocto Project layer[7][6])
OpenEmbedded-Core layer
  • openembedded-core
  • meta-openembedded

Distributions supported

In OpenEmbedded-Classic, the configurations from Base- to the UI-Layer can be supplemented by various Linux distributions. The following list is available for OpenEmbedded:

Supported hardware

Various devices are supported:[11]

Boards and processors
The BeagleBoard from Texas Instruments, the Gumstix,[12][13] Nvidia Tegra and several I.MX devices (e.g. I.MX28 series)[14] from Freescale Semiconductor are supported.[citation needed]
Other well known boards like the PandaBoard are also supported.[15][improper synthesis?][16][improper synthesis?] along with other hardware.
Some devices of the IBM PowerPC series are supported by OpenEmbedded.[17]
Smartphones
Smartphones like the Nokia N800 and Neo FreeRunner are supported.
Porting to new hardware
The constellation of OpenEmbedded, especially the open design, allows it to get OpenEmbedded to adapt new hardware fairly easy.[18][improper synthesis?][19][improper synthesis?]

See also

References

  1. ^ "OpenEmbedded Developers". [dead link]
  2. ^ a b Brake, Cliff; et al. (2015), "Welcome to OpenEmbedded", OpenEmbedded Wiki, Blacksburg, VA: openembedded.org  .
  3. ^ a b Eggleton, Paul (2015), "OpenEmbedded-Core", OpenEmbedded Wiki, Blacksburg, VA: openembedded.org .
  4. ^ "Mailing lists". [dead link]
  5. ^ "2011.03-maintenance". [dead link]
  6. ^ a b "Yocto Project Aligns Technology with OpenEmbedded and Gains Corporate Collaborators". [dead link]
  7. ^ a b Yocto & OpenEmbedded Core Layers[dead link]
  8. ^ a b "OpenEmbedded Metadata Index - layers". [dead link]
  9. ^ "SHR". 
  10. ^ Ben Combee on Palm Developer Forum - Fri Jul 16, 2010. Building static libs[dead link]
  11. ^ "Overview of OE supported machines". [dead link]
  12. ^ Using OpenEmbedded build system for Gumstix[dead link]
  13. ^ TI Gumstix OpenEmbedded development environment[dead link]
  14. ^ Unofficial OpenEmbedded I.MX28 support[dead link]
  15. ^ "PandaBoard". [dead link]
  16. ^ "OMAP Angstrom Main". 
  17. ^ Power.org devcon 07 OpenEmbedded presentation[dead link]
  18. ^ Yocto Project Board Support Package guide
  19. ^ "Yocto Project Development Manual". 

External links