Programar la Pico en C++
Programar la Raspberry Pi Pico directamente en C/C++ ofrece máximo control sobre el hardware y mejor desempeño que las capas de compatibilidad Arduino. Estos son los pasos clave para configurar el entorno oficial Pico SDK en Windows, Linux o macOS.
Requisitos previos
- Toolchain Arm GCC (
arm-none-eabi-gccynewlib). - CMake ≥ 3.13 y Ninja o Make.
- Python 3 para scripts auxiliares.
- Git para clonar el SDK y submódulos.
En Windows se recomienda usar WSL o el instalador oficial que empaqueta todas las dependencias.
Instalación del Pico SDK
mkdir -p ~/pico && cd ~/pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
export PICO_SDK_PATH=$PWD
Añade la variable PICO_SDK_PATH a tu .bashrc o script de entorno.
Para la Pico 2 (RP2350) habilita el flag PICO_PLATFORM=rp2350 o usa la rama sdk-2.0 que soporta el nuevo silicio.
Crear un proyecto base
cd ~/pico
git clone https://github.com/raspberrypi/pico-examples.git
cd pico-examples/blink
mkdir build && cd build
cmake -DPICO_BOARD=pico_w ..
ninja
Generarás archivos .uf2 y .elf. Copia el .uf2 a la unidad montada cuando la Pico esté en modo BOOTSEL.
Estructura recomendada
my-project/
├── CMakeLists.txt
├── cmake/
│ └── pico_sdk_import.cmake
├── include/
├── src/
│ └── main.cpp
└── build/
pico_sdk_import.cmakeapunta al SDK sin necesidad de variables globales.- Define targets específicos (
pico_add_extra_outputs,pico_enable_stdio_usb).
Depuración y pruebas
- Conecta un debug probe (Picoprobe, CMSIS-DAP) al puerto SWD.
- Usa OpenOCD con el archivo
interface/picoprobe.cfgytarget/rp2040.cfg. - Inicia gdb-multiarch o
arm-none-eabi-gdbpara setear breakpoints y ver registros. - Aprovecha pico_unit o frameworks como Unity para pruebas unitarias en host.
Buenas prácticas
- Habilita std::span,
-fno-exceptionsy LTO para reducir tamaño si no necesitas RTTI. - Documenta la versión del SDK en
cmake/pico_sdk_import.cmake. - Crea targets separados para Pico y Pico W con diferentes opciones de Wi-Fi/Bluetooth.
- Automatiza builds con GitHub Actions usando contenedores oficiales
raspberrypi/pico-sdk.
Con esta configuración tendrás un flujo profesional para desarrollar en C/C++ sobre la Raspberry Pi Pico y sus variantes sin depender de Arduino.
