Embedded

ReliableEmbeddedSystems

title-1

Course Objectives

After a quick introduction to Embedded Linux (2 days) to provide an understanding of the essentials to utilize the Yocto Project (3 days). After the introduction we’ll see how a BSP/framework maintainer would use the Yocto Project as well as developers who might not even want/need to know they are using it.

Description

This five day training combines theory with hands-on exercises in order to introduce Embedded Linux and the Yocto Project.
It answers frequently asked questions like:

  • What is GNU/Linux?
  • Why use upstream?
  • Where to get u-boot/the kernel from? How to configure/build/install it?
  • How does interprocess communication work and what to use/avoid?
  • Is it really necessary to use another version of the tool-chain/libraries/packages for each and every GNU/Linux project and on top of that to follow a different work-flow each time?
  • Can you ensure that the development environment is identical for all developers/suppliers and that you can still produce identical builds like today in 10+ years from now?
  • Can the YP help you with Open Source license audits or do you prefer a copyright troll instead?
  • ... and much more

Hands-on sessions are performed on target hardware (e.g. phyBOARD-Mira i.MX 6 Quad - Full Featured). After the training the students will be able to download a docker image with Ubuntu 16.x and all host dependencies pre-installed plus the examples in order to work with the course material in their own labs. Please note that the first two days Introduction to Embedded Linux might not be enough to follow the Yocto training. You might want to have a look at here. We'll have a quick look at how Embedded GNU/Linux works and configure/build the Linux kernel among other things.

Who should attend?

You already use GNU/Linux for your projects and have probably heard about the Yocto Project, but did not dare to have a closer look into it, or had difficulties using it. You don’t know whether and how your daily workflow can be accomodated in the YP and generally find the YP rather complicated. Why do we need all this since up to know everything was (supposedly) much easier? After the training you should be able to decide whether you need the YP or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers and other parties interested in the YP, with a minimal knowledge of Embedded GNU/Linux.

Prerequisites

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish.

  • on-site - instructor driven *)
  • on-line - instructor driven **)
  • on-site/on-line combination - instructor driven *)**)

We’ll provide laptops*), boards*)**), workbooks and reference books (in English)*)**), remote access to servers and boards **), screen-sharing **), audio-bridge **). For possible training delivery options check here and/or ask here.

The work- and reference books typically stay with the students after the training.

Timetable

  • 5 days in a row 09:00 until 17:00 with breaks (your timezone - TBD)

Trainer

Course Outline

Introduction

  • Introduction
  • History

Eval board

  • Eval Board Introduction
  • Booting
    • How does Linux boot on a PC
    • How is an Embedded System different?
  • Booting the target
    • Boot Sequence
    • SD card partitions

Stuff needed

  • U-Boot
  • U-Boot: Fancy Stuff
  • U-Boot: Get/Configure/Build/Install
  • U-Boot: Commands
  • Fdt
  • Kernel
  • Kernel: Get/kbuild
  • Kbuild
  • Kernel: Configure/Build/Install
  • Kernel: fdt
  • Kernel: modules

Kernel modules

  • ...can be
  • init/exit
  • Licensing
  • tainted module/kernel
  • EXPORT_SYMBOL()
  • out of tree .ko makefile
  • module-init-tools
  • put module in kernel tree
  • build and install
  • load it
  • parameter passing
  • Access TCB

Character Driver

  • Device Files
    • Intro
    • device types
    • major/minor
    • Architecture
  • Driver Kernel Interface
  • Device Driver
    • Intro
    • Registration
    • Initialization
    • Open Release
  • Misc. Char Drivers

User Space Debugging

  • Debugging: Simple Tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Debugging: Advanced Tools
    • What’s a Debugger?
    • target gdb
    • gdb remote debugging

Kernel Debugging

  • Debugging Intro
  • KGDB/KDB
  • JTAG

Process IPC

  • IPC Intro
    • Unix/Linux architecture
    • What’s on OS?
    • What’s a scheduler?
    • Linux scheduler
    • Linux priorities
    • Linux scheduler(s)
    • Linux scheduling classes
    • Process/Task/Thread
    • errno
    • fork()
    • Process termination
    • Process states
    • Zombies
    • More about Processes
    • Watch a process
  • Simple IPC
    • shell redirection
    • shelling out
    • tempfiles
  • IPC Generic
  • IPC
    • Message passing vs. shared memory
  • Advanced IPC
    • Pipes
    • Signals
    • Interrupted System Calls
    • POSIX.4 Message Queues
    • Semaphores Introduction
    • Mutex
    • Semaphores
    • Shared Memory
    • Sockets
    • select
      • self-pipe trick
    • Other IPC mechanisms
  • IPC techniques to avoid

Real-Time

  • Prerequisites
    • Kernel vs. User Space
    • Toolchain
    • Program Sections
    • Interrupts
    • Reentrant Code
  • Real-Time Intro
    • Time/Utility Functions
    • What is Real-Time?
    • Determinism
    • What is hard real-time?
  • Real-Time Linux
  • "Degrees" of real-time behavior
  • Dual kernel
    • Xenomai
    • Measurement results
  • Real-Time Myths

Yocto Introduction

  • What is Yocto?
  • Why use the YP?
  • What is the YP?
  • Some tools under the YP umbrella
    • Poky
    • BitBake
    • OE-Core
    • Metadata

