Audio (the Scroll Pack has no speaker, so MIDI is the only path):
- usb-device 0.3 + usbd-midi 0.5 on the rp2040-hal UsbBus; enumerates as a
class-compliant MIDI device 'PM_G-1 Grid'.
- tick() emits a GM note-on per lane hit on channel 10 (note from the ported
SOUND_GM map, velocity by level) via send_bytes([0x09,0x99,note,vel]) — raw
4-byte packets, so arbitrary GM drum notes work without the named Note enum.
- USB polled every loop iteration AND during the boot splash (so the host can
enumerate during the ~2.5s animation).
Debug: defmt/defmt-rtt + panic-probe + flip-link; runner probe-rs run --chip
RP2040 (Pi Debug Probe). build.sh emits pm-grid.uf2 + pm-grid.elf; deploy serves
both; key info! log points + 1Hz heartbeat.
Web: drop CircuitPython from the PM_G-1 product. info-grid.html features the
Rust .uf2 download + accurate controls/views (X/Y swap, Ticker); build.sh +
deploy.sh no longer bundle/serve pm_g1_circuitpy.zip or pico-scroll-app.{py,mpy}.
pico-scroll/ stays as the reference port; editor FW_PATHS.G left for graceful
degradation.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
16 lines
562 B
TOML
16 lines
562 B
TOML
[build]
|
|
target = "thumbv6m-none-eabi" # RP2040 = Cortex-M0+ (the plain Pico on the Scroll Pack)
|
|
|
|
[target.thumbv6m-none-eabi]
|
|
# flip-link: stack below statics, so an overflow faults cleanly instead of corrupting .bss/.data.
|
|
linker = "flip-link"
|
|
# `cargo run` flashes over the Raspberry Pi Debug Probe and streams defmt logs/panics via RTT.
|
|
runner = "probe-rs run --chip RP2040"
|
|
rustflags = [
|
|
"-C", "link-arg=--nmagic",
|
|
"-C", "link-arg=-Tlink.x",
|
|
"-C", "link-arg=-Tdefmt.x", # defmt's linker section for log-string interning
|
|
]
|
|
|
|
[env]
|
|
DEFMT_LOG = "debug"
|