AI-Assisted Development: This project is developed with AI assistance under human supervision. The working model is human-in-the-loop AI-assisted development (AI as pair programmer, human as decision-maker). See Development methodology and AI-assisted development concept.
A/B bootloader for RP2040 (Raspberry Pi Pico) written in Rust. The bootloader copies firmware from flash to RAM before executing it and supports two banks for safer updates over USB CDC.
For full documentation, start here: docs/index.md
- Documentation hub:
docs/index.md - First-time setup:
docs/tutorials/first-bootloader-flash.md - Firmware operations:
docs/how-to/upload-firmware.md - Architecture decisions (ADR):
docs/explanation/architecture-decisions.md
# Install rust-objcopy (cargo-binutils) + llvm tools
make install-tools
# Show all available targets
make help
# Build everything (bootloader UF2 + Rust BIN + C++ firmware)
make all
# Build with a specific version
make all VERSION=0.3.2
# Show crispy-upload usage
cargo run --release -p crispy-upload-rs -- --helpcrispy-bootloader/ # RP2040 bootloader
crispy-fw-sample-rs/ # Sample Rust firmware (RAM execution)
crispy-fw-sample-cpp/ # Sample C++ firmware (Pico SDK)
crispy-sdk-cpp/ # C++ SDK for Crispy bootloader
crispy-common-rs/ # Shared Rust crate (protocol + flash utilities)
crispy-common-python/ # Python protocol library (with unit tests)
crispy-upload-rs/ # Host CLI (Rust) for upload / status / bank selection
crispy-upload-python/ # Host CLI (Python) for firmware upload
linker_scripts/ # Memory layouts for bootloader and firmware
tests/integration/ # Hardware integration + deployment tests
docs/ # Project documentation (Diataxis structure)
VERSION # Single source of truth for project version
- Unit tests (Rust + Python):
make test-unit - Hardware integration tests:
docs/how-to/run-integration-tests.md - Integration tests:
make test-integration - All linters:
make lint
MIT - Copyright (c) 2026 ADNT Sarl