lundi 6 décembre 2021

Microcontroller debugging ou comment déboguer son micro-contrôleur ?

Voilà j'élargie un peu le sujet du débogage, j'étais braqué sur arduino et les interfaces de débogue ISP, SPI, JTAG, JTAGICE, debugWIRE mais en fait, je vais tenter de répondre à une question plus large ; comment déboguer mon microcontrôleur ? Quelque soit son type, sachant que la solution dépendra certainement du type (Harvard vs Princeton). Et je verrais bien ce que je peux utiliser avec Arduino ou autre.

Microcontrolleur ATmega 2560
Comment déboguer mon microcontrôleur Atmel AVR

Le débogue de microcontrôleurs est toujours une affaire de protocole entre l'IDE qui gère la chaîne de développement avec ses outils de compilation, de linkage et de débogue. Pour avoir une idée rapide de ce que peut-être un protocole de débogage, je vous propose de visiter rapidement la page : The debugWire protocol

Je dirais peut-être trop rapidement que debugWire est lié à l'AVR (structure du cœur du microcontrôleur). Ce que je ne souhaite pas c'est un protocole Liaison Série LS qui prenne la place du débogage à l'aide de TRACEs qui elles aussi passe par la LS car dans ce cas il est stipulé que vous devez retirer de votre code ce qui dialogue sur la LS.

Déboguer son microcontrôleur consiste à pouvoir le stopper dans un état stable où peut avoir accès aux mémoires et aux registres. On dit que l'on met un point d'arrêt à l'aide de l'IDE en face d'une ligne de code source et l'on peut alors visualiser le contenu des variables et des registres internes du microcontrôleur pour corriger une éventuelle erreur d'exécution.

