#!/bin/bash # # Builds the Piano LED Visualizer firmware for RP2040 / RP2350. # # Produces pico/build/pianoled.uf2. Hold BOOTSEL while plugging the board in # and copy the .uf2 onto the mass-storage device that appears. # set -e cd "$(dirname "$0")" # Board. Defaults to the Waveshare RP2350-Plus (4MB, USB-C). Any RP2040/RP2350 # board works; pico-sdk 2.3.0 ships definitions for 12 Waveshare RP2350 boards # plus the stock pico/pico2. Run this to list them: # ls "$PICO_SDK_PATH"/src/boards/include/boards/ BOARD=${BOARD:-waveshare_rp2350_plus_4mb} export PICO_SDK_PATH=${PICO_SDK_PATH:-$HOME/git/pico-sdk} if [ ! -f "$PICO_SDK_PATH/pico_sdk_init.cmake" ]; then echo "error: pico-sdk not found at $PICO_SDK_PATH" >&2 echo " git clone --recursive https://github.com/raspberrypi/pico-sdk" >&2 echo " or set PICO_SDK_PATH" >&2 exit 1 fi if ! command -v arm-none-eabi-gcc >/dev/null 2>&1; then echo "error: arm-none-eabi-gcc not found." >&2 echo " Debian/Ubuntu: sudo apt-get install gcc-arm-none-eabi" >&2 exit 1 fi cmake -B build -S . -DPICO_BOARD="$BOARD" cmake --build build -j "$(nproc)" echo echo "Built for $BOARD:" ls -l build/pianoled.uf2 arm-none-eabi-size build/pianoled.elf