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
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
- u.a. in Nürnberg, Berlin, Stuttgart, München, KölnIn 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 ...
- u.a. in Nürnberg, Berlin, Stuttgart, München, KölnIn 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 ...
- u.a. in Köln, Dresden, Essen, Heidelberg, Virtual ClassroomThis 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 ...
- u.a. in Berlin, Bremen, Wien, Essen, OffenbachIn 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. ...