72 lines
2.0 KiB
Markdown
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
|