STD_TYPES, MCU_UART, MCU_USB, MCU_PIO, HAL_COM, HAL_LED moved to separate repos under common/ as git submodules. Each submodule ships with default config (cfg/) that projects can override. color_switcher/src/ now contains only project-specific components (APP_CLSW, SYS_ECU). CMake sources_config references common/ via COMMON_DIR. Docker volume mounts ../common:/common so the container sees the submodules. Build verified — zero errors.
Color Switcher
A Raspberry Pi Pico project that sends commands over UART to a connected computer. Written entirely in C using the Pico SDK.
Prerequisites
- Docker and Docker Compose
No local toolchain installation needed — everything runs inside the container.
Building
# Build the Docker image (first time only, or after Dockerfile changes)
docker compose build
# Compile the firmware
docker compose up
The .uf2 firmware file will appear in build/.
Flashing
- Hold the BOOTSEL button on the Pico and plug it into USB
- It mounts as a USB mass storage device
- Drag the
.uf2file frombuild/onto the Pico - The Pico reboots and runs the firmware
Interactive Shell
To drop into the build container for debugging or manual commands:
docker compose run --rm pico-build bash