OpenEmbedded & BitBake

Slides:



Advertisements
Similar presentations
Extending Eclipse CDT for Remote Target Debugging Thomas Fletcher Director, Automotive Engineering Services QNX Software Systems.
Advertisements

COMPUTERS: TOOLS FOR AN INFORMATION AGE Chapter 3 Operating Systems.
EIONET Training Beginners Zope Course Miruna Bădescu Finsiel Romania Copenhagen, 27 October 2003.
Configuration management
Configuration management
Vakgroep Informatietechnologie Deel III: Paradigma’s Software Ontwikkeling 2. Make-bestanden versus Ant Prof.Dr.Ir. Filip De Turck.
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
ANT: Another Nice Tool Ali Beyad October 1, 2003.
UNDERSTANDING JAVA APIS FOR MOBILE DEVICES v0.01.
MC365 Ant. Today We Will Cover: Overview of Ant Installing Ant Using the Ant command line tool Various Ant commands available Using Ant in Eclipse.
About apache ant. Hello world with ant HelloWorldWithAnt.htmlhttp://ant.apache.org/manual/tutorial- HelloWorldWithAnt.html.
01 Introduction to Java Technology. 2 Contents History of Java What is Java? Java Platforms Java Virtual Machine (JVM) Java Development Kit (JDK) Benefits.
Shell and Flashing Images Commands and upgrades. RS-232 Driver chip – ST3232C Driver chip is ST3232C Provides electrical interface between UART port and.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Linux Operations and Administration
Input/Output Controller (IOC) Overview Andrew Johnson Computer Scientist, AES Controls Group.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Robert Clevenger Principal Product Manager Oracle Corporation.
LINUX System : Lecture 3 Vmware, Cygwin, LINUX installation Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang University.
Open Source Software An Introduction. The Creation of Software l As you know, programmers create the software that we use l What you may not understand.
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
An Implementation of iSCSI initiator on a Zaurus PDA Presented by They Yu Shu 12 August 2005.
Lab 11 Department of Computer Science and Information Engineering National Taiwan University Lab11 - Porting 2014/12/9/ 26 1.
CSnake C++ build automation based on CMake and Python Maarten Nieber, 2009.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
Cloud Standard API and Contextualization
Configuration Management (CM)
Presented By: Muhammad Tariq Software Engineer Android Training course.
Tutorial build Main ideas –Reuse as much previously obtained configuration information as possible: from Babel, cca-spec-babel, etc. –Extract all irrelevant.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
ATCA based LLRF system design review DESY Control servers for ATCA based LLRF system Piotr Pucyk - DESY, Warsaw University of Technology Jaroslaw.
Ant & Jar Ant – Java-based build tool Jar – pkzip archive, that contains metadata (a manifest file) that the JRE understands.
Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically generated web pages.
Linux Kernel Management. Module 9 – Kernel Administration ♦ Overview The innermost layer of Linux operating system is the kernel, which is a thin layer.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
J.P. Wellisch, CERN/EP/SFT SCRAM Information on SCRAM J.P. Wellisch, C. Williams, S. Ashby.
 Programming - the process of creating computer programs.
introductory lecture on java programming
Yannick Patois - Datagrid Software Repository Presentation - March, n° 1 Datagrid Software Repository Presentation CVS, packages and automatic.
Build Systems Presentation December 14, 2015 Noon-1pm Kathy Lee Simunich Bldg. 203/ D120 Brought to you by: Argonne Java.
Apache Web Server Architecture Chaitanya Kulkarni MSCS rd April /23/20081Apache Web Server Architecture.
My NSLU2 (slug + urchin = slurchin?) Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
Implementation of Embedded OS
Introduction to Programming 1 1 2Introduction to Java.
CHAPTER 2 COMPUTER SOFTWARE. LEARNING OUTCOMES At the end of this class, students should be able to:  Explain the significance of software  Define and.
SG Introduction to ANT scmGalaxy Author: Rajesh Kumar
Maven and Jelly James Strachan. Introduction Maven and Jelly are both Apache projects at Jakarta Ultimately both will be top.
Linux Systems Administration 101 National Computer Institute Sep
1 Buildroot. Building embedded Linux systems. Buildroot Developer Day.
An Embedded Wireless Mini-Server with Database Support Presented by: Amit Kumar.
Cross-compilation with OpenEmbedded LinuxTag 2008 Robert Schuster OpenEmbedded.
Computer System Structures
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Ottawa Linux Symposium 2007
CELF Embedded BOF - Ottawa - July 2008
Android.
Embedded Linux Conference - April 2009
5 SYSTEM SOFTWARE CHAPTER
Chapter 4.
Chapter 2: The Linux System Part 1
5 SYSTEM SOFTWARE CHAPTER
The Most Popular Android UI Automation Testing Tool Andrii Voitenko
Build Tools Software Engineering SS 2007
Software Engineering and Architecture
Presentation transcript:

OpenEmbedded & BitBake Open Source Software Carlos Ramirez Martinez-Eiroa Professor: Corby Schmitz

Index Build Tools Make Ant Maven OpenZaurus OpenEmbedded BitBake

Evolution Make Ant Maven BuiltRoot BitBake

Build Tools The process of building a computer program is usually managed by a build tool Build Tool: program that coordinates and controls other programs The build utility needs to compile and link the various files, in the correct order