The Yocto Autobuilder

  • Intro
    • What is the Yocto Autobuilder?
    • Docker container (pull, launch container)
  • Yocto build environment without Docker/Yocto Autobuilder

The YP Workflow

  • Intro
  • Workflow
    • OE architecture
  • Configuration
    • User Configuration
    • Features
      • Machine Features
      • Distro Features
      • Combined Features
      • Image Features
    • Recipe Versioning
      • Intro
      • Hyphens
      • SCM-based
      • Pitfalls
      • Devel/Stable
      • Overrides
    • Metadata (Recipes)
    • Machine (BSP) Configuration
    • Distribution Policy
  • Sources
  • Build
    • Source fetching: do_fetch, do_unpack
    • Patching
    • Configure/Compile/Install
    • Pseudo
    • recipetool
    • Examples of Recipes
      • Single .c File Package
      • Autotooled Package
      • Splitting App. in Multiple Packages
    • Output Analysis/Packaging
    • Image Generation
    • SDK Generation
  • Customizing Images
    • Intro
    • local.conf
    • IMAGE_FEATURES
    • custom .bb files - inherit core-image
    • custom .bb files - based on core-image-minimal
    • custom packagegroups

BitBake

  • History
  • Syntax
    • Variable Expansion
    • Variable Assignment
    • Pre-/Append
    • Removal (Override Style Syntax)
    • Variable Flag Syntax
    • Conditional Syntax (Overrides)
  • Debugging
    • BitBake debugging
    • find recipes
    • find images
    • find packagegroups
    • BitBake Environment
    • BitBake logs
    • Re-BitBake stuff
      • force build/specific task
      • cleansstate
      • invalidate stamp
    • Devshell
    • Dependencies
    • Packages
    • Killall Bitbake
    • BitBake with ncurses wrapper
    • Tools/Tweaks
  • Cleaning
    • Cleaning to gain disc space
    • Cleaning to rebuild

Layers

  • Intro
  • bitbake-layers tool
  • yocto-layer tool

BSP

  • Intro
  • System Development Workflow
  • BSP Developer’s Guide
    • bsp-tool

Kernel

  • Intro
  • System Development Workflow
  • Kernel Development Manual
    • defconfig + configuration fragment
    • in tree kmod
    • out of tree kmod
    • fdt

Software Development Kit

  • Software Development Kit
    • Intro
    • Cross-Development Toolchain
    • Sysroot
    • The QEMU Emulator
    • Eclipse Yocto Plug-in
    • Performance Enhancing tools
  • Installing SDKs & Toolchains
  • Cross-Toolchains/SDKs
    • Intro
    • Building a Cross-Toolchain installer
    • Using the Standard SDK
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Extensible SDK

Package Management

  • Software updates
  • Working with packages
    • IPK
    • creating a package feed
    • installing a package with opkg on the target

Licensing

  • Intro
  • Add custom license to the YP
  • Open Source License Compliance with the YP

Devtool

  • Intro
  • Add recipe/Build/Deploy
  • Create/Add layer
  • Finish
  • Modify/Update-Recipe
  • Build/Run
  • Build Image

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.

Public Intely Direct

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

Note: Alternatively, there is also a four-day Yocto training The Yocto Project - An Overview.

title-1

Course Objectives

To provide an understanding of the essentials of embedded GNU/Linux, how the bits and pieces fit together. What components are needed to build an embedded GNU/Linux system, where to get them from and how to configure/build/install them? Where to get help from? What about those software licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and develop your own embedded GNU/Linux systems after completing this training successfully.

Description

This five day training class uses hands-on exercises combined with instruction to illustrate the concepts of embedded GNU/Linux. It is designed to bring you quickly up to speed. The philosophy, concepts and commands necessary to make effective use of GNU/Linux are described through a combination of theory and on-the-job training. Don’t reinvent the wheel, but learn from an experienced trainer and take home a working knowledge of GNU/Linux and the ability to use it effectively in your own embedded development project.

Prerequisites

  • Basic familiarity with using a GNU/Linux system (e.g. Ubuntu) as an end user in user space 
  • Basic familiarity with a command line shell 
  • Basic knowledge of user space/application development with GNU/Linux 
  • Basic knowledge concerning embedded processors and development boards 
  • Basic C programming knowledge 
  • …and/or no fear to learn the above… 

Who should attend?

Managers, project managers, software-, hardware-, development-, systems engineers, testers, administrators, technicians and other parties interested in the technology, who want to understand as quickly as possible how Embedded GNU/Linux works. You must use GNU/Linux or you have to luxury to decide whether it makes sense to use it or not. Maybe you already tried to use Embedded GNU/Linux, but are not quite sure that you did everything the right way. You currently use a different operating system and want to figure out whether GNU/Linux might be better and/or cheaper.

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish, worldwide.

  • on-site - instructor driven*) 
  • on-line - instructor driven**) 
  • on-site/on-line combination - instructor driven*)**) 

During the training we’ll provide laptops*), boards*)**), workbooks (in English)*)**), remote access to servers and boards**), screen-sharing**), audio-bridge**).

Check out our training delivery options to see how we can present/customise our material to your specific needs. Feel free to contact us for further inquiries.

Course Outline

Introduction

  • History of Unix/Linux
  • Licensing
  • Standards
  • Working with Free Software
  • Spelunking
  • Unix Philosophy

