🛠 Pico SDK 2.x sur une carte RP2350 générique : CMake, board header et PICO_BOARD

RP2350 (générique / cartes basées sur le RP2350) · intermediaire · Schéma : IMG-rp2350-generic-intermediaire-2-rp2350-sdk2-board-header.svg — éditeur de code avec CMakeLists.txt et un fichier d'en-tête board custom (maquette de brochage), ligne de commande cmake -DPICO_BOARD=..., carte RP2350 générique connectée en USB avec outil picotool

Objectifs

Le Pico C/C++ SDK (branche 2.x) est l'outil officiel pour exploiter le RP2350 en C : GPIO, PIO, HSTX, double architecture. Piège connu des cartes génériques : le SDK master fournit les en-têtes pico2/pico2_w mais aucun en-tête « generic RP2350 » — soit ta carte est supportée par un dépôt tiers qui fournit son header, soit tu écris le tien (pico-sdk README). Ce tuto : monter un projet CMake propre, cibler PICO_BOARD=pico2 pour une carte compatible Pico-2, et créer un board header minimal pour un module exotique.

Matériel

Commandes complètes

# 1) Toolchain + SDK (Linux ; sous Windows : WSL ou l'installateur officiel)
git clone https://github.com/raspberrypi/pico-sdk.git --branch master
export PICO_SDK_PATH=$PWD/pico-sdk

# 2) Projet minimal
mkdir clignot && cd clignot
cat > CMakeLists.txt <<'EOF'
cmake_minimum_required(VERSION 3.13)
include($ENV{PICO_SDK_PATH}/pico_sdk_init.cmake)
project(clignot C CXX ASM)
pico_sdk_init
add_executable(clignot main.c)
target_link_libraries(clignot pico_stdlib)
pico_add_extra_executables(clignot)   # génère .uf2
EOF

cat > main.c <<'EOF'
#include "pico/stdlib.h"
#define LED 25
int main(void) {
    stdio_init_all;
    gpio_init(LED); gpio_set_dir(LED, GPIO_OUT);
    for (;;) { gpio_put(LED, !gpio_get(LED)); sleep_ms(250); }
}
EOF

# 3) Configurer pour une carte compatible Pico 2, puis compiler
mkdir build && cd build
cmake -DPICO_BOARD=pico2 ..
make -j
picotool info clignot.uf2      # affiche le nom de board embarqué

Board header maison (module générique)

Copie pico-sdk/src/boards/include/boards/pico2.h vers mes_boards/generic_rp2350.h, puis ajuste au brochage de TA carte : #define NUM_BANK0_GPIOS 30 (RP2350A) ou 48 (RP2350B), la broche LED, l'oscillateur 12 MHz, et passe le dossier d'en-têtes à CMake avec -DPICO_BOARD=generic_rp2350 et la variable de recherche d'en-têtes de board.

Vérification attendue

make produit clignot.uf2 ; picotool info affiche « Program information » avec le board pico2. Dépose l'UF2 en mode BOOTSEL : la LED clignote. Le même binaire fonctionne sur toute carte au brochage Pico-2 (PicoPlus2, Tiny2350, etc.) puisque la compatibilité est au niveau board/SDK, pas silicium — le boîtier QFN-60/80 du RP2350 n'est d'ailleurs pas pin-compatible avec le QFN-56 du RP2040.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels