Header Background
 
 
 

LFD435 Entwicklung von Gerätetreibern für embedded Linux-Systeme

Seminardauer: 4 Tage

Ziele

In dieser 4-tägigen Schulung "LFD435 Entwicklung von Gerätetreibern für eingebettete Linux-Systeme" erwerben die Teilnehmer umfassendes Wissen über die Entwicklung von Gerätetreibern für Linux-Systeme sowie ein grundlegendes Verständnis für den Linux-Kernel. Der Kurs bietet Einblicke in verschiedene Arten von Gerätetreibern in Linux und präsentiert passende APIs für die Programmierung solcher Treiber.

Durch praktische Übungen auf ARM-Hardware, wie Cross-Compiling und die Entwicklung von Treibern für eingebettete Zielplattformen, wird die Vorgehensweise praxisnah vermittelt. Der Kurs konzentriert sich insbesondere auf die detaillierte Betrachtung von Funktionen, die hauptsächlich in Gerätetreibern zum Einsatz kommen, neben der Kernel-Architektur und Algorithmen.

Zielgruppe

  • Programmierer
  • Entwickler

Voraussetzungen

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

  • Kenntnisse der wesentlichen Kernel-Schnittstellen und Techniken, wie dem Compilieren und Schreiben bzw. Load und Unload von Modulen
  • Anwendung von Synchronisationsfunktionen
  • Grundlagen von Speicherzuweisung und -verwaltung

Lernmethodik

Die Schulung bietet Ihnen eine ausgewogene Mischung aus Theorie und Praxis in einer erstklassigen Lernumgebung. Profitieren Sie vom direkten Austausch mit unseren projekterfahrenen Trainern und anderen Teilnehmern, um Ihren Lernerfolg zu maximieren.

Agenda

Einführung

Überblick

  • Verfahren
  • Kernel-Versionen
  • Kernel-Quellen und Verwendung von git
  • Hardware

Wie man in OSS-Projekten arbeitet

  • Überblick darüber, wie man richtig beiträgt
  • Bleiben Sie nah an der Hauptstrecke für Sicherheit und Qualität
  • Lernen und Verstehen der Projekt-DNA
  • Herausfinden, welches Itch Sie Scratchen möchten
  • Identifizieren Sie die Maintainer und ihre Arbeitsabläufe und Methoden
  • Frühzeitige Eingaben und Arbeit im Freien erhalten
  • Inkrementelle Bits beisteuern, keine großen Code-Dumps
  • Lassen Sie Ihr Ego an der Tür: Seien Sie nicht Thin-Skinned
  • Seien Sie geduldig, entwickeln Sie langfristige Beziehungen, seien Sie hilfsbereit

Entwicklungsübergreifende Toolchain

  • Das Compiler-Triplet
  • Eingebauter Cross-Compiler für Linux-Distributionen
  • Linaro
  • CodeSourcery
  • crosstool-ng
  • Buildroot
  • OpenEmbedded
  • Yocto-Projekt

QEMU

  • Was ist QEMU?
  • Emulierte Architekturen
  • Bildformate
  • Warum QEMU verwenden?

Booten eines Target Development Board von uSD

  • Warum verwenden wir uSD-Karten?
  • SW auf eine uSD-Karte bringen
  • Warum ist die Verwendung von uSD-Karten eine schlechte Idee?

Booten eines Target-Entwicklungsboards über Ethernet

  • Verwendung virtueller Hardware
  • Ein einfacherer Weg zur Entwicklung
  • Ziele des Labs

Konfigurieren, Compilieren und Booten des Kernels

  • Konfigurieren des Kernels für den Entwicklungsausschuss

Gerätetreiber

  • Arten von Geräten
  • Mechanismus vs. Richtlinie
  • Binary Blobs vermeiden
  • Energieverwaltung
  • Wie Anwendungen Gerätetreiber verwenden
  • Durch einen Systemanruf gehen und auf ein Gerät zugreifen
  • Fehler-Nummern
  • printk()
  • devres: Verwaltete Geräteressourcen

Module und Gerätetreiber

  • Die module_driver()-Makros
  • Module und Hot Plug

Speicherverwaltung und -zuweisung

  • Virtueller und physischer Speicher
  • Memory Zones
  • Page Tables
  • kmalloc()
  • __get_free_pages()
  • vmalloc()
  • Slabs und Cache-Zuweisungen

Zeichenorientierte Geräte

  • Geräte-Nodes
  • Haupt- und Nebenzahlen
  • Reservieren von Haupt-/Minderwertigen Nummern
  • Zugriff auf den Geräte-Nodes
  • Registrieren des Geräts
  • udev
  • dev_printk() und Associates
  • file_operationen Struktur
  • Driver Entry für Fahrer
  • Die Datei- und Inode-Strukturen
  • Diverse Zeichen-Treiber