Host playground

  • architecture
  • shell
  • FHS (file hierarchy standard)
    • Devices, Daemon, Booting, Program Sections, Static/Shared Libraries
  • permissions
    • Access Control, Changing Permissions, umask
  • hard/soft links
  • real/effective uid/gid

Process/IPC

  • Intro
    • What's an OS?
    • What's a scheduler?
    • Linux: scheduler, priorities, scheduling classes
    • process/task/thread
    • errno
    • fork
    • Process termination
    • Process states
    • Zombies
    • More about Processes
  • IPC simple
    • shell redirection, shelling out, tmpfiles
  • IPC Generic
    • Message passing vs. shared memory
  • Advanced IPC
    • pipes
    • signals
    • interrupted system calls
    • message queues
    • semaphores
    • shared memory
    • sockets
    • select/poll
  • IPC techniques to avoid

Embedded Specifics

  • Intro
  • Portability
  • Build
    • Cross/Native toolchain
    Toolchains
  • C-Libraries
    • glibc, uclibc, eglibc, others
    • reduce shared lib size

Eval Board

  • Booting
    • How does LInux boot on a PC?
    • How is an Embedded System different?
  • Booting the target
    • Boot sequence, SD card and partitions

Stuff Needed

  • Host
    • Toolkit
      • The Yocto Project
      • Install Yocto SDK
    • SD card
    • screen
    • minicom
    • tftp server
    • Root file systems
    • Nfs server
  • Target
    • U-Boot
      • Das U-Boot
      • Scripting
      • Fancy stuff
        • Spash Screen
        • U-Boot environment from Linux
        • Post mortem
        • Automatic SW update
        • How to contribute?
      • Get/Configure/Build/Install
      • Commands
    • Flat device tree
      • What is a flat device tree?
      • Device tree compiler
      • Examples/Documentation
    • Linux kernel
      • Get
      • Kbuild
      • Multi Platfrom Support
      • Configure/Build/Install
      • Get/configure/build install
      • What is uImage?
      • Build fdt
      • In-tree kernel modules

Rool File Systems

  • Available root file systems
  • prepare minimal-dev rootfs
  • tftp server
  • rootfs on ramdisk
  • mtd
  • rootfs on jffs2
  • mtdparts
  • rootfs on cramfs
  • rootfs on ro ext2
  • build/execute what's applicable from above on the target board
  • rootfs comparison

Customizations

  • System hangs
  • pseudo tty
  • getty
  • runlevel
  • static ip
  • mount nfs
  • ssh server

User Space Debugging

  • Debugging Intro
    • What's a bug?
    • Types of bugs
    • Debugging strategy
  • Simple tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Advanced tools
  • What’s a debugger?
  • gdb
    • host gdb
    • target gdb
    • gdb remote debugging
    • gdb remote debugging with GUI

User Space Profiling/Tracing

  • Profiling/Tracing tools
    • strace
    • system timers
    • gprof
    • gcov
    • code optimization
    • oprofile
    • perf
  • top an friends
    • top
    • latencytop
    • powertop
    • powerdebug
  • crash

Real-time

  • prerequisites
    • Kernel vs. User Space
    • interrupts
    • reentrant code
  • Real-time Intro
    • What is Real-time
    • Determinism
  • Real-time Linux
    • Hypervison
    • Dual kernel
    • Fully preemtive kernel
    • 0 Vanilla Linux kernel
    • 1 explicit preemption points
    • 2 implicit preemption points
    • 3 real-time preemption patch
    • fully preemptive kernel
    • hard real-time extensions
  • Adeos/Xenomai
    • adeos patch
    • xenomai
    • patch/config/build kernel
    • run it on board
  • Real-time myths
    • must be fast
    • rate monotonic
    • universal methodology
    • scheduling theory
    • RTOS vs. Linux
    • New hardware
    • Dual kernel vs. Preempt-rt
    • Future outlook Dual kernel
    • Future outlook Preempt-rt

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.

Public ELiSA Direct

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

title-1

Introduction

This four day training combines theory with hands-on exercises in order to introduce the Yocto Project.
It answers frequently asked questions like:

  • Is it really necessary to use another version of the tool-chain/libraries/packages for each and every GNU/Linux project and an top of that to follow a different work-flow?
  • Can you ensure that the development environment is identical for all developers/suppliers and that you can still produce identical builds like today in 10+ years from now?
  • Can the YP help find out under what software licenses the packages you use are licensed?
  • ... and much more

Hands-on sessions are performed on target hardware (e.g. phyBOARD-Mira i.MX 6 Quad - Full Featured). After the training the students will be able to download a docker image with Ubuntu 16.x and all dependencies pre-installed plus the examples in order to work with the course material in their own labs. Please note that this is not an introductory course to Embedded GNU/Linux like the one we offer here. You should already know how Embedded GNU/Linux works and maybe you even configured/built the Linux kernel for some of your projects.

Book now

Public Yocto Direct

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

Course Objectives

To provide an understanding of the essentials to utilize the Yocto Project on top of your firm knowledge about Embedded GNU/Linux, the GNU/Linux kernel and friends. We’ll see how a BSP/framework maintainer would use the Yocto Project as well as developers who might not even want/need to know they are using it.

Who should attend?

