Seminarinformationen

Seminar - Ziel

In dieser 4-tägigen Schulung "LFD450 Embedded Linux Entwicklung" erlernen die Teilnehmer die essenziellen Techniken für die Entwicklung von Embedded-Linux-Geräten. Die Schulung besonderen Fokus auf verschiedenewerpunkte. Dazu gehören vertief Kenntnisse über die Architektur des Linux-Kernels, insbesondere in Bezug auf dieung an eine eingebettete Plattform. Des Weiteren werden Methoden zur Ermittlung der optimalen System entsprechend den individuellen Projektanforderungen behandelt. Die Schulung außerdem Know-how zur Nutzung verschiedener Ressourcen zur Einrichtung einer Cross-Entwicklungsumgebung für Embedded-Systeme. Teilnehmer werden dazu befähigt, die verfügbaren Optionen für Bibliotheken und Application User-Spaces zu analysieren und die Anforderungen von Embedded-Systemen abzustimmen. Die Schulung deckt eine breite Palette weitereranter Themen ab.

Teilnehmer - Zielgruppe

Erfahrene Entwickler, Programmierer und Ingenieure.

Kurs - Voraussetzungen

Für eine optimale Teilnahme am Kurs empfehlen die folgenden Vorkenntnisse:

  • Vertrautheit mit Linux-Dienstprogrammen
  • Kenntnisse in der C-Programmierung
  • Erfahrung in der Linux- oder Unix-Entwicklung

Seminardauer

  • 4 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Einführung

  • Ziele
  • Wer Sie sind
  • The Linux Foundation
  • Copyright und keine vertraulichen Informationen
  • Linux Foundation Training
  • Certification Programs und Digital Badging
  • Linux Distributions
  • Platforms
  • Systemvorbereitung
  • Changes in Linux
  • Documentation und Links

Vorbemerkungen

  • Linux Distributions
  • Installation virtual machines
  • Vorgehensweisen
  • Labs

How to Work in Open Source Software Projects

  • Overview on korrektes Contributing
  • Know where the Code is coming from: DCO und CLA
  • Stay close to Mainline für Security und Quality
  • Project Structure verstehen
  • Eigene Herausforderungen identifizieren
  • Maintainers, Workflows und Methods kennenlernen
  • Frühzeitig Feedback einholen und transparent arbeiten
  • Schrittweise, nicht große Code-Pakete beitragen
  • Ego nicht überbewerten
  • Geduldig sein, langfristige Relationships aufbauen, helpful sein

Konzepte für Embedded und Real-Time Systems

  • Basics
  • Protection Motives
  • Standard Solutions (OTS)
  • Besonderheiten embedded systems
  • Real-Time Operating Systems
  • Real-Time Linux
  • Unterstützung bei custom Hardware
  • Resources

Cross Development Environments: Goals und Needs

  • Introduction
  • Why ist es schwierig?
  • Überlegungen zum Project Goal
  • Links zu weiterführenden Discussions
  • Labs

Kbuild System

  • Introduction
  • Kbuild Makefiles
  • Kconfig Basics
  • Kconfig durchsuchen

Cross Development Toolchain

  • Compiler Trio
  • Integrierter Cross Compiler von Linux Distributions
  • Linaro
  • CodeSourcery
  • crosstool-ng
  • Buildroot
  • OpenEmbedded
  • Yocto Project
  • Clang
  • Labs

QEMU

  • Was ist QEMU?
  • Why QEMU verwenden?
  • Emulated Architectures
  • Image Formats
  • Labs

Booten eines Target Development Boards von uSD

  • Warum verwenden wir microSD Cards?
  • Software auf eine microSD Card übertragen
  • Boot from Flash Storage
  • Warum ist die Verwendung von microSD Cards eine schlechte Idee?
  • Labs

Booten eines Target Development Boards über Ethernet

  • Verwendung virtual Hardware
  • Eine einfachere Development Method
  • Boot Sequence mit TFTP und NFS root
  • Lab Objectives
  • Labs

Bootloader und U-Boot

  • Boot Code Phases
  • Einige GPL BIOS Versions
  • Einige GPL Bootloader
  • U-Boot
  • U-Boot Command Line
  • U-Boot Environment
  • Labs

Kernel Configuration, Compilation, Boot Process

  • Kernel Configuration für Development Board
  • Labs

Device Drivers

  • Device Types
  • Device Nodes
  • Character Drivers
  • Example
  • Labs

