VersaMCU/platformio.ini
Julian Appel f60a29137c Fix bootloader hardware bring-up and add key-based boot entry
Hardware-tested the UF2 bootloader end to end on a real VersaPad v2
board. Found and fixed a real bug: the bootloader's jump into the app
(__set_MSP -> SCB->VTOR -> bx) hard-faulted on every standalone boot,
even with the debugger fully disconnected; identical register/VTOR
values injected directly by a halted debugger ran fine, which pointed
at the missing __DSB()/__ISB() barriers ARM's own guidance requires
for this exact pattern. Also fixed a USB PID collision (0x0011 is
Adafruit's own Gemma M0 bootloader PID, misidentified by Windows as a
Circuit Playground COM port instead of exposing VERSABOOT).

This board has no dedicated reset/boot button, so add a hardware boot
entry that doesn't need one: holding the bottom-right Cherry MX key
(key_id 24) during reset/power-on drives its matrix row and reads its
column directly in the bootloader, before the app is even validated.

Also corrected the app-side flash_with_bootloader.ld (was missing the
NVM carve-out flash_without_bootloader.ld already has) and
boards/versapad.json (wrong flash/RAM size, wrong MCU macro, stale
PID), and enabled the previously-commented-out env:versapad_usb.

Documented findings in bootloader/README.md, bootloader/TESTING.md,
and doc/09_known_limitations.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 21:28:15 +02:00

29 lines
1 KiB
INI
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; VersaPad v2 PlatformIO Configuration
; Custom SAMD21G17D board (custom PCB)
; Programmer: Atmel-ICE via SWD (kein Bootloader nötig)
[common]
platform = atmelsam
framework = arduino
board_build.variants_dir = ${PROJECT_DIR}/variants
lib_deps = adafruit/Adafruit NeoPixel
build_flags =
-DUSB_PRODUCT='"VersaPad v2"'
-DUSB_MANUFACTURER='"Custom"'
-DUSB_VID=0x239A
-DUSB_PID=0x0042
-DCRYSTALLESS
; ── Atmel-ICE via SWD (Hauptkonfiguration) ────────────────────────────────────
[env:versapad]
extends = common
board = versapad_nobl
upload_protocol = custom
extra_scripts = upload_openocd.py
debug_tool = openocd
; ── USB SAM-BA (nur wenn Bootloader geflasht ist) ─────────────────────────────
[env:versapad_usb]
extends = common
board = versapad
upload_protocol = sam-ba