You already use GNU/Linux for your projects and have probably heard about the Yocto Project, but did not dare to have a closer look into it, or had difficulties using it. You don’t know whether and how your daily workflow can be accomodated in the YP and generally find the YP rather complicated. Why do we need all this since up to know everything was (supposedly) much easier? After the training you should be able to decide whether you need the YP or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers and other parties interested in the YP, with a solid knowledge of Embedded GNU/Linux.

Prerequisites

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish.

  • on-site - instructor driven *)
  • on-line - instructor driven **)
  • on-site/on-line combination - instructor driven *)**)

We’ll provide laptops*), boards*)**), workbooks and reference books (in English)*)**), remote access to servers and boards **), screen-sharing **), audio-bridge **). For possible training delivery options check here and/or ask here.

The work- and reference books typically stay with the students after the training.

Timetable

  • 4 days in a row 09:00 until 17:00 with breaks (your timezone - TBD)

Trainer

Course Outline

Day 1

Introduction

  • Introduction
  • History
  • Licensing
  • Standards
  • The Unix Philosophy

Embedded Specifics

  • What’s an Embedded System?
  • Embedded vs. Desktop Linux
  • Software Release
  • Build for your Target
  • Toolchains
  • C-libraries

Eval board

  • Eval Board
  • Booting GNU/Linux on a PC
  • Booting GNU/Linux on an Embedded System
  • Boot Sequence
  • SD card partitions

Yocto Introduction

  • What is Yocto?
  • Why use the YP?
  • What is the YP?
  • Poky
  • BitBake
  • OE-Core
  • Metadata

The Yocto Autobuilder

  • What is the Yocto Autobuilder?
  • Docker container (pull, launch container)
  • Yocto build environment without Docker/Yocto Autobuilder

Day 2

The YP Workflow

  • Intro
  • Workflow
    • OE architecture
  • Configuration
    • User Configuration
    • Features
      • Machine Features
      • Distro Features
      • Combined Features
      • Image Features
    • Recipe Versioning
      • Intro
      • Hyphens
      • SCM-based
      • Pitfalls
      • Devel/Stable
      • Overrides
    • Metadata (Recipes)
    • Machine (BSP) Configuration
    • Distribution Policy
  • Sources
  • Build
    • Source fetching: do_fetch, do_unpack
    • Patching
    • Configure/Compile/Install
    • Pseudo
    • recipetool
    • Examples of Recipes
      • Single .c File Package
      • Autotooled Package
      • Splitting App. in Multiple Packages
    • Output Analysis/Packaging
    • Image Generation
    • SDK Generation
  • Customizing Images
    • Intro
    • local.conf
    • IMAGE_FEATURES
    • custom .bb files - inherit core-image
    • custom .bb files - based on core-image-minimal
    • custom packagegroups

BitBake

  • History
  • Syntax
    • Variable Expansion
    • Variable Assignment
    • Pre-/Append
    • Removal (Override Style Syntax)
    • Variable Flag Syntax
    • Conditional Syntax (Overrides)
  • Debugging
    • BitBake debugging
    • find recipes
    • find images
    • find packagegroups
    • BitBake Environment
    • BitBake logs
    • Re-BitBake stuff
      • force build/specific task
      • cleansstate
      • invalidate stamp
    • Devshell
    • Dependencies
    • Packages
    • Killall Bitbake
    • BitBake with ncurses wrapper
    • Tools/Tweaks
  • Cleaning
    • Cleaning to gain disc space
    • Cleaning to rebuild

Day 3

Layers

  • Intro
  • bitbake-layers tool
  • yocto-layer tool

BSP

  • Intro
  • System Development Workflow
  • BSP Developer’s Guide
    • bsp-tool

Kernel

  • Intro
  • System Development Workflow
  • Kernel Development Manual
    • defconfig + configuration fragment
    • in tree kmod
    • out of tree kmod
    • fdt

Application/Software Development Kit

  • Software Development Kit
    • Intro
    • Cross-Development Toolchain
    • Sysroot
    • The QEMU Emulator
    • Eclipse Yocto Plug-in
    • Performance Enhancing tools
  • Installing SDKs & Toolchains
  • Cross-Toolchains/SDKs
    • Intro
    • Building a Cross-Toolchain installer
    • Using the Standard SDK
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Extensible SDK

Eclipse

  • Intro
  • Application Development Workflow
  • Working with Eclipse
    • rootfs features, kernel + fdt, rootfs
    • install JDK
    • install Eclipse
    • configure Eclipse
    • install Yocto Plugin
    • Configure the Yocto Plugin
    • Create Autotooled Project
    • Configuring the Cross-Toolchains
    • Build the Project

Day 4

User Space Debugging

  • Intro
  • gdb
    • target gdb
    • gdb remote debugging
    • gdb remote debugging with Eclipse
    • remote run from Eclipse

Profiling/Tracing

  • Yocto Tracing tools
    • perf
    • gprof
    • gcov
    • strace
    • ftrace
    • systemtap
    • oprofile
    • LTTng
  • top an friends
    • top
    • latencytop
    • powertop
    • powerdebug
  • crash

Package Management

  • Software updates
  • Working with packages
    • IPK
    • creating a package feed
    • installing a package with opkg on the target

Licensing

  • Intro
  • Add custom license to the YP
  • Open Source License Compliance with the YP

Devtool

  • Intro
  • Add recipe/Build/Deploy
  • Create/Add layer
  • Finish
  • Modify/Update-Recipe
  • Build/Run
  • Build Image

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.

Note: For in-house trainings companies like to prepend this course with Introduction to Embedded Linux - a short Crash Course to get their engineers quickly up to speed with Embedded GNU/Linux. Alternatively, there are also 2 days of Embedded Linux and 3 days of Yocto with the course Introduction to Embedded Linux and Yocto.

title-1

Course Objectives

To provide an understanding of the essentials to utilize the Yocto Project on top of your firm knowledge about Embedded GNU/Linux, the GNU/Linux kernel and friends. We’ll see how a BSP/framework maintainer would use the Yocto Project as well as developers who might not even want/need to know they are using it.

Introduction

This four day training combines theory with hands-on exercises in order to introduce the Yocto Project.
It answers frequently asked questions like:

  • Is it really necessary to use another version of the tool-chain/libraries/packages for each and every GNU/Linux project and an top of that to follow a different work-flow?
  • Can you ensure that the development environment is identical for all developers/suppliers and that you can still produce identical builds like today in 10+ years from now?
  • Can the YP help find out under what software licenses the packages you use are licensed?
  • ... and much more

Hands-on sessions are performed on target hardware (e.g. phyBOARD-Mira i.MX 6 Quad - Full Featured). After the training the students will be able to download a docker image with Ubuntu 16.x and all dependencies pre-installed plus the examples in order to work with the course material in their own labs. Please note that this is not an introductory course to Embedded GNU/Linux like the one we offer here. You should already know how Embedded GNU/Linux works and maybe you even configured/built the Linux kernel for some of your projects.

Who should attend?

You already use GNU/Linux for your projects and have probably heard about the Yocto Project, but did not dare to have a closer look into it, or had difficulties using it. You don’t know whether and how your daily workflow can be accomodated in the YP and generally find the YP rather complicated. Why do we need all this since up to know everything was (supposedly) much easier? After the training you should be able to decide whether you need the YP or not. The workshop is aimed at software-, development-, system engineers, testers, administrators, engineers and other parties interested in the YP, with a solid knowledge of Embedded GNU/Linux.

Prerequisites

Delivery Options

All the training material is English, but the presentation of it can be in English or in German, as you wish.

  • on-site - instructor driven *)
  • on-line - instructor driven **)
  • on-site/on-line combination - instructor driven *)**)

We’ll provide laptops*), boards*)**), workbooks and reference books (in English)*)**), remote access to servers and boards **), screen-sharing **), audio-bridge **). For possible training delivery options check here and/or ask here.

The work- and reference books typically stay with the students after the training.

Timetable

  • 4 days in a row 09:00 until 17:00 with breaks (your timezone - TBD)

Trainer

Course Outline

Day 1

Introduction

  • Introduction
  • History
  • Licensing
  • Standards
  • The Unix Philosophy

Embedded Specifics

  • What’s an Embedded System?
  • Embedded vs. Desktop Linux
  • Software Release
  • Build for your Target
  • Toolchains
  • C-libraries

Eval board

  • Eval Board
  • Booting GNU/Linux on a PC
  • Booting GNU/Linux on an Embedded System
  • Boot Sequence
  • SD card partitions

Yocto Introduction

  • What is Yocto?
  • Why use the YP?
  • What is the YP?
  • Poky
  • BitBake
  • OE-Core
  • Metadata

The Yocto Autobuilder

  • What is the Yocto Autobuilder?
  • Docker container (pull, launch container)
  • Yocto build environment without Docker/Yocto Autobuilder

Day 2

The YP Workflow

  • Intro
  • Workflow
    • OE architecture
  • Configuration
    • User Configuration
    • Features
      • Machine Features
      • Distro Features
      • Combined Features
      • Image Features
    • Recipe Versioning
      • Intro
      • Hyphens
      • SCM-based
      • Pitfalls
      • Devel/Stable
      • Overrides
    • Metadata (Recipes)
    • Machine (BSP) Configuration
    • Distribution Policy
  • Sources
  • Build
    • Source fetching: do_fetch, do_unpack
    • Patching
    • Configure/Compile/Install
    • Pseudo
    • recipetool
    • Examples of Recipes
      • Single .c File Package
      • Autotooled Package
      • Splitting App. in Multiple Packages
    • Output Analysis/Packaging
    • Image Generation
    • SDK Generation
  • Customizing Images
    • Intro
    • local.conf
    • IMAGE_FEATURES
    • custom .bb files - inherit core-image
    • custom .bb files - based on core-image-minimal
    • custom packagegroups

BitBake

  • History
  • Syntax
    • Variable Expansion
    • Variable Assignment
    • Pre-/Append
    • Removal (Override Style Syntax)
    • Variable Flag Syntax
    • Conditional Syntax (Overrides)
  • Debugging
    • BitBake debugging
    • find recipes
    • find images
    • find packagegroups
    • BitBake Environment
    • BitBake logs
    • Re-BitBake stuff
      • force build/specific task
      • cleansstate
      • invalidate stamp
    • Devshell
    • Dependencies
    • Packages
    • Killall Bitbake
    • BitBake with ncurses wrapper
    • Tools/Tweaks
  • Cleaning
    • Cleaning to gain disc space
    • Cleaning to rebuild

Day 3

Layers

  • Intro
  • bitbake-layers tool
  • yocto-layer tool

