STM32 sur VSCodium avec STM32CubeMX (sans platformio)

Cette article est une traduction de https://stm32world.com/wiki/STM32_development_and_debugging_using_VSCode.

Plutôt que d’utiliser platformio pour programmer des STM32 avec VS Codium / VS Code comme expliqué dans cet article, il est possible de le faire sans platformio ce qui permet de supporter tous les STM32.

Pour les extensions VSCodium, le plus simple est d’utiliser le magasin d’extensions officiel de VS Code, des tutoriels pour modifier le magasin d’extensions sont disponibles sur internet.

L’idée est de développer en utilisant STM32CubeMX, qui doit donc être déjà installer sur l’ordinateur.

Les paquets à installer

Quelques paquets sont nécessaires pour compiler et debugguer depuis VS Codium. Ils sont à installer depuis un terminal :

Les extensions VSCodium

Quelques extensions sont nécessaires dans VS Codium : l’extension C/C++ pour ajouter le « support » du langage, l’extension Makefile Tools pour la compilation et l’extension Cortex-Debug pour le debugger.

L’extension C/C++ à installer.

Il est possible que Intellisense (auto complétion) ne fonctionne pas. Dans mon cas, le Scan Workplace restait sur Initialising. Pour résoudre le problème, désinstaller l’extension C/C++ et installer une version plus ancienne, dans mon cas la 1.23.5 fonctionne.

L’extension Makefile Tools à installer.
L’extension Cortex-Debug à installer.

Création du projet CubeMX

Le projet est à cérer comme tous les autres projets : par le choix du MCU ou par le choix de la carte. Une fois le projet créé, se rendre dans la fenêtre Project Manager.

Une fois dans cette fenêtre, y saisir le nom du projet, son répertoire et surtout sélectionner Makefile comme Toolchain/IDE.

Une fois configuré, il est alors possible de générer le code.

Du côté de VS Codium

Ouvrir le dossier du projet CubeMX dans VS Codium. Une fois le projet ouvert, pour compiler il suffit de se rendre sur l’onglet de l’extension Makefile et de cliquer sur le symbole Build.

Pour charger le code sur la carte, modifier le fichier qui se trouve à l’emplacement :

.config/VSCodium/User/settings.json

Et y ajouter les lignes suivantes :

{
    "cortex-debug.gdbPath": "gdb-multiarch", 
    "makefile.extensionOutputFolder": "./.vscode"
}

Une fois les lignes ajoutées, se rendre sur l’onglet Run and Debug et cliquer sur Create launch.json.

Choisir de créer un launch.json pour Cortex Debug. Le compléter comme suit :

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cortex-debug",
            "request": "launch",
            "name": "Debug (OpenOCD)",
            "servertype": "openocd",
            "cwd": "${workspaceFolder}",
            "runToEntryPoint": "main",
            "executable": "./build/test_STM32F103.elf",
            "device": "STM32F103RB",
            "configFiles": [
                "interface/stlink-dap.cfg",
                "target/stm32f1x.cfg"
            ], 
            "showDevDebugOutput": "none",
        }
    ]
}

Penser à adapter au projet les variables suivantes :

  • executable : modifier le nom du fichier .elf pour qu’il corresponde au fichier .elf du projet,
  • device : modifier pour que la référence du microcontrôleur corresponde à celle du projet,
  • configFiles : ligne target/XXXX : modifier le stm32f1x pour qu’il corresponde au projet (stm32f4x par exemple)

Une fois le fichier réalisé, il est possible de lancer le debug :

Une fois le debug lancé, les boutons habituels permettant de l’utiliser sont disponibles :