IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

f-leb

[Actualité] [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK)

Noter ce billet
par , 20/04/2023 à 20h20 (5054 Affichages)
Pour programmer la carte Raspberry Pi Pico en langage C/C++, la fondation Raspberry Pi propose un kit de développement : le Raspberry Pi Pico C/C++ SDK.
Si vous voulez tester ce kit sous Linux, et sans trop d'efforts, ce tutoriel est peut-être fait pour vous...

Nom : 20230419_182324.jpg
Affichages : 2765
Taille : 141,0 Ko

La Raspberry Pi Pico que j'utilise est montée sur une petite plaque de câblage, avec un bouton-poussoir entre les broches (28)GND et (30)RUN. Ce bouton-poussoir sert à faire un Reset de la carte (sic), et évite ainsi les nombreuses connexions/déconnexions du câble USB pendant la mise au point de vos programmes.
Le kit est installé sur un Linux Ubuntu (et même testé avec succès sur une machine virtuelle Lubuntu montée avec VirtualBox).

1) Installation du kit et des outils

Pour installer la dernière version du kit sur votre dossier personnel ~/pico-sdk, il faut cloner le dépôt sur le Github officiel de la fondation :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ cd ~
$ git clone https://github.com/raspberrypi/pico-sdk.git

Et si la commande git ne répond pas, c'est qu'il faut d'abord installer le gestionnaire : sudo apt-get install git.

Par anticipation, il faut compléter le kit avec des sous-modules. Pour les installer :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ cd ~/pico-sdk
$ git submodule update --init

il faut maintenant installer le compilateur et l'utilitaire CMake (attention : + de 2 Go de fichiers) :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
$ sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

Il faut ensuite que le système connaisse le chemin (path) vers le kit. Vous pouvez par exemple éditer le fichier ~/.bashrc, avec l'éditeur nano :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
$ sudo nano ~/.bashrc
Et rajouter à la fin du fichier la ligne :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
export PICO_SDK_PATH=~/pico-sdk
Sauvegardez le fichier, et redémarrez votre session Linux pour prendre en compte les modifications. Le kit est maintenant installé...

2) Un premier projet : le blink

Pour un premier programme, vous allez faire clignoter la LED intégrée en surface de la carte Raspberry Pi Pico (comme c'est original !!).
Commencez par créer le dossier du projet, par exemple :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$ cd ~
$ mkdir essai-blink-pico
$ cd essai-blink-pico

Avec votre éditeur de sources préférés, créez le fichier source blink.c en langage C (d'après pico-examples/blink) :
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "pico/stdlib.h"
 
int main() {
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    while (true) {
        gpio_put(LED_PIN, 1);
        sleep_ms(250);
        gpio_put(LED_PIN, 0);
        sleep_ms(250);
    }
}

Les étapes de construction (build) du projet qui suivent sont plus délicates à comprendre. Vous trouverez les détails au paragraphe Quick-start your own project.

Le script de compilation est produit par l'utilitaire CMake. Pour comprendre CMake, je vous recommande l'excellent tutoriel : Utiliser CMake pour compiler un projet par Alexandre Laurent (aka LittleWhite).

Nom : compilation_cmake.png
Affichages : 2199
Taille : 13,2 Ko
Fonctionnement de CMake
Image reproduite d'après https://alexandre-laurent.developpez...toriels/cmake/
avec l'aimable autorisation de LittleWhite

Ainsi, le dossier du projet complet ~/essai-blink-pico comportera les fichiers et dossier suivants :
~/essai-blink-pico
   |__ blink.c
   |__ build
   |__ CMakeLists.txt
   |__ pico_sdk_import.cmake
  • Le fichier pico_sdk_import.cmake est une copie de celui présent dans le sous-dossier d'installation du kit ~/pico-sdk/external. Voir aussi pico-sdk/external/pico_sdk_import.cmake.
  • Le fichier générique CMakeLists.txt qui produira le script de compilation aura le contenu suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    cmake_minimum_required(VERSION 3.13)
    
    # initialize the SDK based on PICO_SDK_PATH
    # note: this must happen before project()
    include(pico_sdk_import.cmake)
    
    project(blink)
    
    # initialize the Raspberry Pi Pico SDK
    pico_sdk_init()
    
    # rest of your project
    add_executable(blink
        blink.c
    )
    
    # Add pico_stdlib library which aggregates commonly used features
    target_link_libraries(blink pico_stdlib)
    
    # create map/bin/hex/uf2 file in addition to ELF.
    pico_add_extra_outputs(blink)
  • Il vous reste à créer un dossier build où seront stockés les fichiers de construction du projet.


3) Génération du projet

Placez-vous dans le dossier ~/essai-blink-pico/build et lancez CMake :
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$ cd ~/essai-blink-pico/build
$ cmake ..

Si tout se passe bien, le compte-rendu se termine par des messages triomphants, du genre :
...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fleb/essai-blink-pico/build
Il reste à compiler et produire les fichiers binaires avec l'utilitaire make :

4) Flasher le fichier binaire uf2 dans la carte

Le fichier avec l'extension uf2 qui nous intéresse, à flasher dans la carte, est dans le dossier ~/essai-blink-pico/build : blink.uf2.

Quand la carte est connectée par le câble USB, exécutez la séquence suivante :
  • appuyez sur le bouton BOOTSEL de la carte ;
  • appuyez sur le bouton Reset (placé entre les broches (28)GND et (30)RUN, voir plus haut) ;
  • relâchez le bouton Reset ;
  • relâchez le bouton BOOTSEL.

La carte passe alors en mode USB et se comporte comme une clé USB. Un dossier monté devrait apparaître comme ci-dessous :

Nom : mnt-rpi_usb.png
Affichages : 2265
Taille : 35,8 Ko

Il reste à flasher le binaire par glisser-déposer du fichier blink.uf2 dans ce dossier.

Un dernier Reset, et le miracle du blink se produit...

5) Sitographie


Et sur Developpez.com :

En complément :

Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Viadeo Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Twitter Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Google Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Facebook Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Digg Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Delicious Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog MySpace Envoyer le billet « [Raspberry Pi Pico][SDK C/C++][Linux] Comment démarrer rapidement en langage C/C++ avec le kit officiel (SDK) » dans le blog Yahoo

Mis à jour 14/05/2023 à 14h08 par f-leb

Catégories
Raspberry Pi , Programmation , C , C++ , Raspberry Pi Pico

Commentaires