BSP

  • Intro
  • System Development Workflow
  • BSP Developer’s Guide
    • bsp-tool

Kernel

  • Intro
  • System Development Workflow
  • Kernel Development Manual
    • defconfig + configuration fragment
    • in tree kmod
    • out of tree kmod
    • fdt

Application/Software Development Kit

  • Software Development Kit
    • Intro
    • Cross-Development Toolchain
    • Sysroot
    • The QEMU Emulator
    • Eclipse Yocto Plug-in
    • Performance Enhancing tools
  • Installing SDKs & Toolchains
  • Cross-Toolchains/SDKs
    • Intro
    • Building a Cross-Toolchain installer
    • Using the Standard SDK
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Extensible SDK

Eclipse

  • Intro
  • Application Development Workflow
  • Working with Eclipse
    • rootfs features, kernel + fdt, rootfs
    • install JDK
    • install Eclipse
    • configure Eclipse
    • install Yocto Plugin
    • Configure the Yocto Plugin
    • Create Autotooled Project
    • Configuring the Cross-Toolchains
    • Build the Project

Day 4

User Space Debugging

  • Intro
  • gdb
    • target gdb
    • gdb remote debugging
    • gdb remote debugging with Eclipse
    • remote run from Eclipse

Profiling/Tracing

  • Yocto Tracing tools
    • perf
    • gprof
    • gcov
    • strace
    • ftrace
    • systemtap
    • oprofile
    • LTTng
  • top an friends
    • top
    • latencytop
    • powertop
    • powerdebug
  • crash

Package Management

  • Software updates
  • Working with packages
    • IPK
    • creating a package feed
    • installing a package with opkg on the target

Licensing

  • Intro
  • Add custom license to the YP
  • Open Source License Compliance with the YP

Devtool

  • Intro
  • Add recipe/Build/Deploy
  • Create/Add layer
  • Finish
  • Modify/Update-Recipe
  • Build/Run
  • Build Image

Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.

Public Yocto Direct

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

Note: For in-house trainings companies like to prepend this course with Introduction to Embedded Linux - a short Crash Course to get their engineers quickly up to speed with Embedded GNU/Linux. Alternatively, there are also 2 days of Embedded Linux and 3 days of Yocto with the course Introduction to Embedded Linux and Yocto.

title-1

Kursziele

Nach einer kurzen Einführung in Embedded Linux (2 Tage), möchten wir Ihnen das Wesentliche zur Nutzung des Yocto Projekts (3 Tage) vermitteln. Nach der Einführung werden wir sehen, wie ein BSP/Framework-Betreuer das Yocto-Projekt verwenden würde, sowie Entwickler, die vielleicht nicht einmal wissen wollen, dass sie es verwenden.

Beschreibung

Dieses fünftägige Training kombiniert Theorie mit praktischen Übungen, um Embedded Linux und das Yocto-Projekt vorzustellen.
Es beantwortet häufig gestellte Fragen wie:

  • Was ist GNU/Linux?
  • Warum Upstream verwenden?
  • Woher bekommt man U-Boot/den Kernel? Wie konfiguriert/baut/installiert man das?
  • Wie funktioniert Interprozesskommunikation und was sollte man verwenden/vermeiden?
  • Ist es wirklich notwendig, für jedes GNU/Linux Projekt eine andere Version der Toolchain/Bibliotheken/Pakete zu verwenden, und dann auch noch bei jedem Projekt einem anderen Workflow zu folgen?
  • Können Sie sicherstellen, dass die Entwicklungsumgebung für alle Entwickler/Lieferanten identisch ist und dass man in 10+ Jahren immer noch die gleichen Builds wie heute reproduzieren kann?
  • Kann das YP dabei helfen herausfinden, unter welchen Softwarelizenzen die von Ihnen verwendeten Pakete lizenziert sind oder bevorzugen Sie stattdessen Bekanntschaft mit einem Copyright-Troll zu machen?
  • ... und vieles mehr

Auf der Zielhardware (z.B. phyBOARD-Mira i.MX 6 Quad - Full Featured) werden praktische Übungen durchgeführt. Nach dem Training können die Studenten für den Yoto spezifischen Teil ein Docker-Image mit Ubuntu 16.x und allen vorinstallierten Abhängigkeiten sowie die Beispiele herunterladen, um mit dem Kursmaterial in ihren eigenen Labors zu arbeiten. Bitte beachten Sie, dass die ersten zwei Tage Einführung in Embedded Linux möglicherweise nicht ausreichen, um dem Yocto-Training zu folgen. Vielleicht möchten Sie hier einen Blick drauf werfen. In den ersten beiden Tagen schauen wir uns kurz an, wie Embedded GNU/Linux funktioniert und konfigurieren/bauen unter anderem den Linux-Kernel.

Wer sollte teilnehmen?

Sie verwenden bereits GNU/Linux für Ihre Projekte und haben wahrscheinlich schon von dem Yocto Projekt gehört, haben es aber nicht gewagt, es näher zu betrachten oder hatten Schwierigkeiten damit. Sie wissen nicht, ob und wie Ihr täglicher Workflow in dem YP untergebracht werden kann und finden das YP im Allgemeinen ziemlich kompliziert. Warum brauchen wir all das, obwohl (angeblich) alles bisher viel einfacher war? Nach dem Training sollten Sie entscheiden können, ob Sie das YP brauchen oder nicht. Der Workshop richtet sich an Software-, Entwicklungs-, Systemingenieure, Tester, Administratoren, Ingenieure und andere an dem YP Interessierte, die minimale Kenntnisse von (Embedded) GNU/Linux haben.

