Lorsque vous avez un certain nombre de cartes Arduino à flasher avec le même programme, il peut être intéressant de flasher le fichier compilé HEX directement. Cela a deux intérêts. Vous faire gagner du temps sur le téléversement et cela permet à de tierce personnes de téléverser un programme sans utiliser l’IDE Arduino.
Vous ne devriez pas en avoir besoin tous les jours mais je vais vous montrer la méthode pour générer le fichier HEX et le téléverser dans un microcontrôleur Arduino. Cette méthode peut être adaptée pour d’autre microcontrôleur comme ESP8266 et ESP32 avec d’autres outils.
Générer le fichier HEX à l’aide de l’IDE Arduino
Dans le logiciel Arduino, aller dans le menu Fichier puis Préférences.
Cocher les cases « résultats détaillés pendant » pour la compilation et le téléversement (Mode verbose)
Sélectionnez le port et le type de carte sur lequel vous souhaitez téléverser le programme.
Lorsque vous appuyez sur Compiler ou Téléverser, l’IDE Arduino crée un fichier build dans le dossier AppData\Local\Temp\ dans lequel se trouve le fichier HEX. Vous pouvez retrouver le nom du fichier dans la console de l’IDE lors de la compilation ou du téléversement.
Après la compilation:
Après un téléversement:
Vous pouvez copier le fichier HEX généré autre part sur votre ordinateur.
Téléverser le fichier HEX à l’aide de l’invite de commande Windows
Après avoir lancer le téléversement sur l’IDE Arduino, vous obtenez la commande de téléversement.
Vous pouvez copier cette ligne dans l’invite de commande pour téléverser le programme dans le microcontrôleur. N’oubliez pas de modifier avec le nouveau chemin du fichier HEX et de rajouter des guillemets autour des chemins contenant des espaces.
Appuyez ensuite sur la touche « Entrée » pour téléverser le programme. (Astuce: une fois la commande connue, vous pouvez créer un fichier bash pour automatiser le process).
N.B.: Si vous souhaitez téléverser les fichiers HEX à partir d’un autre ordinateur (notamment si l’IDE Arduino n’est pas installé), n’oubliez pas d’installer les drivers nécessaires à la reconnaissance des microcontrôleurs.
Téléverser le fichier HEX à l’aide de XLoader
Téléchargez le logiciel XLoader.
Lancer le fichier exécutable XLoader.exe
Sélectionnez le port du microcontrôleur que vous pouvez retrouver dans le gestionnaire de périphérique.
Sélectionner le bon baudrate. Dans notre cas, 115200.
Puis sélectionnez le fichier HEX à l’endroit où vous l’avez enregistré.
Vous pouvez ensuite appuyer sur « Upload », afin de téléverser le fichier.
Ceci n’est intéressant que si le fichier .hex ne change pas dans le temps et ne doit donc pas être recompilé avant le téléversement. Dans mon cas j’ai un sketch incluant les date et heure de la compilation et qui sert à (re)mettre à l’heure une carte RTC (rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));) et qui doit être suivi du sketch « normal » qui ne change pas la date ni l’heure mais les utilise (ce deuxième sketch doit uniquement être téléversé sans re-compilation). Je cherche en fait un moyen de compiler le premier sketch et de téléverser les deux sketches mais en-dehors de l’IDE Arduino (dont je ne désire pas forcer mes « utilisateurs » à l’installer ni à l’utiliser).
Je voudrais arriver à livrer:
1) les logiciels de compilation/téléversement à installer (au moyen d’un script)
2) les sources de mes deux sketches (.ino)
3) le script de compilation du premier sketch et de téléversement de chaque sketch, l’un après l’autre
4) un script global appelant les autres scripts (une version différente pourrait exister pour une première installation complète et une plus légère pour une simple mise à l’heure)
et tout ça en version Windows, Mac OS X ou Linux.
Exactement, le Hex est le fichier compilé. S’il y a modification, il faut compiler à nouveau.
Je ne pense pas qu’il soit possible de téléverser un sketch après l’autre.
Par contre je pense qu’il est possible d’écrire un script (à convertir pour Windows, Linux et Mac) qui permette de compiler l’ensemble et de le téléverser dans l’Arduino sans logiciel.
Bonjour,
Dans mon c’est le contraire, car je cherchais le moyen de récupérer mon Hex après compilation, de façon à:
1-.pouvoir programmer des cartes les unes après les autres
2-.avoir un code exécutable parfaitement à l’abri des évolutions de version des bibliothèques (j’ai été traumatisé par la version 3.x de IRremote qui était incompatible avec la version 2.x, ce qui m’a obligé à reprendre en profondeur tous mes programmes…)
Ces informations vont donc m’être très utiles !!!