Embedded GNU/Linux Gerätetreiber und Kernel-Interna


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.


Zielgruppe:
Ziel dieses Kurses ist es, die erforderlichen Grundlagen zu vermitteln, um mainline GNU/Linux Gerätetreiber schreiben zu können. How-tos, Theorie und praktische Übungen gepaart mit Erfahrungsberichten geben Ihnen das nötige Know-How von Anfang an mit der Community zusammenzuarbeiten, was nur eines der Erfolgsrezepte ist, wenn man seine eigenen GNU/Linux Gerätetreiber schreiben und warten will/darf/muss.

Im Kurs werden folgende Themen behandelt:
  • 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übergabe, 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
    • Char Treiber
    • 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
    • disble 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


Dozent: Robert Berger hat seit 1993 Praxis- und Führungserfahrung in der Industrie bei Design und Entwicklung von Software für "Eingebettete Systeme" mit und ohne harten Echtzeit Anforderungen. Er arbeitet seit dem Beginn des 21. Jahrhunderts mit GNU/Linux auch im Desktop/Server Bereich, aber hauptsächlich für "Eingebettete Systeme" (Automotive, Industrial Control, Robotics, Telecom, Consumer Electronics,...). Man trifft ihn regelmäßig bei internationalen Events wie z.B. "Embedded World", "Embedded Software Engineering Kongress", "Embedded Systems Conference", "Embedded Linux Conference" als Experten und Vortragenden.

Kurs-Termine:
  • Von Montag, dem 13. März, 2017 bis Freitag, den 17. März, 2017 (5 Tage)
  • Von Montag, dem 10. Juli, 2017 bis Freitag, den 14. Juli, 2017 (5 Tage)
  • Von Montag, dem 16. Oktober, 2017 bis Freitag, den 20. Oktober, 2017 (5 Tage)

Zeitdauer:
5 Tage



Preise pro Tag für diesen Kurs:

Hemmenhofen am Bodensee    379,- € ohne MwSt.
in unmittelbarer Nähe von Konstanz und Zürich
Nürnberg, München, Augsburg 399,- € ohne MwSt.
Stuttgart, Karlsruhe, Freiburg, Ulm, Saarbrücken    389,- € ohne MwSt.
Hamburg, Berlin, Hannover 399,- € ohne MwSt.
Frankfurt, Köln, Kassel 399,- € ohne MwSt.
Unser bestes Angebot:    474,- € ohne MwSt.
Preis pro Kurstag inklusive Übernachtung mit Vollpension im 4-Sterne Hotel Hoeri direkt am Bodensee mit Spa, Sauna, Fitness-Bereich, Swimming-Pool und eigenem Strand am See


Achtung:
Unsere Kurse am Bodensee finden im 4-Sterne-Hotel Hoeri statt. Für nur 96,- € pro Tag können Sie eine Übernachtung mit Vollpension zubuchen. Damit runden Sie jeden Kurs-Tag mit einem viergängigen Menu ab. Lassen Sie sich überraschen! Unsere Kunden aus Baden-Württemberg und der Schweiz konnten wir bisher immer sowohl was das Kulinarische und vor allem das Fachliche betrifft immer zur vollen Zufriedenheit überzeugen!

Bilder vom Hotel Hoeri

Außerdem im Preis des Kurses enthalten:
Schulungsunterlagen

© Der Inhalt und die Bilder dieser Seite unterliegen dem Copyright wie im Impressum beschrieben.