Voraussetzungen

Welche Vortragsmethoden dürfen wir Ihnen anbieten?

Das Trainingsmaterial ist auf Englisch, aber die Präsentation kann sowohl auf Englisch als auch auf Deutsch gemacht werden, ganz wie Sie es wünschen und zwar welt- bzw. europaweit.

  • vor Ort (öffentliche Schulung oder in-house bei Ihnen) - mit Trainer *)
  • Online - mit Trainer **)
  • On-site/Online-Kombination - mit Trainer *)**)

Während des Trainings bieten wir Laptops *), Boards *) **), Arbeitshefte und Nachschlagewerke (in Englisch - elektronisch oder gedruckt) *) **), Fernzugriff auf Server und Boards **), Screen-Sharing **), Audio-Bridge * *) an. Wenn Sie genaueres zum Thema "Trainings Vortragsmethoden" wissen möchten schauen Sie bitte hier nach und/oder fragen Sie hier.

Die Bücher und Beispiele nehmen die Schulungsteilnehmer normalerweise nach der Schulung mit nach Hause.

Zeitplan

  • 5 Tage in Folge 09:00 bis 17:00 mit Pausen (Ihre Zeitzone - festzulegen)

Dozent

Kursinhalt

Einführung

  • Einführung
  • Geschichte

Eval Board

  • Eval Board
  • GNU/Linux auf einem PC booten
  • GNU / Linux auf einem eingebetteten System booten
  • Bootsequenz
  • SD-Kartenpartitionen

Was man so braucht

  • U-Boot
  • U-Boot: Schickes Zeug
  • U-Boot: Runterladen/Konfigurieren/Bauen/Installieren
  • U-Boot: Befehle
  • Fdt
  • Kernel
  • Kernel: Runterladen/kbuild
  • Kbuild
  • Kernel: Konfigurieren/Bauen/Installieren
  • Kernel: fdt
  • Kernel: Module

Kernel Module

  • ...können sein
  • init/exit
  • Lizenzierung
  • tainted Modul/Kernel
  • EXPORT_SYMBOL()
  • out of tree .ko Makefile
  • Modul-Init-Werkzeuge
  • Modul im Kernel Tree
  • Bauen und Installieren
  • Laden
  • Parameterübergabe
  • Zugriff auf TCB

Character Treiber

  • Gerätedateien
    • Einführung
    • Gerätetypen
    • major/minor
    • Architektur
  • Treiber-Kernel-Schnittstelle
  • Gerätetreiber
    • Einführung
    • Anmeldung
    • Initialisierung
    • Öffnen/Schließen
  • Misc. Char Treiber

User Space Fehlersuche/-behebung

  • Fehlersuche/-behebung: Einfache Tools
    • lsof, ltrace, strace,...
    • procfs, top, netstat, syslog,...
  • Fehlersuche/-behebung: Fortgeschrittene Tools
    • Was ist ein Debugger?
    • gdb auf der Zielhardware
    • gdb Remote-Debugging

Kernel Fehlersuche/-behebung

  • Debugging-Intro
  • KGDB/KDB
  • JTAG

Prozess/Interprozesskommunikation

  • IPC-Einführung
    • Unix/Linux-Architektur
    • Was ist Betriebssystem?
    • Was ist ein Scheduler?
    • Linux-Scheduler
    • Linux-Prioritäten
    • Linux-Scheduler(s)
    • Linux Scheduling Klassen
    • Prozesse/Tasks/Threads
    • errno
    • fork()
    • Prozessbeendigung
    • Prozesszustände
    • Zombies
    • Mehr über Prozesse
    • Sehen wir uns einen Prozess an
  • Einfache Interprozesskommunikation
    • Shell-Umleitung
    • Shelling out
    • temporäre Dateien
  • Interprozesskommunikation generisch
  • Interprozesskommunikation
    • Nachrichtenübergabe(message passing) im Vergleich zu gemeinsam genutzter Speicher(shared memory)
  • Fortgeschrittene Interprozesskommunikation
    • Pipes
    • Signale
    • Unterbrochene System Calls
    • POSIX.4 Nachrichtenwarteschlangen (Message Queues)
    • Semaphoren Einführung
    • Mutex
    • Semaphoren
    • gemeinsam genutzten Speicher(Shared Memory)
    • Sockets
    • select
      • self-pipe Trick
    • Andere Interprozesskommunikations-Mechanismen
  • Interprozesskommunikations-Techniken die man vermeiden sollte

Echtzeit

  • Voraussetzungen
    • Kernel im Vergleich zu User Space
    • Toolchain
    • Program Sections
    • Interrupts
    • Reentrant Code
  • Echtzeit Einführung
    • Time/Utility Funktionen
    • Was ist Echtzeit?
    • Determinismus
    • Was ist harte Echtzeit?
  • Echtzeit-Linux
  • "Grade/Stufen" des Echtzeitverhaltens
  • Dual Kernel
    • Xenomai
    • Messergebnisse
  • Echtzeit-Mythen

Einführung in Yocto

  • Was ist Yocto?
  • Warum das YP benutzen?
  • Was ist das YP?
  • Einige Werkzeuge unter dem YP Schirm
    • Poky
    • BitBake
    • OE-Core
    • Metadaten