Kernel-Funktionen

  • Komponenten des Kernels
  • Benutzer-Space vs. Kernel-Space
  • Was sind Systemaufrufe?
  • Verfügbare Systemanrufe
  • Zeitplanungsalgorithmen und Aufgabenstrukturen
  • Prozess-Kontext

Übertragung zwischen User- und Kernel-Space

  • Übertragen zwischen Spaces
  • put(get)_user() und copy_to(from)_user()
  • Direkter Transfer: Kernel-I/O und Speicherzuordnung
  • Kernel-I/O
  • Abbildung von Benutzerseiten
  • Memory Mapping
  • User-Space Functions für mmap()
  • Driver Entry Point für mmap()
  • Zugriff auf Dateien vom Kernel aus

Plattform-Treiber

  • Übertragen zwischen Spaces
  • put(get)_user() und copy_to(from)_user()
  • Direkter Transfer: Kernel-I/O und Speicherzuordnung
  • Kernel-I/O
  • Abbildung von Benutzerseiten
  • Memory Mapping
  • User-Space Functions für mmap()
  • Driver Entry Point für mmap()
  • Zugriff auf Dateien vom Kernel aus

Device Trees

  • Was sind Device Trees?
  • Was Device Trees tun und was sie nicht tun
  • Device Trees-Syntax
  • Device Trees-Durchgang
  • Device Trees-Bindungen
  • Unterstützung von Device Trees in Bootloadern
  • Verwendung von Device Trees in Treibern
  • Koexistenz und Konversion alter Treiber

Interrupts und Exceptions

  • Was sind Interrupts und Exceptions?
  • Exceptions
  • Asynchrone Unterbrechungen
  • MSI
  • Aktivieren/Deaktivieren von Unterbrechungen
  • Was Sie zur Unterbrechungszeit nicht tun können
  • IRQ-Datenstrukturen
  • Installieren eines Interrupt-Handlers

Zeitmessungen

  • Arten von Timing-Messungen
  • Jiffies
  • Abrufen der aktuellen Zeit
  • Takt-Quellen
  • Echtzeituhr
  • Programmierbarer Intervall-Timer
  • Zeitstempel-Zähler
  • HPET
  • Tickless werden

Kernel-Timer

  • Einfügen von Delays
  • Was sind Kernel-Timer?
  • Low-Resolution Timer-Funktionen
  • Low-Resolution Timer-Implementierung
  • High-Resolution Timer
  • Verwendung High-Resolution Timer

ioctls

  • Was sind Ioctls?
  • Treiber Einstiegspunkt für Ioctls
  • Ioctl definieren

Firmware

  • Was ist Firmware?
  • Laden von Firmware

Sleeping und Wait Queues

  • Was sind Wait Queues?
  • Going to Sleep und Waking Up
  • Going to Sleep Details
  • Exclusives Sleeping
  • Waking Up Details
  • Umfrage

Unterbrechungsbehandlung: Aufschiebbare Funktionen und Benutzertreiber

  • Top und Bottom Halves
  • Softirqs
  • Aufgaben
  • Work Queues
  • Neue Work Queue-API
  • Kernel-Threads erstellen
  • Threaded Interrupt-Handler
  • Behandlung von Unterbrechungen im Benutzerbereich

Hardware-I/Os

  • Speicher-Barrieren
  • Zuweisen und Zuordnen von I/O-Speicher
  • Zugriff auf I/O-Speicher

Direkter Speicherzugriff (DMA)

  • Was ist DMA?
  • DMA direkt zum Benutzer
  • DMA und Unterbrechungen
  • DMA-Speicher-Einschränkungen
  • DMA-Masken
  • DMA-API
  • DMA-Pools
  • Scatter/Gather Mappings

Speichertechnologie-Geräte (Flash Memory Filesystems)

  • Was sind MTD-Geräte?
  • NAND vs. NOR vs. eMMC
  • Treiber- und Anwendermodule
  • Flash-Dateisysteme

USB-Treiber

  • Was ist USB?
  • USB-Topologie
  • Terminologie
  • Endpunkte
  • Deskriptoren
  • USB-Geräte-Klassen
  • USB-Unterstützung unter Linux
  • Registrieren von USB-Gerätetreibern
  • Daten verschieben
  • Beispiel eines USB-Treibers

Abschluss- und Bewertungsumfrage

  • Evaluations-Umfrage

Anhänge

Booten des Target Development

  • Board von uSD
  • Ziele des Labs