BMP - General debugging methods
Article distrayant sur les différentes méthodes pour déboguer son microcontrôleur. On y apprend quelques abréviations fortes utiles :
ICE : In Circuit Emulator : il s'agit de remplacer la puce par une puce permettant d'accéder aux opérations internes du processeur (c'est cher).
ICD : In Circuit Debug : le chip propose en interne une partie et une liaison vers l'IDE permettant de le déboguer.

Le site vous présente d'autres techniques amusantes comme déboguer avec la Liaison Série, des Leds un LCD, pourquoi pas. Personnellement, sans système de déboguing je crois beaucoup dans les systèmes de TRACE.

Concernant les IDEs qui dialoguent "protocole de débogage" avec des microcontrôleurs, ce n'est pas difficile à priori, il n'y en a qu'un pour les "petits microcontrôleurs" et c'est microship :

MPLAB X IDE

Il vous faudra installer "en dessous" une chaîne de compilation qui correspond au microcontrôleur que vous souhaitez déboguer :

Toolchains for AVR (MCUs)

Attention cette page pourrait vous faire penser que vous ne pourrez déboguer que sur ARM-32bits mais il n'en est rien, il faut aller tout en bas de la page pour découvrir des Toolchain (cross-platform) pour d'autres plateformes : Windows, Linux mais également Darwin ou Mac OS X.

Et tout en bas de la page de la documentation : microship - onlinedocs

A expérimenter. 

Ce monde du débogue de microcontrôleur n'est pas "si ouvert" que cela finalement, mettre un point d'arrêt en face d'un ligne de code source et pouvoir s'y arrêter pour visualiser le contenu des variables de la mémoire et des registres de votre microcontrôleur ce n'est pas encore pour M. Jourdain.

Autres lectures :

github - ElTangas/jtag2updi
Micrologiciel à télécharger sur un ATmega MCU AVR qui lui permet de s'interfacer avec avrdude en utilisant le protocole jtagice Mk2 via une interface série. Ce mircologiciel fournit un pont pour programmer la nouvelle famille de MCU attiny817, qui utilisent l'interface UPDI :avrdude -> Interface série matérielle -> MCU programmeur (par exemple Mega328P) -> Série SW sur PD6 -> MCU cible (par exemple tiny817)


mercredi 17 novembre 2021

Arduino débogueur JTag Atmel-ICE et VSCode

Comment déboguer mon firmware téléversé dans une carte Bluno Mega à base de microcontroller ATmega à l'aide d'une sonde Atml-ICE sonde pour les AVR/ARM (SAM) ? 

Atmel a, un temps, "détourné" Visual Studio pour en faire Visual Micro (ou Atmel Studio) ... Le problème est que cette solution est abandonnée au profit de Microship et lorsque vous installez Atmel-Studio maintenant, vous êtes détourné vers la version payante Microship-Studio...

ARDUINO IDE FOR VISUAL STUDIO

Malheureusement, Ici :

vMicro Debugger Support Listing

Curieux qu'aujourd’hui la sonde Atmel-ICE ait un Port AVR ? Il servirait uniquement à téléverser un script par le Port ICSP de ma Bluno Mega ...


Sonde Atmel-ICE Port SAM(ARM) ou AVR

Côté Débogueur, je trouve avec VSCode l'extension suivante :


Malheureusement du côté documentation, je trouve :

vscode-arduino - debuggerUsbMapping.json

Alors que moi, je chercherais plutôt du côté de JTag !

Ce que je ne comprends pas encore, c'est que le micro-contrôleur ATMega possède bien les sorties (10 pins) de connexion au format JTag alors de l'autre côté, côté Débogueur il n'y a que Microship-Studio ...  

La seule solution que je vois actuellement est de passer par Microchip-Studio se serait le seul que je connaisse à pouvoir discuter JTAG (qui est un protocole de haut niveau) avec le module Arduino.

Le tuto, suivant dit que pour l'instant c'est impossible (pas de solution pour l'instant) ! 

ARDUINO sous VSCode : Utilisation du debugger de l'extension Arduino

ARDUINO sous VSCode : Utilisation du debugger de l'extension Arduino

Après avoir patiemment suivi ce tuto fort intéressant et fort bien fait, je n'ai pas OpenOCD d'installé avec ma Configuration de PlateformIO pour ATmega ... Ce tuto utilise des cartes Arduino à base de SAMD21.

Au cas ou vous en auriez envie ou besoin pour configurer votre plateforme, voici un zoom sur le fichier de configuration launch.json dont le débogueur à besoin pour trouver les outils correspondants au débogage :

VSCode - Debogue - launch.json

Le premier chemin est celui vers le Débogueur /tools/arm-none ... que je n'ai pas sur mon installation.

Vous avez trouvé la solution pour déboguer votre ATmega2560 avec VSCode et Atmel-ICE, partageons-la, envoyez-moi votre commentaire.

mercredi 10 mars 2021

Arduino problème avec le driver du port série de Windows 7

Quel le problème avec le driver série Arduino pour Windows ? Le Driver s'installe avec l'ensemble du logiciel Arduino mais cela ne fonctionne pas bien longtemps.

Vous êtes sans cesse en train de pluguer, déplugguer votre module Arduino et un moment donnée :

Problème port série Windows avec le module Arduino
Problème port série Windows avec le module Arduino

En plus ce n'est pas tout à fait le bon message, depuis il a évolué et j'ai le message suivant :


Alors la solution c'est de réinstaller le driver en désinstallant puis réinstallant tout le logiciel Arduino "correctement". Prendre soin de déplugguer pour que le port série soit "libre" pour désintaller proprement. Un fois résintallé le logiciel complet Arduino, le port est vierge et lors du prochain plugging de votre module Arduino. Windows répondra par un  :

Arduino le pilote de périphérique a été installé
Arduino le pilote de périphérique a été installé

Et vous pourrez continuer à jouer avec votre module Arduino mais ce n'est pas simple avec l'utilisation du port série et des logiciels de développement, il arrivera que le driver "plante" à nouveau et votre module ne sera plus reconnu par Windows !

Ceux qui galèrent :

Un autre Ici :


Ils galèrent mais ils arrivent toujours à faire quelque chose pour le Port_COM refonctionne...

La seule solution ?

Résinstaller le logiciel complet Arduino !!! Ça fonctionne mais c'est curieux non ? 

Attention : ne pas oublier de faire un petit redémarrage de Windows avant de replugguer votre module Arduino sinon il risque de ne pas prendre le bon driver..

Comment le logiciel peut-il se mettre à planter alors que ce n'est "que du soft". Et bien la réponse est dans la question.

Ce n'est pas tout à fait "que du soft", l'UART serial COM est sollicitée et l'on sait que sous Windows avant Windows 10 ce module est très perfectible. Il manque notamment une couche de virtualisation qui vous permettrait de connecté à une machine de cloud mais cela non plus ne fonctionne pas.

Mais j'ai peut-être une autre solution il vous faut savoir que le driver arduino se trouve dans :

\\Program Files (x86)\Arduino\drivers\arduino.inf

Ce qui peut vous permettre de le réinstaller en faisant :

Démarrer -> Périphériques et imprimantes :

Je vois mon module Arduino dans mon système windows

Où dans :

Menu Démarrer -> Panneau configuration -> Système -> Gestionnaire de périphérique 

Vous pouvez alors faire bouton droit mettre à jour et aller chercher le .inf ci-dessus cité. Mais en général si vous voyez votre module dans Windows, c'est que tout va bien ... Grrrrr !

Sinon vous pensez que tous ces caractères chinois ont quelques chose à voir avec ces plantages ...

Mauvaise gestion du port série ce communication avec le module Arduino
Mauvaise gestion du port série ce communication avec le module Arduino

Vous avez le site officiel arduino qui raconte en gros la même chose ...


Le problème c'est que quand votre module n'est pas reconnu "unknown device" vous ne pouvez pas le mettre à jour. Le message que j'ai eu en essayant de mettre à jour c'est :

"il n'existe pas de driver compatible avec windows 64 bits"

Autre dépannage

Si un driver "Unknown device" devait s'installer à la plage de "Arduino ..." n'hésitez pas à désinstaller le driver correspondant et à redémarrer votre machine lorsque vous enficherez votre module dans le port USB, windows devrait reprendre le bon driver ...

Franchement, c'est de très mauvaise augure. Comment peut-on imaginer de réaliser un développement de bonne qualité dans ces conditions... 

Les Athéniens s'atteignirent...

Mise à jour en novembre 2021

Je ne peux pas vous expliquer pourquoi mais depuis, je n'ai plus aucun problème de driver ! Le driver Arduino Bluno Mega est resté stable.

lundi 8 mars 2021

Arduino primordial links

Des liens importants vers les sites arduino ... des liens officiels mais aussi quelques pépites.

Arduino Lien primordiaux
Arduino Lien primordiaux

Sites de référence

https://www.arduino.cc
Site Officiel Open source Arduino

https://www.locoduino.org/
Qui signifie littéralement : "dingue de arduino"

Très bon site Arduino - très complet

Librairies de référence

Information sur les librairies de référence :

https://www.arduino.cc/en/reference/libraries

https://platformio.org/lib/show/5597/ArduinoTrace

Librairie de Traces

Je cherche une librairie Trace :

https://platformio.org/lib/search?query=trace

Arduino Trace dans Github bblanchon :

https://github.com/bblanchon/ArduinoTrace

Mémoire des cartes mères Arduino




Arduino Simulateurs

Si vous développez en C++ pour Arduino et que votre matériel est un peu complexe notamment si ce matériel n'est pas toujours disponible car trop encombrant ou difficile à mettre en oeuvre, vous allez vouloir vous tourner vers un simulateurs qui va vous permettre de "faire tourner" votre code sans avoir tout le bazar autour.

Alors est-ce possible que trouve t-on sur le marché ? Ma recherche Internet débute donc avec : "arduino simulateur" elle me conduit naturellement vers le site suivant :

https://leresteux.net/simulateur-arduino/

Qui nous explique pas à pas le simulateur 123D Circuits mais j'ai l'impression qu'il n'existe plus, même plus chez Autodesk library.io. Chez eux le simulateur de tout cela c'est TINKERCAD.

Vous devez vous enregistrer pour créer un compte d'utilisateur :

Autodesk Tinkercad

Dans le simulateur, si l'on écrit le bon code : 

/*
  Clignotement
  Allume la LED pendant 1 seconde,
  puis l'éteint pendant 1 seconde.

*/

// Numéro de la broche à laquelle est
// connectée la LED

int led = 13;

// le code dans cette fonction est exécuté une fois au début

void setup() {

  // indique que la broche de la LED une sortie :
  // on va modifier sa tension
  pinMode(led, OUTPUT);

}

// le code dans cette fonction est exécuté en boucle

void loop() {

  digitalWrite(led, HIGH);   // allumer la LED (tension 5V sur la broche)
  delay(1000);               // attendre 1000ms = 1s
  digitalWrite(led, LOW);    // éteindre la LED (tension 0V sur la broche)
  delay(1000);               // attendre à nouveau 1seconde

}

Vous verrez clignoter la LED.

Pour poursuivre, je vous propose l'article suivant : 

windowsreport - Les 5 meilleurs simulateurs Arduino pour PC

1 - Autodesk Eagle
Free download, toujours cette même accroche cela signifie que l'on vous donne le droit de télécharger mais après, vous ne pourrez pas faire grand chose que d'acheter une licence.

2 - Proteus
Idem, free donwload mais on vous explique ce qui est limité sur la version "free" là encore on n'ira pas loin vous ne pouvez par exemple pas sauvegarder votre travail.

3 - Virtronics 
Je trouve pas pro ... pas cher non plus 19.99 $ ???

4 - PSpice
Pour le pris il vous faudra contacter le service client, moi je trouve toujours cela gênant on a l'impression d'être un marchant de tapis le commercial en face essaye de vous vendre 100 000 exemplaire alors que vous n'avez besoin que d'un seul !

5 - Fritzing
Initiative Open source deux version à 8 € et une autre à 25 € ... ??? 
Un petit tuto rapide ça à l'air ludique graphique fun sans plus accessible que les autres solutions.

Conclusion sur simulateur Arduino

Oui, il faut investir en temps, en argent, je pense même qu'il faut démarrer un projet Arduino par la simulation plutôt qu'un kit hardware.

Avec mon kit hardware, j'ai actuellement de sérieux problème avec le port COM, je dois vous avouer que je suis avec une machine Windows 7 mais la gestion du port COM avec Arduino est un peu tuchy...

D'où l'utilité d'un simulateur.

Simulateur Arduino en 2022

Je retourne chez TinkerCad, et je constate l'évolution. Il n'est plus question d'écrire du code :

Dans votre compte : Cricuits -> Try Circuits.

Je me retrouve avec une plaque arduino :

Compte chez Autodesk Tinkercad

Je choisi de simuler un circuit je choisie Arduino -> Editer

Tinkercad édition du circuit Arduino

Je clique sur code :

Tinkercad édition du code du circuit Arduino
Tinkercad édition du code du circuit Arduino

C'est énorme, je vois du code sous forme de blocs dans un graphique on parlait de no-code hier c'est bien du no-code.

Il y a même un bouton  "Démarrer la simulation" :

Tinkercad édition démarrage de la simulation sur Arduino
Tinkercad édition démarrage de la simulation sur Arduino

1 - On peut voir l'alimenation par le port USB se brancher à la carte Arduino

2 - La fameuse Led clignote

Dans la liste des kits de démarrage, je vois tout un tas de plaque Arduino.

Tinkercad éléments de simulation Arduino
Tinkercad éléments de simulation Arduino

On trouve tout un tas d'éléments pour réaliser des simulateurs Arduino de quoi faire de petite réalisations électronique avec microcontrôleur.

Ce que je trouve étonnant, c'est la présence parmi les microcontrôleurs d'un ATTiny comme choix de composants, on peut le poser sur une platine d'essai. Mais la programmation de l'ATTiny est pour le moins ardue.

Have fun!


mercredi 3 mars 2021

Connaissez-vous Arduino IDE for Visual Studio (Visual Micro) ?

Je suis à la recherche du meilleur IDE pour Arduino et je trouve : Arduino IDE for Visual Studio (Visual Micro). Un outil d'édition de construction de déploiement et de débogage pour Arduino entièrement compatible cross plateforme et gestionnaire de Librairie. 

Plusieurs moniteurs série. Projets de code partagé, bibliothèques personnalisées, tests unitaires, GIT, CLI. Matériel GDB et débogage WiFi.

Arduino IDE for Visual Studio (Visual Micro)

Franchement, moi j'ai installé l'extension directement depuis Visual Studio Community 2019 :

Gestion des extensions dans Visual Studio Community 2019
Gestion des extensions dans Visual Studio Community 2019

Et bien c'est la même chose ! 

Donc autant installer l'extension depuis Visual Studio dans le menu Extensions -> Gérer les extensions.

Une fois l'extension installée, il s'agit de créer un bout de code et de téléverser dans la carte Arduino. 

Pour cela, j'ai trouvé l'option pour créer directement le Blink project un classique d'Arduino qui consiste à faire clignoter la LED de la Carte :

Nenu Fichier -> Nouveau projet, dans la liste des Templates de Projet :

Visual Studio s'ouvre avec le code et vous accédez au menu vMicro (comme Visual Micro) avec la gestion des cartes, suivant le kit Arduino que vous avez commandé :

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

Vous vous retrouvez devant l'environnement nécessaire et suffisant pour développer en C++ pour Arduino.

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

A vous de jouer, personnellement, je vais installer Visual Studio Code avec les même extension.

Have fun!


lundi 1 mars 2021

Développer en C++ avec Arduino Software (IDE)

Deux ou trois choses à savoir pour bien démarrer avec l'IDE d'Arduino pour Arduino. Pour savoir par exemple lorsque vous instanciez un projet où se trouvent les fichiers comment sont-ils organisés.

Arduino préférences

Le meilleur moyen de savoir comment Arduino IDE fonctionne c'est d'aller dans ses préférences :

Arduino IDE - Préférences

Vous obtenez ainsi l'emplacement du carnet de croquis et plus de préférences encore dans le fichier suivant : Arduino 15\preference.txt

Arduino IDE - Arborescence des répertoires

On voit également un fichier de Log :


\\AppData\Local\arduino15\logs\application.log

A priori l'application IDE Arduino vient écrire dans ce fichier chaque fois qu'elle s'exécute.

D'autres fichiers json library_index.json ce sont les librairies.

Un autre répertoire important, c'est le répertoire d'installation de Arduino, on y trouve tous les exemples et toutes les librairies pour travailler et l'exécutable :

\\Program Files (x86)\Arduino

Vous souhaitez savoir si votre board est correctement connectée ,c'est la commande : Récupérer les informations de la carte :

Arduino IDE - Outils

Un autre article très important c'est le Moniteur série qui vous permet de visualiser des traces émises par votre programme.

Dans tous les environnements Arduino vous retrouvez les exemples :

Arduino IDE - Exemples

Voilà les commandes de base les reste est dans la doc ;-)

Développer en C++ avec Arduino Create Agent

Comment démarrer un développement en langage C++ avec Arduino ? Le plus simple c'est de se retrouver sur la site Arduino et de commencer par le Tutorials dans :

arduino.cc

Arduino Tutoriels

Dans DOCUMENTATION -> TUTORIALS, je clique sur GETTING STARTED



Pour mémoire, voilà l'ensemble des Tutos Arduino, j'accède à la première série de Tutos en cliquant sur Getting Started.

Getting Started with Arduino products

Il vous faut vous enregistrer, créez votre compte d'utilisation chez arduino mais à ce prix, vous pouvez utiliser l'éditeur Web Editor... Code online :


Vous reconnaissez les deux fonctions de base de la plateforme Ardunio setup() et loop().

Pour pouvoir téléverser dans une carte arduino, il faut avoir installer sur votre post : 


Installer sur votre post de quoi communiquer avec le Web Editor

Par la suite dans le Web Editor pour Arduino, vous devrez choisir la carte que vous avez connectée par le port USB à votre ordinateur.


Au passage, un driver demande à s'installer sur votre machine ...


Puis un deuxième liée toujours au contrôle de liaison USB entre le Web Editor et votre carte Arduino ...



Et puis un troisième soft désire s'installer...


Et enfin cela y est, votre carte est connecté au Web Editor Arduino


Vous vous retrouvez avec les boutons classiques Verify et Upload pour téléverser votre code HEXA dans votre carte Arduino... Vous pouvez alors récupérer les exemples au moment d'une modification dans l'éditeur Web Editor.

CQFD !

jeudi 25 février 2021

Développer en C++ pour Arduino

Comment je développe et j'implémente mon code compilé sur une carte Arduino ? La programmation en C/C++ est la manière la plus courante de programmer la carte Arduino.

Le logiciel se divise alors en 2 fonctions le setpup() et une fonction loop() qui est la boucle naturelle de l'application.

Programmation en python, il ne s'agit pasz d'une compilation croisée mais d'une application résidente de la carte arduino qui est en communication avec les instructions python.

http://claude.gueganno.free.fr/arch/polyArduino.pdf

Voilà un bon début et un ensemble de généralités pour bien fixer les idées.

Visual Studio Code permet avec trois extension de programmer en C++ pour Arduino...

Pour moi ça commence Ici :

Devenez-pro-en-electronique-PROGRAMMER SON ARDUINO AVEC VISUAL STUDIO

Arduino gestion des ports COM

Je complique ma configuration de développement en essayant d'installer la chaîne de développement Arduino dans une machine du Cloud.

En jouant avec Arduino vous allez devoir maîtriser les affectation des ports COM aussi je vous conseil la page suivante :

http://www.e-novatic.fr/rediriger-les-ports-com-sous-tse/

Redirection des ports COM de l'hôte vers le cloud
Redirection des ports COM de l'hôte vers le cloud

Pour tout savoir sur la commande :

>change port /query

Pour afficher les ports COM et leur caractéristique.

Sur les ports COM de Windows :

Eltima - 2 méthodes pour régler tous les problèmes de ports COM sur Windows 10

Voilà des gens qui maîtrise les ports COM.

Sur l'autorisation des port COM en Remote Desktop :

Modèle d'administration (ordinateurs) - Ne pas autoriser la redirection des ports COM

Il semble bien que ces possibilités de bloquer la redirection des port com date un peu dans le monde Microsoft et que les clefs de registre ne soient plus utilisées :

regedit - Ne pas autoriser la redirection de port COM

Remote Desktop Services - Some USB devices aren't available

On apprend à mettre la ligne :

usbdevicestoredirect:s: RDP

dans le fichier .rdp 

Et à modifier la base de registres mais attention ...

Attention : Sous Windows 7, il est bien sûr impossible de rediriger un port COM vers une machine du cloud le degrés de virtualisation du port COM n'étant pas suffisant.

Visual Studio Code pour Arduino

Installation de l'extension PlatformIO IDE pour VSCode :


Pour pouvoir créer mon premier projet, choix de la carte Arduino : 


Carte Arduino Mega 2560.

PowerShell vs PlaformIO CLI

Il faut faire attention à exécuter les commandes dans le bon environnement. D'ailleurs je travaille avec une machine sous Windows 7 un peu ancien pour PowerShell, j'ai tenté d'installer l'extension proposée mais impossible "une vraie galère" : 

Error installing PowerShell extension on Visual Studio Code

Allez je vous mets le message d'error :

01/03/2021 17:25:51 [NORMAL] - Visual Studio Code v1.53.2 64-bit
01/03/2021 17:25:51 [NORMAL] - PowerShell Extension v2021.2.2
01/03/2021 17:25:51 [NORMAL] - Operating System: Windows 64-bit
01/03/2021 17:25:51 [NORMAL] - Language server starting --
01/03/2021 17:25:51 [NORMAL] -     PowerShell executable: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
01/03/2021 17:25:51 [NORMAL] -     PowerShell args: -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @() 
01/03/2021 17:25:51 [NORMAL] -     PowerShell Editor Services args: Import-Module 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules\PowerShellEditorServices\PowerShellEditorServices.psd1'; Start-EditorServices -HostName 'Visual Studio Code Host' -HostProfileId 'Microsoft.VSCode' -HostVersion '2021.2.2' -AdditionalModules @('PowerShellEditorServices.VSCode') -BundledModulesPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\modules' -EnableConsoleRepl -StartupBanner '=====> PowerShell Integrated Console v2021.2.2 <=====
' -LogLevel 'Normal' -LogPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\logs\1614615951-32066405-00df-48dd-bd18-8b2f8655bf801614615914391\EditorServices.log' -SessionDetailsPath 'd:\Users\Braby\.vscode\extensions\ms-vscode.powershell-2021.2.2\sessions\PSES-VSCode-4792-598641' -FeatureFlags @() 
01/03/2021 17:25:51 [NORMAL] - powershell.exe started.
01/03/2021 17:25:51 [NORMAL] - Waiting for session file
01/03/2021 17:29:51 [NORMAL] - Timed out waiting for session file to appear.
01/03/2021 17:29:51 [NORMAL] - Language server startup failed.
01/03/2021 17:29:51 [ERROR] - The language service could not be started: 
01/03/2021 17:29:51 [ERROR] - Error: Timed out waiting for session file to appear.

Ce n'est pas ce qu'il faut faire !

Dès que vous ouvrez Visual Studio Code sur un projet Arduino il faut ouvrir un Terminal PlatformIO CLI en cliquant sur le tout petit bouton en bas dans le Barre Arduino :

Visual Studio Code pour Arduino - Terminal PlatformIO CLI
Visual Studio Code pour Arduino - Terminal PlatformIO CLI

Et vous obtenez le bon environnement pour exécuter toutes les commandes PlatformIO :

Visual Studio Code pour Arduino - Terminal PlatformIO CLI
Visual Studio Code pour Arduino - Terminal PlatformIO CLI

Voilà mon environnement de développement avec VSCode pour Arduino fonctionne est maintenant correctement configurer.

Architecture des chaînes de caractères

C'est une drôle de surprise, vous allez tomber sur :

const __FlashStringHelper *format

Il y en a qui pour gagner de la place vont vouloir stocker des variables dans la mémoire programme :

Architecture Harvard vs Von-Neuman

Du coup les chaînes sont illisibles, il faut des manipulation pour s'y retrouver.

Il vous faudra consulter la page suivante pour découvrir quels types de mémoires sont utilisés sur les boards arduino :


Arduino faire des Log et des Traces

Moi j'ai attaqué par une fonction que j'aime bien écrire :

void log_print(char const *aFormat, ...)
{
    char buffer[256];
    va_list args;

    va_start(args, aFormat);
    vsprintf(buffer, aFormat, args);
    va_end(args);

    Serial.print(buffer);
};

Cela ne fonctionne pas le format des doubles et des floats ne fonctionne pas avec les fonctions de la lib standard du C++.

J'ai trouvé la fonction
\\.platformio\packages\framework-arduino-avr\cores\arduino\Print.cpp
size_t Print::printFloat(double number, uint8_t digits)

qui permet d'afficher un Float par le port série ...

Comment comparer __FlashStringHelper* avec char* on Arduino ?


Pour finalement trouver ce que je cherche à faire :