Files
didakta-rust-on-robots/WORKSHOP.md
2026-03-08 19:41:38 +01:00

2.0 KiB

Workshop Plan (60 Minutes)

Goal

Von Rust-Basics zu echter Hardware auf STM32F103C8 Bluepill:

  • LED blinken
  • Button einlesen
  • Analogwert einlesen
  • Ausgabe live über probe-rs / RTT sehen

Timing

  1. 00:00-00:10: Setup + Probe Smoke Test (00)
  2. 00:10-00:28: Rust Basics (01-03)
  3. 00:28-00:36: Erstes no_std Firmware-Projekt (04)
  4. 00:36-00:44: LED Blinky (05)
  5. 00:44-00:50: Button Input (06)
  6. 00:50-00:56: Analog Readout (07)
  7. 00:56-01:00: Integration (08)

Rules During Workshop

  1. Bearbeite nur task/.
  2. Nutze solution/ nur als Hilfe bei Blockern.
  3. Falls >3 Minuten blockiert: Diff vergleichen, minimalen Fix übernehmen, weiter.
  4. Bei Embedded-Schritten: Board vor jedem cargo run korrekt verkabeln.

Repo Management During Workshop

  1. main enthält Aufgaben und Referenzlösungen.
  2. Instructor kann Wiederherstellungspunkte als Tags setzen:
    • step-00-start ... step-08-solution
  3. Teilnehmer arbeiten auf lokalem Branch:
    • participant/<name>
  4. Wenn eine Aufgabe nicht weitergeht:
    • minimalen Diff aus solution/ übernehmen und fortfahren.

Step Contract

Jeder Schritt enthält:

  • README.md mit Ziel, Ablauf, Done-Check
  • task/ (Aufgabe)
  • solution/ (Referenz)

Script Contract

  • scripts/setup-live.sh
  • scripts/verify-host.sh
  • scripts/verify-probe.sh
  • scripts/run-step.sh <step-id> <task|solution>
  • scripts/check-step.sh <step-id>

Target Contract (Embedded Steps 04-08)

  • Target: thumbv7m-none-eabi
  • Runner: probe-rs run --chip STM32F103C8
  • Logging: defmt-rtt + panic-probe

Acceptance Scenarios

  1. Steps 01-03: cargo run funktioniert für task/ und solution/.
  2. Steps 04-08: cargo build --release funktioniert für task/ und solution/.
  3. Probe-Verbindung:
    • probe-rs list erkennt ST-Link.
  4. Behavior:
    • 05: LED blinkt
    • 06: Press/Release Logs
    • 07: ADC-Wert reagiert auf Eingang
    • 08: integriertes Verhalten läuft stabil