Raspberry Pi Pico - S’installer avec VS Code

15 janvier 2023

Vous avez votre éditeur de texte d’un côté, votre terminal de l’autre, vous arrivez à compiler et programmer votre Raspberry Pi Pico. Maintenant, vous aimeriez avoir un projet plus conséquent avec plusieurs fichiers, un moyen simple de naviguer d’une fonction à l’autre, bénéficier de l’autocomplétion et peut-être même d’un raccourci clavier pour compiler votre code.

Bref, vous souhaitez un environnement de développement intégré. Le script d’installation de la fondation Raspberry Pi installe VS Code, alors essayons avec celui-là !

 Installation

Nous n’allons pas grandement détailler l’installation de VS Code, prenez-le à partir de vos dépôts ou à partir de leur site ou même Codium (recommandé mais non testé).

Une fois installé, lancez-le, et utiliser le menu "Fichier" pour "ouvrir le dossier", celui de votre projet.

Ouvrez le gestionnaire d’extension et ajoutez les trois extensions recommandées par la Fondation RPi :

  • marus25.cortex-debug
  • ms-vscode.cmake-tools
  • ms-vscode.cpptools

 Compilation

La première difficulté est de compiler votre projet. VS Code est hautement configurable et contient un grand nombre de tâches pré-configurées. Cependant, nous n’avons pas trouvé de configuration par défaut qui s’adapte à notre projet.

Nous créons donc le fichier tasks.json dans le répertoire .vscode que VS Code aura probablement créé dans votre répertoire de travail. Sinon, créez-le. Nous créons deux tâches pour l’exemple, make et make Flash :

.vscode/tasks.json { "tasks": [ { "type": "shell", "command": "cd build; cmake ../; make", "label": "CMake in build/", "problemMatcher": [], "group": { "kind": "build", "isDefault": false } }, { "type": "shell", "command": "cd build; cmake ../; make Flash", "label": "CMake & Flash", "problemMatcher": [], "group": { "kind": "build", "isDefault": true } } ], "version": "2.0.0" }

En très bref :

  • command : la commande shell à lancer
  • label : le nom qui apparaît dans VS Code

Pour en profiter, utilisez le raccourci MAJ+F9 pour faire apparaître le menu des tâches, vous devriez trouver les vôtres rapidement. Rapidement, la tâche se trouve en premier de la liste, et un simple appui sur Entrée vous permet de compiler et Flasher votre Raspberry Pi Pico.

 Problèmes d’analyse et auto-complétion

L’auto-complétion, cette fonction qui permet de compléter un mot que vous avez commencé à écrire, s’enclenche avec CTRL+Espace lorsque vous écrivez votre code. Si vous essayez, vous remarquerez rapidement que les fonctions du SDK ne sont pas reconnues.

Pire, l’analyse du code vous remonte plein de problèmes qui n’en sont pas. Prenez par exemple cette capture d’écran.


Erreurs d’analyse dans VS Code Exemple d’erreurs remontées par VS Code lors de la programmation pour Raspberry Pi Pico

Si vous avez lu notre article sur la création d’un projet Raspberry Pi Pico, notamment notre mot sur les bibliothèques du SDK, vous savez que les fichiers include sont éparpillés dans le SDK. Pour indiquer à VS Code où trouver les fichiers include, nous utilisons ce long fichier c_cpp_properties.json