Device Trees

  • Was sind Device Trees?
  • Was Device Trees leisten und was nicht
  • Device Tree Syntax
  • Device Tree Overview
  • Device Tree Bindings
  • Device Tree Support in Bootloadern
  • Verwendung von Device Tree Daten in Drivers
  • Coexistence und Conversion legacy Drivers
  • Labs

Target Filesystem Packaging

  • Goals embedded Filesystems
  • Directory Overview
  • Types embedded Filesystems

Create Target Root Filesystem

  • Lab Objectives
  • Labs

Root Filesystem Options

  • SysV Init vs BusyBox Init
  • udev vs BusyBox mdev
  • systemd
  • C Library Selection
  • Labs

uClibc Configuration

  • Configuration von uClibc für NFS
  • Labs

Alternative C Library: musl

  • Was ist musl?
  • BuildRoot für musl konfigurieren
  • Labs

BusyBox Utility Suite Build

  • Basic Functionality
  • Integriert mit Buildroot
  • Labs

Kernel Monitoring und Debugging

  • Tracing und Profiling
  • ftrace, trace-cmd, Kernelshark
  • perf
  • Verwendung von perf
  • sysctl
  • SysRq Keys
  • oops Messages
  • Kernel Debugger
  • debugfs

The Right Size

  • Häufig benötigte embedded Components
  • Kernel Size Overview

Flash Storage Filesystems (MTD)

  • Was sind MTD Devices?
  • NAND vs NOR vs eMMC
  • Driver und User Modules
  • Flash Filesystems

Compressed Filesystems

  • SquashFS
  • Deployment in MTD Partition
  • Labs

System Updates

  • Wann ist ein Update erforderlich?
  • Update Strategies
  • Preconfigured Upgrade Systems
  • Labs

Real-Time Extensions

  • Predictability, Preemption und Locking
  • PREEMPT RT Project
  • Real-Time Checklist

Abschluss- und Evaluation Survey

  • Evaluation Survey

Kernel Architecture Preview

  • Linux und UNIX
  • Monolithic und Micro Kernels
  • Main Kernel Tasks
  • User Space und Kernel Space

Kernel Source Tree Overview

  • Installation und Layout Kernel Source Code
  • Kernel Browser
  • Kernel Configuration Files
  • Why ist das so schwierig? Part 2

Kernel Programming Preview

  • Coding Style
  • Kernel Documentation
  • Verwendung generischer Kernel Routines und Methods
  • Error Numbers, Kernel Logging, syslogd
  • Task Structure
  • Memory Allocation
  • Data Transfer zwischen User und Kernel Space

Modules

  • Was sind Modules?
  • Trivial Example
  • Modules Compile
  • Modules vs Built-in
  • Module Utilities
  • Automatic Module Loading
  • Module Usage Count
  • Module Licensing
  • Exporting Symbols
  • Resolving Symbols
  • Labs

Basic Setup eines Target Development Boards

  • Lab Objectives
  • Labs

Booten eines Target Development Boards von uSD

  • Lab Objectives
  • Labs

Booten eines Target Development Boards über Ethernet

  • Einfachere Development Method
  • Boot Sequence mit TFTP und NFS root
  • Lab Objectives
  • Labs

Weitere Schulungen zu Thema Linux Foundation

LFD459 Kubernetes für App-Entwickler

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...

LFS458 Kubernetes Administration

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...

LFD301 Einführung in Linux, Open-Souce-Entwicklung und GIT

- u.a. in Hamburg, Wien, Koblenz, Freiburg, Nordhausen

In dieser 4-tägigen Schulung „LFD301 Einführung in Linux, Open-Source-Entwicklung und GIT" lernen Sie, Ihre Karriere in der Linux-Entwicklung erfolgreich zu starten – die Nachfrage nach Linux-Entwicklern ist so hoch wie nie zuvor. Dieser Kurs führt Sie in die Welt ...

LFD334 WebAssembly in Action: Develop, Deploy, and Debug

- u.a. in Bremen, Frankfurt am Main, Wien, Erfurt, Marburg

In dieser 2-tägigen Schulung „LFD334 WebAssembly in Action: Develop, Deploy, and Debug“ vertiefen Sie WebAssembly-Konzepte, um Ihre Softwareentwicklungsfähigkeiten in modernen, plattformübergreifenden Umgebungen zu erweitern. Dieser Kurs bietet eine praxisorientierte ...