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

72 lines
2.0 KiB
Markdown

# 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