c_cpp_properties.json { "env": { "myDefaultIncludePath": [ "${workspaceFolder}", "${env:PICO_SDK_PATH}/src/./common/pico_binary_info/include", "${env:PICO_SDK_PATH}/src/./common/pico_base/include", "${env:PICO_SDK_PATH}/src/./common/pico_time/include", "${env:PICO_SDK_PATH}/src/./common/pico_util/include", "${env:PICO_SDK_PATH}/src/./common/pico_divider/include", "${env:PICO_SDK_PATH}/src/./common/boot_uf2/include", "${env:PICO_SDK_PATH}/src/./common/pico_usb_reset_interface/include", "${env:PICO_SDK_PATH}/src/./common/boot_picoboot/include", "${env:PICO_SDK_PATH}/src/./common/pico_bit_ops/include", "${env:PICO_SDK_PATH}/src/./common/pico_sync/include", "${env:PICO_SDK_PATH}/src/./boards/include", "${env:PICO_SDK_PATH}/src/./rp2040/hardware_structs/include", "${env:PICO_SDK_PATH}/src/./rp2040/hardware_regs/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_fix/rp2040_usb_device_enumeration/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_interp/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_stdio_semihosting/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_int64_ops/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_stdio/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_gpio/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_claim/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_irq/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_resets/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_xosc/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_multicore/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_adc/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_uart/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_lwip/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_printf/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_stdio_usb/include", "${env:PICO_SDK_PATH}/src/./rp2_common/cmsis/include", "${env:PICO_SDK_PATH}/src/./rp2_common/cmsis/stub/CMSIS/Device/RaspberryPi/RP2040/Include", "${env:PICO_SDK_PATH}/src/./rp2_common/cmsis/stub/CMSIS/Core/Include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_pio/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_base/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_i2c/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_rtc/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_bootrom/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_platform/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_mem_ops/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_divider/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_timer/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_unique_id/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_dma/include", "${env:PICO_SDK_PATH}/src/./rp2_common/boot_stage2/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_vreg/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_cyw43_arch/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_malloc/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_double/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_clocks/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_runtime/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_watchdog/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_pll/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_spi/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_float/include", "${env:PICO_SDK_PATH}/src/./rp2_common/pico_stdio_uart/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_sync/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_exception/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_pwm/include", "${env:PICO_SDK_PATH}/src/./rp2_common/hardware_flash/include", "${env:PICO_SDK_PATH}/src/common/pico_base/include", "${env:PICO_SDK_PATH}/build/generated/pico_base", "${env:PICO_SDK_PATH}/src/common/pico_base/include/pico", "${env:PICO_SDK_PATH}/src/common/pico_stdlib/include" ], "myCompilerPath": "/usr/bin/arm-none-eabi-gcc" }, "configurations": [ { "name": "Linux", "intelliSenseMode": "linux-gcc-arm", "includePath": [ "${myDefaultIncludePath}" ], "compilerPath": "/usr/bin/arm-none-eabi-gcc", "cStandard": "c11", "cppStandard": "c++17", "browse": { "path": [ "${workspaceFolder}" ], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" }, "configurationProvider": "ms-vscode.cmake-tools" } ], "version": 4 }

 Graphs

Le pluging Teleplot de VS Code est particulièrement adapté à afficher des graphiques ou afficher clairement des états renvoyés par la carte. Nous recommandons fortement la lecture de la courte documentation sur les trames à envoyer.


VS Code avec Teleplot

Le pluging offre aussi un terminal série rudimentaire, ce qui permet d’envoyer des commandes et de visualiser les résultats sans jongler entre les fenêtres !

 Git

Nous supposons que vous utilisez git pour vos projets et, si ce n’est pas le cas, nous vous le recommandons fortement. VS Code gère git, mais sans le fichier .gitignore qui va bien, tous vos fichiers de build apparaissent comme modifiés, comme dans l’image ci-dessous.


Trop de fichiers modifiés !

Nous conseillons donc la création d’un fichier .gitignore qui exclue le repertoire build de git, comme ceci :
.gitignore build/

Enregistrez et admirez votre vue "contrôle de code source" se simplifier grandement !

Voilà ! Avec ceci vous êtes confortablement installés avec VS Code pour programmer sur votre Raspberry Pi Pico !

Commentaires

Il n'y a pas de commentaires

Ajouter un commentaire

Pseudo :
Mail :

Texte :

Copyright "POIVRON" 2011-2021, tous droits réservés
Administration du site