Kernel-Architektur I

  • UNIX und Linux
  • Monolithische und Mikrokerne
  • Objektorientierte Methoden
  • Hauptaufgaben im Kernel
  • Benutzer-Space und Kernel-Space

Vorschau der Kernel-Programmierung

  • Task-Strukturierung
  • Speicherzuweisung
  • Übertragen von Daten zwischen Benutzer- und Kernel-Bereichen
  • Verknüpfte Listen
  • Jiffies

Module

  • Was sind Module?
  • Ein triviales Beispiel
  • Module kompilieren
  • Module vs. Eingebaut
  • Module Dienstprogramme
  • Automatisches Laden/Entladen von Modulen
  • Anzahl der Modulnutzungen
  • Modul-Lizenzierung
  • Symbole exportieren
  • Symbole auflösen

Kernel-Architektur II

  • Prozesse, Threads und Aufgaben
  • Kernel-Befreiung
  • Echtzeit Preemption Patches

Kernel-Konfiguration und Kompilierung

  • Installation und Layout der Kernel-Quelle
  • Kernel-Browser
  • Kernel-Konfigurationsdateien
  • Kernelbau und Makefiles
  • initrd und initramfs

Kernel Style und allgemeine Erwägungen

  • Kodierungsstil
  • Verwendung generischer Kernel-Routinen und -Methoden
  • Erstellen eines Kernel-Patches
  • sparse
  • Verwendung von likely() und unlikely()
  • Schreiben von portablem Code, CPU, 32/64-Bit, Endianness
  • Schreiben für SMP
  • Schreiben für hohe Speichersysteme
  • Energieverwaltung
  • Sicherheit im Auge behalten

Race Conditions und Synchronisationsmethoden

  • Methoden zur Gleichzeitigkeit und Synchronisierung
  • Atomare Operationen
  • Bit-Operationen
  • Spinlocks
  • Seqlocks
  • Deaktivieren des Vorkaufs
  • Mutexe
  • Semaphoren
  • Funktionen der Vervollständigung
  • Lese-Kopier-Update (RCU)
  • Referenzzählungen

Speicheradressierung

  • Verwaltung des virtuellen Speichers
  • Systeme mit und ohne MMU und TLB
  • Speicher-Adressen
  • Hoher und niedriger Speicher
  • Speicher-Zonen
  • Spezielle Geräte-Knoten
  • NUMA
  • Seite
  • Seite Tabellen
  • Seitenstruktur

Speicherzuweisung

  • Anfordern und Freigeben von Seiten
  • Buddy-System
  • Slabs und Cache-Zuweisungen
  • Speicher-Pools
  • kmalloc()
  • vmalloc()
  • Frühe Zuteilungen und bootmem()
  • Defragmentierung

Open Badge - Ihr digitaler Kompetenznachweis

IT-Schulungen Badge: LFD435 Entwicklung von Gerätetreibern für embedded Linux-Systeme

Durch die erfolgreiche Teilnahme an einem Kurs bei IT-Schulungen.com erlangen Sie nicht nur Fachkenntnisse und Fähigkeiten, sondern bekommen zusätzlich zu Ihrem Teilnahmezertifikat ein Open Badge als digitalen Nachweis Ihrer Kompetenz.

Sie können diesen in Ihrem persönlichen und kostenfreien Mein IT-Schulungen.com Konto abrufen. Ihre verdienten Badges lassen sich problemlos in sozialen Netzwerken integrieren und weitergeben.

Mehr zu den Vorteilen von Badges

Kurz vor Durchführung

TerminStandortAktion
14.05. - 17.05.2024 Hamburg Seminar jetzt anfragen
10.06. - 13.06.2024 Köln Seminar jetzt anfragen
09.07. - 12.07.2024 Köln Seminar jetzt anfragen
19.08. - 22.08.2024 Nürnberg Seminar jetzt anfragen
 
Anmeldungen vorhanden

1.) Wählen Sie den Seminartyp:




2.) Wählen Sie Ort und Datum:

1.995,00 € Preis pro Person

spacing line2.374,05 € inkl. 19% MwSt
Seminarunterlagen zzgl.
Verpflegung zzgl.

Seminar jetzt anfragen Auf den Merkzettel
PDF IconPDF Icon
 

Diese Seite weiterempfehlen:

0
Merkzettel öffnen
0
Besuchsverlauf ansehen
IT-Schulungen.com Control Panel
Warnung Icon Sie haben in Ihrem Browser Javascript deaktiviert! Bitte aktivieren Sie Javascript um eine korrekte Darstellung und Funktionsweise von IT-Schulungen zu gewährleisten. Warnung Icon