Make Initial release: 1977 Already seen in class

Ant I Similar to make, but: Implemented using the Java language Requires the Java platform Is best suited to building Java projects Ant uses XML to describe the build process and its dependencies - Make has its Makefile format

Ant II Conceived by James Duncan Davidson while turning Apache Tomcat (from Sun) into open source A proprietary version of Make was used to build it on the Solaris Operating Environment

Ant III In the open source world there was no way of controlling which platform was used to build Tomcat Ant was created as a simple, platform-independent tool to build Tomcat from directives in an XML "build file”

Ant IV In a Makefile the actions required to create a target are specified as shell commands which are specific to the current platform (usually Unix) Ant provides a large amount of built-in functionality which can guarantee will behave (nearly) identically on all platforms

Ant V January 2000, Ant was moved to a separate CVS module and was promoted to a project of its own, independent of Tomcat, and became Apache Ant

Maven uses a construct known as a Project Object Model (POM) to describe: The software project being built Its dependencies on other external modules and components The build order A key feature of Maven is that it is network-ready - The core engine can dynamically download plug-ins from a repository

Towards OpenEmbedded

A Bit of History I 2001: Sharp introducestheSL-5000 PDA running Linux 2002: Chris Larson finds out that the SharpROM sucks and starts hacking on a build system for a customized Linux distribution called "OpenZaurus” 2002-2003: The OpenZaurus build system is getting stretched (beyond belief) by adding support for many more packages and target devices January 2003: Brainstorming towards a new distribution and device independent build system

A Bit of History II February 2003: Holger Schurig creates the OpenEmbedded repository and starts hacking on the first version May 2003: Chris Larson adds major functionality to the OpenEmbedded core and starts converting packages from the OpenZaurus build system December 2003: Michael Lauer releases OpenZaurus3.3.5, abandons the OpenZaurus build system, and converts100s of packages to OpenEmbedded December 2004: OpenEmbedded is split up into the BitBake build system and the OpenEmbedded metadata

OpenZaurus OpenEmbedded is the successor to the great OpenZaurus project The OpenZaurus project was created as an alternative ROM image for the Sharp Zaurus Personal Mobile Tool

(ROM image) (ROM image: computer file which contains a copy of the data from a read-only memory chip Software which is being developed for embedded computers is often written to ROM files for testing on a standard computer before it is written to a ROM chip for use in the embedded system)

OpenZaurus II The project had pushed buildroot to its limits Buildroot: set of Makefiles and patches that makes it easy generate a cross-compilation toolchain and root filesystem for a target Linux system using the uClibc C library

OpenZaurus III Buildroot supported the creation of ipk packages, feeds and images and had support for more than one machine But => impossible to use different patches, files for different architectures, machines or distributions (ipk: lightweight package management system designed specifically for use in Linux devices with limited storage)

OpenEmbedded OpenEmbedded was created to overcome this shortcoming On 7 December 2004 Chris Larson split the project into two parts: BitBake, a generic task executor and OpenEmbedded, the metadata for BitBake

OpenEmbedded II Software framework to create Linux distributions for embedded systems This may include bootloader, Linux, and applications Is a set of metadata used to cross-compile, package and install software packages License: GPL

Objectives Be self-contained Be able to use external toolchains or build them Easily cross-compile software, build packages or create root-filesystems Easily add new features, machines, architectures,…

BitBake I OpenEmbedded built tool Controls how to build things and the build dependencies Collects and manages an open set of largely independent build descriptions (package recipes) and builds them in proper order

BitBake II Used to compile different Linux kernels for a variety of PDAs Easier to use (in theory) than manually using tools like patch and make Programming language: Python License: GNU General Public License (GPL), MIT/X Consortium License

Process of Making Images Binary Packages BitBake Recipes Flash Image Task Graph

BitBake File and Data Types Three different file types: .conf: configuration data .bbclass: (build) classes .bb (.inc): package recipes BitBake parses the build classes, config files, and recipes For every task BitBake creates a shell script on-the-fly and executes it

Main Tasks TASK DESCRIPTION FUNCTION Fetch Downloads data from upstream do_fetch() Unpack Unpacks data do_unpack() Patch Applies patches do_patch() Configure Configures the source tree do_configure() Compile Compiles the source tree do_compile() Stage Installs to the staging area do_stage() Install Installs into the packaging are do_install() Package Creates packages do_package()

BitBake Recipe DESCRIPTION = "Hello world program“ PR = "r0“ SRC_URI = "file://myhelloworld.c \ file://README.txt“ do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/myhelloworld.c -o myhelloworld } do_install() { install -m 0755 -d ${D}${bindir} ${D}${docdir}/myhelloworld install -m 0644 ${S}/myhelloworld ${D}${bindir} install -m 0644 ${WORKDIR}/README.txt ${D}${docdir}/myhelloworld

Summary I OpenEmbedded: A metadata repository containing Build classes Machine configurations Distribution policies Recipes To create complete embedded Linux distributions from scratch

Summary II BitBake: A simple tool to execute tasks on metadata Parser to handle metadata Package graph to handle package interdependencies Task graph to handle task interdependencies On-the-fly shell script generator

Why all this? SlugOS/BE is a replacement firmware image for the Linksys NSLU2 It is produced using OpenEmbedded

Questions?