Dieses fünftägige Training kombiniert Hands-on Übungen mit Theorie, um grundlegende Konzepte von Gerätetreibern und Kernel-Interna zu illustrieren. Die Hands-on Sessions werden mit freier Software wie dem Yocto Projekt auf einer Zielhardware (z.B. Beagle Bone Black Rev. C) durchgeführt. Dies ermöglicht es Ihnen das Kursmaterial mit nach Hause zu nehmen und damit zu arbeiten.
Die Konzepte und Befehle, welche notwendig sind, um GNU/Linux Gerätetreiber effektiv zu schreiben und einzusetzen, werden durch eine Kombination von Theorie und On-the-job-Training beschrieben. Vom Zeitaufwand her ist es sicherlich sinnvoll, nicht zu versuchen, alles selbst herauszufinden, sondern von einem erfahrenen Trainer zu lernen. Nehmen Sie dazu noch die Fähigkeit, Ihre eigenen Embeddded GNU/Linux Gerätetreiber bei Ihren Embedded-Entwicklungsprojekten einzusetzen, mit nach Hause.
Kursinhalte
- Einführung
- Kurzer Überblick über die Geschichte von GNU/Linux, Lizenzen, Kernel Versionierung, Kernel Release Zyklus, Kernel trees, Mainline, Kernel Space im Vergleich zu User Space, Mechanismen im Vergleich zu policy, Alternativen zu Kernel Treibern, Echtzeitbetriebssysteme in Vergleich zu Linux
- Speicher Management
- Virtueller im Vergleich zu physikalischem Speicher, Speicherallokierung im Kernel: pages, zones, API, slab, kmalloc im Vergleich zu vmalloc
- Kernel Patch
- Wer schreibt den Kernel?, Lebenszyklus eines Patches, git, Kernel Sourcen, einen Patch erstellen - überprüfen - Fehler beheben - ausliefern, Wie funktionieren Code Audits beim Kernel?
- Kernel Module
- Kernel Sourcen herunterladen, konfigurieren, bauen, installieren, Gerätetreiber (statisch mit dem Kernel gelinkt, zur Laufzeit geladen), init, Lizenzen, EXPORT SYMBOL GPL, Makefile außerhalb vom Kernel tree, module-init-tools, Module im Kernel tree, Kconfig, LKM Parameter¨ubergabe, sparse
- Char Treiber
- Architektur, User/Kernel Interface, I/O Subsystem, VFS, sysfs (devices, bus, drivers, classes), kobject, ktype, kset, Linux Kernel Driver Modell, Device files
- Initialisierung
- Registrierung
- Open, Release
- cdev, cdev add, cdev del,...
- major/minor numbers
- udev, udevmonitor, udevadm
- Fortgeschrittene Operationen bei Charachter Treibern
- ioctl, unlocked ioctl, compat ioctl, user space API, kernel space API, Lebenszyklus eines Prozesses, sleeping/blocking, sleeping/waking up, wait queue, thundering herd, poll/select
- Kernel Debuggen
- bug, debugging, Den Kernel debuggen
- binäre Suche mit git
- Debug Unterstützung vom Kernel
- printk syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
- Debuggen durch Abfragen (querying) debugfs
- oops Debugging, oops aufrufen
- Magic SysRq Key
- kgdb/kdb
- JTAG (optional)
- Tracing
- gcov
- lcov
- oprofile
- ftrace
- nop tracer
- function tracer
- sched switch tracer (viewer)
- function graph tracer
- dynamic tracer
- perf
- LTTng
- Kernel Probes
- Kprobes
- JProbes
- KretProbes
- Interrupts
- Interrupts im Vergleich zu Polling, interrupt, program sections, reentrancy, events, interrupt handler, shared interrupt handler, interrupt flow, interrupt control
- Deferring Work
- top/bottom halves, softirqs, tasklets, work queues, kernel thread, threaded interrupts
- Concurrency
- critical region/section, atomic, race condition, synchronization, locking, locking Lösungen, deadlock, contention, Was soll man beschützen?
- atomic operations
- spin locks
- reader-writer spin locks
- semaphore
- binary semaphore
- mutex
- reader-writer semaphore
- completion variables
- sequential locks
- RCU
- disable preemption
- orderig and barriers
- Zeit
- HZ, Tick-less Kernel, Jiffies, große/kleine Verzögerungen, Kernel Timer, High-res Timer
- Hardware I/O
- I/O Ports, I/O Memory, Was macht man gegen sogenannte "side effects" wenn man man Register zugreifen muss?
- User-Kernel Kommunikation
- put(get) user(), copy to(from) user(), Kernel I/O, memory mapping, procfs, sysfs, debugfs, relayfs, netlink, ioctl
- Portierbarkeit
- word Größe, opaque Typen, signed/unsigned char, data alignment, integral promotion, Wiederverwendung von Code, endianess, system tick, Pagegröße, instruction ordering, SMP/preemption/high memory
Empfohlene Vorkenntnisse
Wer sollte teilnehmen?
Manager, Projektleiter, Software-, Hardware-, Entwicklungs- und System-Ingenieure, Techniker und Interessierte an der Technologie, die so schnell wie möglich verstehen wollen, wie GNU/Linux Gerätetreiber funktionieren.
Details zu diesem Open Source Training
Kurstitel: |
Embedded Linux: Kernel Treiber und Interna |
Kurspreis: |
2.975,00 € exkl. MwSt pro Teilnehmer, Standardpreis ohne Rabatt
|
Kursdatum: Kurszeiten: |
Open date - Open date 09:30 - 17:00 Alternative Termine stehen am Ende dieser Seite
|
Dieses Training findet in der typischen Classroom Variante und in der Live Variante übers Internet via ZOOM Session statt. Sie können selber entscheiden welche Variante besser für sie passt.
|
Kursort:
|
Das Classroom Training findet statt bei:
LinuxCampus Brodtischgasse 4 2700 Wr. Neustadt (Österreich) Website des Veranstaltungsortes
Das Live Training findet statt bei:
Sie können vom jedem Ort teilnehmen von dem Sie möchten und es ist keine Anreise notwendig. Sie benötigen nur eine Webcam, einen Webbrowser (ZOOM-Session) und einen VNC-Client für den Zugriff auf ihr Teilnehmer LAB.
|
Details: |
Der Kurs ist auf 10 Teilnehmer beschränkt Die Unterrichtssprache ist Deutsch Die Kursunterlagen werden im PDF Format bereitgestellt Jeder Teilnehmer erhält ein Kurszertifikat Kalt- und Heißgetränke und Snacks werden kostenlos bereitgestellt
|
Kennen Sie schon das LinuxCampus.net Rabatt & Bonus System? |
Den Kurstermin Open date - Open date buchen
Schritt 1: Auswahl der Kursvariante (Classroom oder Live)
Schritt 2: Angabe der Teilnehmer Daten
Alternative Kursmöglichkeiten
Alternativer Kursort:
Dieses Thema kann auch als In-House Training oder Einzeltraining gebucht werden
Alternativer Termin:
Ab 3 Teilnehmern bieten wir Ihnen gerne einen auf Ihre Bedürfnisse abgestimmten Termin an
Weitere Termine zu diesem Kursthema