Dieses Seminar behandelt Einstieg in Buildumgebung, Pluginarchitektur, Geräteerkennung, Instance IDs, Quirks, Firmwareparser, Updatezustände und erste automatisierte Tests. Die fachlichen Grundlagen werden mit nachvollziehbaren Arbeitsabläufen, Demonstrationen und praktischen Übungen verbunden.
Inhaltsübersicht
- Zielgruppe und Voraussetzungen
- Lernziele
- Didaktische Einordnung
- Seminarinhalte mit schrittweisen Arbeitsabläufen
- Praxisarbeiten
- Arbeitsumgebung
Zielgruppe und Voraussetzungen
Zielgruppe: Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung.
Voraussetzungen: Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten.
Lernziele
- Entwicklungs- und Buildumgebung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Pluginarchitektur und Lebenszyklus fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Geräteerkennung, Instance IDs und Quirks fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Geräteemulation und reproduzierbare Updateaufzeichnungen fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Unit-, Integrations- und Hardwaretests fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
- Upstreambeitrag, Review und Wartung fachlich einordnen und in einen reproduzierbaren Arbeitsablauf überführen.
Didaktische Einordnung
Drei Tage sind erforderlich, damit Architektur und Geräteerkennung nicht nur erklärt, sondern in einem lauffähigen Minimalplugin mit Parser und Testfall umgesetzt werden können. Pro Seminartag sind ungefähr sechs Unterrichtsstunden mit zusätzlichen Pausen vorgesehen. Die Dauer entspricht dem ausgewählten TYPO3-Seminartemplate.
Seminarinhalte
1. Entwicklungs- und Buildumgebung
Eine reproduzierbare Entwicklungsumgebung bildet Abhängigkeiten, Buildoptionen, Tests und Debugkonfiguration nachvollziehbar ab.
- Quellstand, Compiler, Buildsystem und erforderliche Bibliotheken versioniert festlegen.
- Buildoptionen auf die benötigten Plugins und Testfunktionen begrenzen.
- Separates Build- und Installationspräfix für Entwicklung und Systemversion verwenden.
- Debugsymbole, ausführliche Protokollierung und Testdaten aktivieren.
- Build, Basistests und Start des Daemons als reproduzierbaren Prüfablauf dokumentieren.
2. Pluginarchitektur und Lebenszyklus
Ein fwupd-Plugin verbindet Geräteerkennung, Firmwareformat, Updateprotokoll und Zustandsübergänge mit dem Daemon.
- Pluginregistrierung, Abhängigkeiten und unterstützte Geräteklassen im Quellbaum lokalisieren.
- Coldplug-, Hotplug-, Setup-, Prepare-, Write-, Attach- und Reload-Phasen voneinander abgrenzen.
- Geräteobjekte, Firmwareobjekte und Kontextdaten mit klaren Verantwortlichkeiten modellieren.
- Unterstützte Updateprotokolle, Flags, Anforderungen und Fehlerzustände deklarieren.
- Pluginverhalten bei Start, Replug, Neustart und fehlender Hardware als Zustandsdiagramm dokumentieren.
3. Geräteerkennung, Instance IDs und Quirks
Zuverlässige Geräteerkennung vermeidet falsche Zuordnungen und hält Modellvarianten außerhalb des Quellcodes beherrschbar.
- Geeignete Gerätequelle wie USB, HID, PCI, I2C, MTD oder Redfish bestimmen.
- Stabile Instance IDs aus tatsächlich verfügbaren Hardwaremerkmalen zusammensetzen.
- GUIDs ableiten und gegen bekannte Gerätevarianten sowie Bootloaderzustände prüfen.
- Modell- und revisionsspezifische Eigenschaften als Quirks statt als verstreute Sonderfälle pflegen.
- Positive, negative und mehrdeutige Erkennung mit Testdaten absichern.
4. Firmwareformate, Parser und Prüfsummen
Firmwareparser behandeln Eingabedaten als nicht vertrauenswürdig und validieren Struktur, Grenzen, Versionen sowie Prüfsummen.
- Container-, Header-, Payload- und Signaturbereiche des Firmwareformats beschreiben.
- Längen, Offsets, Ganzzahlbereiche und Verschachtelungen vor jedem Zugriff validieren.
- Version, Gerätekennung und Kompatibilitätsmerkmale in ein Firmwareobjekt überführen.
- Prüfsummen und kryptografische Signaturen an der richtigen Verarbeitungsebene prüfen.
- Fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.
5. Updateprotokoll und Transaktionsmodell
Das Updateprotokoll wird als Transaktion mit Vorbereitung, Transfer, Verifikation, Aktivierung und Wiederanlauf modelliert.
- Transport, Paketgröße, Sequenzierung, Zeitlimits und Antwortcodes des Geräts erfassen.
- Übergang in Bootloader- oder Updatezustand mit eindeutiger Gerätewiedererkennung planen.
- Payload in validierten Blöcken übertragen und Fortschritt aus bestätigten Bytes ableiten.
- Geräteseitige Verifikation, Aktivierung und Rückkehr in den Laufzeitmodus durchführen.
- Abbruchpunkte, Wiederholbarkeit und Recovery-Verhalten für jede Phase festlegen.
6. Geräteemulation und reproduzierbare Updateaufzeichnungen
Emulation ersetzt nicht die Hardwareprüfung, ermöglicht aber reproduzierbare Regressionstests und Fehleranalysen.
- Emulationsfunktion in einer isolierten Testkonfiguration aktivieren.
- Zielgerät eindeutig markieren und einen vollständigen Updateablauf aufzeichnen.
- Aufzeichnung mit Geräteereignissen, Antworten und Zustandswechseln speichern.
- Emuliertes Gerät ohne physische Hardware laden und erwartete Abläufe wiederholen.
- Aufzeichnung versionieren und als Regressionstest in den Entwicklungsprozess aufnehmen.
7. Unit-, Integrations- und Hardwaretests
Teststufen werden getrennt aufgebaut, damit Parserfehler, Zustandsfehler und Hardwareprobleme gezielt erkannt werden.
- Parser- und Hilfsfunktionen mit kleinen Unit-Tests und klaren Grenzfällen prüfen.
- Pluginzustände mit Emulation oder Mock-Geräten als Integrationstest ausführen.
- Upgrade, Downgrade, Reinstall, Unterbrechung und Recovery auf Referenzhardware testen.
- Ausgaben, Historie, Geräteflags und Firmwarestand nach jedem Testfall verifizieren.
- Testmatrix nach Modell, Revision, Firmwareausgangsstand und Betriebssystem pflegen.
8. Upstreambeitrag, Review und Wartung
Ein wartbares Plugin benötigt neben funktionierendem Code auch Tests, Dokumentation, Metadaten und einen langfristigen Pflegeprozess.
- Änderungen in kleine, nachvollziehbare Commits mit klarer Problemstellung zerlegen.
- Coding-Konventionen, Lizenzvorgaben und bestehende Abstraktionen des Projekts einhalten.
- Tests, Quirks, Gerätebeispiele und technische Dokumentation gemeinsam mit dem Code liefern.
- Reviewhinweise reproduzierbar bearbeiten und Hardwareergebnisse nachvollziehbar belegen.
- Verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.
Praxisarbeiten
- Praxisfall „Entwicklungs- und Buildumgebung“ bearbeiten und als Ergebnis build, Basistests und Start des Daemons als reproduzierbaren Prüfablauf dokumentieren.
- Praxisfall „Pluginarchitektur und Lebenszyklus“ bearbeiten und als Ergebnis pluginverhalten bei Start, Replug, Neustart und fehlender Hardware als Zustandsdiagramm dokumentieren.
- Praxisfall „Firmwareformate, Parser und Prüfsummen“ bearbeiten und als Ergebnis fehlerhafte, abgeschnittene und manipulierte Beispieldateien in negative Tests aufnehmen.
- Praxisfall „Updateprotokoll und Transaktionsmodell“ bearbeiten und als Ergebnis abbruchpunkte, Wiederholbarkeit und Recovery-Verhalten für jede Phase festlegen.
- Praxisfall „Unit-, Integrations- und Hardwaretests“ bearbeiten und als Ergebnis testmatrix nach Modell, Revision, Firmwareausgangsstand und Betriebssystem pflegen.
- Praxisfall „Upstreambeitrag, Review und Wartung“ bearbeiten und als Ergebnis verantwortung für Regressionen, neue Gerätevarianten und Sicherheitsmeldungen organisatorisch festlegen.
Arbeitsumgebung
Entwicklungsrechner mit isoliertem fwupd-Build, Testdaten und nach Möglichkeit geeigneter Referenzhardware. Alle Übungen werden mit dokumentiertem Ausgangszustand, eindeutigen Prüfkriterien und einer abschließenden technischen Kontrolle durchgeführt.
Fachbereichsleitung und Trainerteam
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
Seminardetails
| Dauer: | 3 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 1.797 zzgl. MwSt. Inhaus: € 5.100 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Linux- und Embedded-Entwicklung, Firmwareentwicklung, Geräteintegration, technische Architektur und Maintainer von Hardwareunterstützung. |
| Voraussetzungen: | Gute Linux- und C-Kenntnisse, sichere Arbeit mit Buildsystem, Git und Debugger; Grundkenntnisse von Gerätebussen und Firmwareformaten. |
| Standorte: | Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System, strukturierte Schritt-für-Schritt-Arbeitsaufträge |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter + 49 (221) 74740055 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