Der Yocto Autobuilder

  • Einführung
    • Was ist der Yocto Autobuilder?
    • Docker container (pull, container starten)
  • Yocto Build-Umgebung ohne Docker/Yocto Autobuilder

Der YP Workflow

  • Einführung
  • Arbeitsablauf (Workflow)
    • OE-Architektur
  • Konfiguration
    • Benutzer Konfiguration
    • Eigenschaften (Features)
      • Maschinen Eigenschaften (Machine Features)
      • Distro Eigenschaften (Distro Features)
      • Kombinierte Eigenschaften (Combined Features)
      • Image Eigenschaften (Image Features)
    • Recipe Versionierung
      • Einführung
      • Bindestriche
      • Basierend auf Versions Kontrollsystemen (Source Code Management)
      • Fallstricke
      • Entwicklungs-/Stabile Versionen
      • Overrides
    • Metadaten (Recipes)
    • Maschinen (BSP) Konfiguration
    • Distributions Policy
  • Sourcen
  • Bauen
    • Sources fetchen: do_fetch, do_unpack
    • Patchen
    • Konfigurieren/Kompilieren/Installieren
    • Pseudo
    • recipetool
    • Beispiele für Recipes
      • Paket von einer einzelnen .c Datei
      • Paket basierend auf Autotools
      • App. in mehrere Pakete aufgeteilt
    • Analyse der Ausgabe/Pakete (Packaging)
    • Generierung von Images
    • Generierung von SDKs
  • Images anpassen
    • Einführung
    • local.conf
    • IMAGE_FEATURES
    • Benutzerdefinierte .bb-Dateien - von core-image vererbt
    • Benutzerdefinierte .bb-Dateien - basierend auf core-image-minimal
    • Benutzerdefinierte packagegroups

BitBake

  • Geschichte
  • Syntax
    • Variable Erweiterung (Variable Expansion)
    • Variable Zuweisung (Variable Assignment)
    • Vor-/Anhängen (Pre-/Append)
    • Entfernen (Override Stil Syntax)
    • Variable Flag-Syntax
    • Bedingte (Conditional) Syntax (Overrides)
  • Fehlersuche/-behebung
    • BitBake Fehlersuche/-behebung
    • Recipes finden
    • Images finden
    • Packagegroups finden
    • BitBake Umgebung
    • BitBake logs
    • Noch mal BitBaken
      • das Bauen eines spezifischen Tasks erzwingen
      • cleansstate
      • Stamp ungültig machen
    • Devshell
    • Abhängigkeiten
    • Pakete
    • Killall Bitbake
    • BitBake mit Ncurses-Wrapper
    • Werkzeuge/Tweaks
  • Aufräumen
    • Aufräumen um Speicherplatz zu gewinnen
    • Aufräumen damit neu gebaut werden muss

Layer

  • Einführung
  • bitbake-layers Werkzeug
  • yocto-layer Werkzeug

BSP

  • Intro
  • Systementwicklungs-Workflow
  • BSP Entwicklungsanleitung
    • bsp-tool

Kernel

  • Intro
  • Systementwicklungs-Workflow
  • Kernel-Entwicklungsanleitung
    • defconfig + Konfigurationsfragmente
    • in tree kmod
    • out of tree kmod
    • fdt

Anwendungs/Software Entwicklungskit

  • Software-Entwicklungskit
    • Einführung
    • Cross-Entwicklungs Toolchain
    • Sysroot
    • Der QEMU-Emulator
    • Eclipse Yocto Plug-in
    • Werkzeuge zur Leistungsverbesserung
  • Installieren von SDKs und Toolchains
  • Cross-Toolchains/SDKs
    • Einführung
    • Erstellen eines Cross-Toolchain-Installers
    • Verwenden des Standard-SDKs
    • Cross-Toolchain+Makefile
    • Cross-Toolchain+Autotools
    • Autotooled lib + App., recipes
    • Erweiterbares (Extensible) SDK

Paketverwaltung

  • Softwareaktualisierungen
  • Mit Paketen arbeiten
    • IPK
    • Einen package feed erstellen
    • Installieren eines Pakets mit opkg auf dem Zielsystem

Lizenzierung

  • Einführung
  • Fügen Sie dem YP eine benutzerdefinierte Lizenz hinzu
  • Erfüllung der Open-Source-Lizenz Bestimmungen mit dem YP

Devtool

  • Einführung
  • Ein Recipe hinzufügen/bauen/installieren
  • Einen Layer erstellen/hinzufügen
  • Finish
  • Ein Recipe Ändern/Aktualisieren
  • Bauen/Ausführen
  • Ein Image bauen

Bitte füllen Sie dieses Formular aus, falls Sie weitere Fragen zu diesem oder einem anderen Training haben und zögern Sie nicht, uns zu kontaktieren.

Public Intely

Introduction to Embedded Linux and Yocto

public, 5-day training class
book until: 22 Dec 2018
title-1
21 Jan 2019
Munich/Germany, in German

Pick a Training

public/private, 2 to 5 day training class
book until: 19 Jan 2019
title-1
04 Feb 2019
EU, German/English (TBD)

Hinweis: Alternativ dazu gibt es auch noch eine viertägige Yocto Schulung Das Yocto Projekt - Ein Überblick.