Run all commands from core/.
- Rust toolchain available (
cargo, required targets installed). arm-none-eabi-gccinstalled (for hardware firmware build).openocdinstalled (for board flashing).- NUCLEO-H563ZI connected over ST-Link USB (for hardware steps).
examples/nucleo-h563zi/scripts/run_full_example.shPass criteria:
- script exits with code
0 - UART smoke contains
OK - IO smoke contains LED on/off lines for
PB0/PF4/PG4 - full-chip smoke contains
RCC=1 SYSTICK=1 UART=1andALL=1
- Open
examples/nucleo-h563ziin VS Code. - Run
LabWired: Run in LabWired.
Pass criteria:
- build succeeds from example-root
Makefile target/firmwareis created underexamples/nucleo-h563zi- simulator starts with the built ELF
LabWiredoutput panel contains emulator UART lines likeH563-IO
examples/nucleo-h563zi/scripts/run_blink_uart_dual.sh --port /dev/ttyACM0Pass criteria:
- emulator phase passes
io-smoke.yaml - hardware phase flashes firmware successfully
- hardware UART output contains:
H563-BLINK-UART- at least one
BLINK ... PB0=1 ... - at least one
BLINK ... PB0=0 ...
- terminal shows both:
- emulator UART lines (
H563-IO,PB0=...) - live hardware UART lines during capture window
- emulator UART lines (
examples/nucleo-h563zi/scripts/run_blink_uart_hardware.sh --port /dev/ttyACM0Optional serial autodetect:
examples/nucleo-h563zi/scripts/run_blink_uart_hardware.sh- Run
run_full_example.shand show deterministic emulator pass. - Run
run_blink_uart_hardware.sh --port /dev/ttyACM0with board visible. - Point to UART lines and physical LED blinking as proof of parity.
- Close with
docs/NUCLEO_H563ZI_DEMO.mdfor capability summary.
examples/nucleo-h563zi/scripts/run_video_demo.sh --mode all --port /dev/ttyACM0 --keep-artifactsPass criteria:
PASS: uart-smokePASS: io-smokePASS: fullchip-smoke- Hardware phase prints
Hardware blink+UART check passed.
./scripts/unsupported_instruction_audit.sh \
--firmware target/thumbv7m-none-eabi/release/firmware-h563-io-demo \
--system configs/systems/nucleo-h563zi-demo.yaml \
--max-steps 200000 \
--out-dir out/unsupported-audit/nucleo-h563ziPass criteria:
- script exits with code
0 out/unsupported-audit/nucleo-h563zi/report.mdexists- unsupported counts are reviewed and tracked (or zero)
Reset-state register capture from the real board (ground truth for the chip
model's reset values; pinned by crates/core/tests/h563_conformance.rs):
bash scripts/hw-capture-stm32h563.shDigital-twin smoke: one ELF on both targets, identical UART bytes expected.
# Build
(cd examples/nucleo-h563zi/silicon-smoke && cargo build --release --target thumbv7m-none-eabi)
ELF=examples/nucleo-h563zi/silicon-smoke/target/thumbv7m-none-eabi/release/h563-silicon-smoke
# Simulator
cargo run -p labwired-cli -- -f $ELF -s configs/systems/nucleo-h563zi-demo.yaml --max-steps 200000
# Real board (probe-rs, STLINK-V3 on-board)
probe-rs download --chip STM32H563ZITx $ELF && \
stty -F /dev/ttyACM0 115200 raw -echo && \
(timeout 8 cat /dev/ttyACM0 &) && sleep 1 && probe-rs reset --chip STM32H563ZITxPass criteria:
- both targets print the same two lines:
H563-SMOKE CR=0000002B MODERA=ABFFFFFF CALIB=001003E8andH563-SMOKE done - green LED PB0 blinks on the board
openocdtransport errors: use defaults from script (stlink-dap+dapdirect_swd).- No UART output: verify port (
/dev/ttyACM*) and ST-Link cable. - Permission errors on serial: add user to
dialoutgroup or run with proper device permissions.