Embedded Linux Kernel and Driver Development

Seminarinformationen

Seminar - Ziel

In diesem fünftägigen Seminar "Embedded Linux Kernel and Driver Development" lernen Sie den Einsatz von Kconfig sowie Erstellen, Laden und Test vonulen. Debugging wird anhand von printk und seinen Derivaten,mesg sowie der Verwendung GDB mit Qemu behandelt. Sie erhalten einen umfassenden Ein in die Funweise von Kernel-Treibern, das Inspektions mit procfsalt) und sysfsneu) sowie System Calls. Desen lernen Sie die Handhab von Character-, Block- Net-Devices sowie die Datei-Schnittstelle über Device-Nodes kennen.

Die Speicher umfasst denellen und physikalischen Adressraum, die Memory-ManagementUnit (MMU) das Speicherschutzkonzept. Sie lernen den des Kernelpeichers und den Datenaustausch zwischen Userspace-Kernel und Memory-Mapping kennen. Der Zugriff auf Hardware wird anhand von IO-Ports und IO-Memory sowie Interrupts erläutert. Das Scheduling und SMP beinhaltet die Definition von 'sleep', Aufgaben des Kernel-Timers, Tasklets, Workqueues und Kernel-Threads sowie Synchronisierung mit Spin und Mutex.

Abschließend werden Upstream-Themen wie Code-Style, die Zusammenarbeit der Community und mögliche Lizenzmodelle behandelt. Nach Abschluss des K sind Sie in der Lage, das Kernel-Build-System zu nutzen, Kernel-Treiber erstellen und zu verwalten die Speicherverwaltung zu verstehen und auf Hardware zuzugreifen. Zudem werden Sie mit den Grundlagen des Schedulings SMP vertraut sein und wissen, wie Sie mit der Community zusammenarbeiten können.

Teilnehmer - Zielgruppe

Linux-Entwickler

Kurs - Voraussetzungen

Für eine optimale Teilnahme am Kurs empfehlen wir folgende Vorkenntnisse:

  • Kenntnisse in der Linux-Systemprogrammierung
  • Fundierte Kenntnisse in der C-Programmierung

Seminardauer

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

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Einführung

  • Kooperation mit der Community
  • Wenn ich Hilfe brauche, wie verhalte ich mich richtig?
  • Was ist ein Mainline Kernel und wer ist für was zuständig?
  • Mögliche Lizenzmodelle

Kernel-Architecture

  • Komponenten
  • User-Space versus Kernel-Space
  • Prozesse, Threads, Tasks
  • Prozess Kontext
  • Kernel Preemtion

Modules

  • Kompilierung von Modulen
  • Modules versus Built-in
  • Automatisches Laden von Modulen
  • Exportieren und Auflösen von Symbolen

Kernel Initialization

  • Überblick von der System Initialisierung
  • System Boot
  • Kernel Startup

System Calls

  • Was sind System Calls?
  • Welche System Calls sind verfügbar?
  • Implementation

Kernel Stil und Grundsätzliche Überlegungen

  • Code-Style
  • Benutzung von Generic Kernel Routinen unf Methoden
  • Kernel Patch
  • sparse
  • likely() und unlikely()
  • Portierbarer Code, CPU, 32/64-bit, Endianness
  • Schreiben für SMP
  • Schreiben für High Memory Systems
  • Power-Management
  • Security

Race Conditions und Synchronisations-Methoden

  • Concurency
  • Atomic operations
  • Bit operations
  • Spinlocks
  • Seqlocks
  • Ausschalten der Preemption
  • Mutexes
  • Semaphores
  • Read-Copy-Update (RCU)
  • Reference Counts

SMP und Threads

  • SMP Kernel und Module
  • CPUSETS
  • SMP-Algorithms - Scheduling, Locking etc.

Processes

  • Was sind Prozesse?
  • task-struct
  • Erzeugung von User-Prozessen und Threads
  • Erzeugung von Kernel-Threads
  • Vernichtung von Prozessen und Threads
  • Ausführen von User-Space Prozessen auds Sicht des Kernels
  • Wo sind Limitierungen?

Monitoring und Debugging

  • printk, dmesg
  • sysctl
  • oops Nachricht
  • debugfs

Scheduling

  • Main Scheduling Tasks
  • SMP
  • Prioritäten
  • System Calls
  • schedule() Funktion
  • Scheduler

Speicher-Adressierung und -Allozierung

  • Virtuelles Speicher Management
  • System mit und ohne MMU und die TLB
  • Speicheradressen
  • Paging
  • Page Tabellen
  • page Struktur
  • Anfordern und Freigeben von Pages
  • Speicher Pools
  • kmalloc()
  • vmalloc()
  • Frühe Allozierung und bootmem()
  • Speicher Defragmentierung

Prozess-Adressraum

  • Reservierung von User-Memory und Adress-Bereiche
  • Sperrung von Pages
  • Speicher Deskriptoren und Speicher-Regionen
  • Zugriffsrechte
  • Reservierung und Freigeben von Speicher Regionen
  • Page Faults

Disk Caches und Swapping

  • Caches
  • Page Cache Grundlagen
  • Was ist Swapping?
  • Swap Bereiche
  • Swapping Pages rein und raus
  • Der Swap Cache

Gerätetreiber

  • Character-, Block- und Net-Devices
  • Datei-Schnittstelle via Device-Nodes

Signals

  • Code-Style
  • Kooperation mit der Community
  • Mögliche Lizenzmodelle

Weitere Schulungen zu Thema Embedded Linux

Embedded Linux für IT-Entscheider

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

In dieser 1-tägigen Schulung "Embedded Linux für IT-Entscheider" erhalten Sie einen umfassenden Überblick über Linux und seine Bedeutung im Embedded-Bereich. Sie lernen die wichtigsten Begrifflichkeiten im Umgang mit Linux kennen und verstehen, warum Linux eine beliebte ...

LFD420 Linux Kernel Internals und Development

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

In diesem 4-tägigen Seminar „LFD420 Linux Kernel Internals und Development“ erwerben Sie ein tiefgehendes Verständnis für die Entwicklung im Linux-Kernel. Sie lernen die Architektur von Linux kennen, machen sich mit grundlegenden Entwicklungsmethoden im Kernel vertraut ...

Linux Kernel Debugging and Security (LFD440)

- u.a. in Köln, Dresden, Essen, Heidelberg, Virtual Classroom

This instructor-led course focuses on the important tools used for debugging and monitoring the kernel, and how security features are implemented and controlled. This four day course includes extensive hands-on exercises and demonstrations designed to give you the necessary ...

LFD441 Security and the Linux Kernel

- u.a. in Berlin, Bremen, Wien, Essen, Offenbach

In diesem 4-tägigen Seminar „Security and the Linux Kernel (LFD441)“ stehen die sicherheitsrelevanten Grundlagen des Linux-Kernels im Mittelpunkt. Sie beschäftigen sich mit Aspekten wie Speicher-, Prozess- und Dateisystemsicherheit sowie dem Schutz von Systemaufrufen. ...