Seminar / Training
Inhaltsverzeichnis
- Einordnung
- Kompetenzziele
- Seminarinhalte
- Praxisübungen
- Methodik
- Zielgruppe
- Vorkenntnisse
Einordnung
Das Seminar führt durch die risikoreichste Phase vieler Board-Portierungen: vom minimalen Reset- und Taktzustand über UART und Speichercontroller bis zum belastbaren DRAM-Nachweis. Mess-, Debug- und Recoveryverfahren werden direkt in den Implementierungsablauf integriert.
Kompetenzziele
- Board- und Speicherparameter aus Schaltplan, Datenblatt und Bestückung ableiten.
- Clock-, Reset-, Pin- und PHY-Abhängigkeiten in eine sichere Initialisierungsfolge überführen.
- Training und Statusabfragen mit Timeouts und Diagnosemarkern instrumentieren.
- Speicher über Adress-, Daten- und Grenztests verifizieren.
- Fehler mit UART, JTAG, Map-Datei und Messmitteln reproduzierbar eingrenzen.
- Stabile Initialisierung in den oreboot-Stufenaufbau integrieren.
Seminarinhalte
Modul 1: Boarddokumentation und technische Vorprüfung
- Schritt 1: Unterlagen ordnen
SoC-Handbuch, Board-Schaltplan, Speicherbestückung, Bootschalter, Pinbelegung und bekannte Errata werden versionsbezogen erfasst.
- Schritt 2: Bootkonfiguration prüfen
Straps, eFuses, Bootreihenfolge, Recovery-Modi und Sicherheitszustände werden für das konkrete Board dokumentiert.
- Schritt 3: Messpunkte festlegen
UART, JTAG, Reset, Versorgungsschienen, Takte und wichtige Chip-Select-Signale werden für das Labor zugänglich gemacht.
- Schritt 4: Risiken bewerten
Fehlende Dokumentation, geschlossene Initialisierungsbestandteile, nicht rücksetzbare Optionen und schwer zugängliche Flashbausteine werden vor Beginn markiert.
Modul 2: Resetvektor, Assemblereinstieg und Linkerskript
- Schritt 1: Einstiegspunkt festlegen
Resetadresse, Symbolname, Ausrichtungsanforderungen und der Übergang vom Assemblereinstieg zu Rust werden eindeutig definiert.
- Schritt 2: Minimalzustand herstellen
Stackzeiger, globale Pointer, BSS-Löschung, erforderliche Register und mehrere Harts werden kontrolliert initialisiert.
- Schritt 3: Sektionen platzieren
Code, schreibgeschützte Daten, initialisierte Daten, BSS, Stack und eingebettete Binärdaten werden passenden Speicherbereichen zugewiesen.
- Schritt 4: Abbild prüfen
Map-Datei und Disassemblierung werden genutzt, um Einstieg, Sprungweiten, Adressen und unerwartete Laufzeitabhängigkeiten zu kontrollieren.
Modul 3: Registerzugriffe, PAC und HAL
- Schritt 1: Registermodell auswählen
Manuelle Registerdefinition, generierter Peripheral Access Crate und Hardware-Abstraction-Layer werden nach Dokumentationslage und Wiederverwendbarkeit bewertet.
- Schritt 2: Zugriffe typisieren
Lesen, Schreiben, Read-Modify-Write, reservierte Bits und write-one-to-clear-Verhalten werden in sichere Bedienmuster überführt.
- Schritt 3: Takt und Reset berücksichtigen
Vor jedem Peripheriezugriff werden Clock-Gates, Resetleitungen, Pin-Multiplexing und notwendige Wartezeiten geprüft.
- Schritt 4: Seiteneffekte testen
Registerwerte, externe Signale, Timeout-Verhalten und Wiederholbarkeit werden mit serieller Diagnose und Messmitteln validiert.
Modul 4: SVD-basierte SoC-Erschließung
- Schritt 1: Beschreibungsqualität prüfen
Peripherieblöcke, Adressen, Registerbreiten, Felder, Enumerationen, Resetwerte und bekannte Lücken werden gegen das Handbuch abgeglichen.
- Schritt 2: PAC generieren
Namenskonventionen, Feature-Aufteilung, Generierungsparameter und reproduzierbare Erzeugung werden im Projekt festgelegt.
- Schritt 3: Abweichungen korrigieren
Fehlerhafte Offsets, fehlende Felder und herstellerspezifische Sonderfälle werden dokumentiert und möglichst an der Beschreibungsquelle behoben.
- Schritt 4: HAL-Grenzen entwerfen
Wiederkehrende Abläufe für UART, GPIO, Clock, Reset und Speichercontroller werden oberhalb der Registerebene stabil gekapselt.
Modul 5: UART als frühe Diagnose-Schnittstelle
- Schritt 1: Signalweg klären
SoC-Pins, Pegel, Adapter, Baudrate, Taktquelle und Massebezug werden vor dem ersten Zugriff geprüft.
- Schritt 2: Minimalinitialisierung schreiben
Clock-Gate, Reset, Pinmux, Teiler, Rahmenformat und FIFO werden mit möglichst wenigen Registerzugriffen gesetzt.
- Schritt 3: Bootmarker definieren
Kurze, eindeutige Marker kennzeichnen Reset, DRAM, Storage, SBI und Payload, ohne frühe Stufen unnötig zu vergrößern.
- Schritt 4: Fehler robust erfassen
Timeouts, unplausible Zeichen, falsche Taktrate und blockierende Ausgabe werden mit Alternativprüfungen eingegrenzt.
Modul 6: DRAM-Initialisierung und Speichertraining
- Schritt 1: Parameter beschaffen
Speichertyp, Takt, Topologie, Breite, Ranks, Timingwerte, Spannungen und Boardrouting werden aus belastbaren Hardwareangaben zusammengestellt.
- Schritt 2: Controller vorbereiten
Takt, Reset, PHY, Betriebsmodus, Timingregister und Initialisierungssequenz werden in einer kontrollierten Reihenfolge programmiert.
- Schritt 3: Training überwachen
Statusregister, Wartebedingungen, Timeouts und Fehlercodes werden mit frühen Diagnosemarkern sichtbar gemacht.
- Schritt 4: Speicher validieren
Adressleitungen, Datenmuster, verschiedene Größen, Cachezustände und Grenzbereiche werden vor dem Laden weiterer Stufen geprüft.
Modul 7: GDB-, JTAG- und OpenOCD-Debugging
- Schritt 1: Debugzugang vorbereiten
JTAG-Pins, Adapterspannung, Resetführung, Kettenerkennung und Zugriffsrechte des SoC werden kontrolliert.
- Schritt 2: Symbole laden
ELF-Datei, Architektur, Ladeadresse, Relokation und Quellpfade werden zur tatsächlich laufenden Firmware passend eingerichtet.
- Schritt 3: Frühen Ablauf stoppen
Hardware-Breakpoints, Watchpoints, Registeransicht und disassemblierte Einzelschritte werden ohne zerstörerische Seiteneffekte eingesetzt.
- Schritt 4: Befund dokumentieren
Stopppunkt, Registerzustand, Speicherinhalt, erwarteter Zustand und kleinste reproduzierbare Abweichung werden für die Korrektur festgehalten.
Modul 8: Hardwarelabor und Abnahmemessungen
- Schritt 1: Laborzustand standardisieren
Versorgung, Adapter, Kabel, Bootschalter, Flashinhalt, Messgeräte und Hostsoftware werden vor jedem Versuch dokumentiert.
- Schritt 2: Beobachtungspunkte verbinden
Serielle Konsole, JTAG, Logikanalysator und Strommessung werden so vorbereitet, dass Bootphasen zeitlich zugeordnet werden können.
- Schritt 3: Testfälle ausführen
Kaltstart, Warmstart, wiederholter Reset, fehlendes Medium, beschädigtes Abbild und Recovery werden mit festen Erwartungswerten geprüft.
- Schritt 4: Abnahme protokollieren
Firmwarehash, Boardrevision, Messergebnis, Konsolenausgabe, Abweichung und Entscheidung werden in einem reproduzierbaren Prüfprotokoll zusammengeführt.
Modul 9: Bootflow und Stufenmodell
- Schritt 1: Resetzustand bestimmen
Ausführungsadresse, Privilegstufe, verfügbare Speicherbereiche, Registerzustand und Bootmedium werden aus der Plattformbeschreibung abgeleitet.
- Schritt 2: Frühe Stufe strukturieren
Stack, minimale Takt- und Pin-Konfiguration, UART-Marker sowie der Übergang aus SRAM oder XIP werden in fester Reihenfolge geplant.
- Schritt 3: Hauptstufe laden
Nach verfügbarer DRAM-Kapazität werden Firmwarebestandteile, Device Tree und Payload adresssicher in den Arbeitsspeicher übertragen.
- Schritt 4: Nutzlast übergeben
SBI-Umgebung, Hart-ID, Device-Tree-Adresse, Einstiegspunkt und Fehlerbehandlung werden vor dem Sprung zur Nutzlast geprüft.
Modul 10: Hardening, Update und Betriebsfreigabe
- Schritt 1: Build absichern
Gepinnte Abhängigkeiten, nachvollziehbare Toolchains, Reviewpflicht, Artefakthashes und getrennte Freigabeschritte werden eingerichtet.
- Schritt 2: Laufzeit minimieren
Nicht benötigte Treiber, Diagnosefunktionen, Protokolle und Schreibpfade werden aus dem Produktionsprofil entfernt oder kontrolliert.
- Schritt 3: Updateweg gestalten
Versionserkennung, Kompatibilitätsprüfung, atomare Aktualisierung, Rückfallabbild und Stromausfallverhalten werden festgelegt.
- Schritt 4: Freigabe prüfen
Bootzeit, Wiederholbarkeit, Recovery, Debugsperren, Protokollierung, bekannte Risiken und Wartungszuständigkeit werden vor der Inbetriebnahme abgenommen.
Praxisübungen
- Eine DRAM-Parameter- und Abhängigkeitsliste für ein Beispielboard erstellen.
- Clock-, Reset- und PHY-Sequenz als zustandsorientierten Ablauf implementieren.
- Trainingstatus mit Zeitgrenzen und kompakten Fehlercodes sichtbar machen.
- Datenmuster, Adressgrenzen und unterschiedliche Speicherbereiche testen.
- Einen absichtlich falschen Timingparameter mit Debug- und Messdaten eingrenzen.
- Initialisierung, Tests und Abnahmekriterien in einen wiederholbaren Boardtest überführen.
Methodik
Fachliche Einordnung, kommentierte Demonstrationen und schrittweise Laboraufgaben werden eng miteinander verbunden. Jeder Arbeitsabschnitt beginnt mit einem überprüfbaren Zielzustand, wird anhand von Konsolen-, Build- oder Messdaten kontrolliert und endet mit einer dokumentierten Fehler- oder Abnahmeprüfung. Vorbereitete Negativfälle verhindern, dass ausschließlich der erfolgreiche Idealfall betrachtet wird.
Zielgruppe
Erfahrene Firmwareentwickler, Board-Bring-up-Teams, Hardware-nahe Embedded-Entwicklung und SoC-Plattformverantwortliche.
Vorkenntnisse
Sichere Kenntnisse in MMIO, Takt- und Resetlogik, Linkerskripten und serieller Diagnose. Zugang zu Boardunterlagen, Debugschnittstelle und Messmitteln ist für den vollständigen Praxisteil erforderlich.
Fachbereichsleitung und Trainingskoordination
-

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: | 4 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr |
| Preis: |
Öffentlich oder Live Stream: € 2.396 zzgl. MwSt. Inhaus: € 6.800 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | Erfahrene Firmwareentwickler, Board-Bring-up-Teams, Hardware-nahe Embedded-Entwicklung und SoC-Plattformverantwortliche. |
| Voraussetzungen: | Sichere Kenntnisse in MMIO, Takt- und Resetlogik, Linkerskripten und serieller Diagnose. Zugang zu Boardunterlagen, Debugschnittstelle und Messmitteln ist für den vollständigen Praxisteil erforderlich. |
| 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: | Fachvortrag, kommentierte Demonstrationen, schrittweise Laborübungen und dokumentierte Fehleranalyse |
| Seminararten: | Öffentlich, Webinar, Inhouse, Workshop - Durchführung mit Trainer vor Ort; Webinar nur bei ausdrücklicher Festlegung |
| 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- und 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.
