Comment déboguer un Arduino Uno avec gdb sur un PC Linux?

10

Comment déboguer (code source en une seule étape) un Arduino Uno avec gdb sur un PC Linux? Veuillez noter que je n'aime pas utiliser AVR Studio dans wine ou VirtualBox.

Question 1: Connexion physique

Comment puis-je me connecter à la carte Uno? Ma conjecture est que puisque la carte Uno est peuplée d'un ATmega328, le code source en une seule étape devrait être disponible? Je suppose également que je peux utiliser un AVR JTAGICE mkII ou un AVR Dragon sur l'en-tête ICSP?

Question 2: serveur GDB

Ensuite, j'ai remarqué qu'il y a des projets comme AVaRICE qui semblent fournir une fonction jtag à gdb, mais il peut y avoir d'autres projets?

Question 3: Où est l'elfe?

Et si je le fais fonctionner, où l'IDE Arduino cache-t-il la sortie générée comme le fichier elf avec des symboles de débogage (il devrait y en avoir un)? Ou dois-je générer un Makefile classique qui utilise uniquement les bibliothèques Ardino?

J'ai essayé de trouver des informations sur ce que / comment utiliser, mais je n'ai trouvé que les indices qui m'ont dit ce que je pouvais faire. Quelqu'un peut-il me pousser dans la bonne direction?

Johan
la source

Réponses:

3

Vous pouvez trouver les artefacts du compilateur en maintenant la touche Maj enfoncée lorsque vous cliquez sur le bouton de compilation dans une ancienne version de l'EDI (lire <1.0). Dans les versions plus récentes (lire> = 1.0), il y a une option sous la boîte de dialogue des préférences pour afficher la sortie détaillée pendant la compilation (voir capture d'écran). Avec une sortie détaillée, le dossier où toutes les sorties du compilateur finissent est imprimé (à plusieurs reprises) dans la console. Cela devrait vous permettre de commencer au moins.

capture d'écran arduino afficher la sortie verbeuse pendant la compilation

En passant, il y a eu toutes sortes de bavardages à ce sujet sur la liste des développeurs Arduino plus tôt en juin 2012 et quelqu'un a posté une annonce à la liste des développeurs Arduino sur une manière améliorée / intégrée de débogage GDB pour Arduino, mais je n'ai pas enquêté beaucoup plus loin. Je suppose que le projet s'appelle VisualMicro (?). Il semble qu'il ait été construit en tant que plugin Visual Studio, il pourrait donc ne pas vous être utile dans un environnement Linux, et il est en version bêta en plus, mais je vous laisse décider.

vicatcu
la source
J'ai activé "Activer la sortie verbeuse lors de la compilation" et ils utilisent quelque chose comme /tmp/build3652385594823436592.tmp/ comme répertoire de construction, l'elfe a également été construit avec l'indicateur -g donc il devrait contenir les symboles de débogage. Cela signifie que j'ai trouvé les artefacts de build, maintenant j'ai juste besoin de faire fonctionner le jtag.
Johan
3

Le simulateur de processeur Simavr AVR fournit maintenant un bon serveur GDB pour le débogage AVR firmvare, y compris Arduino. Vous pouvez l'utiliser seul (vous devez écrire une petite application console pour votre configuration matérielle particulière) ou à partir de l' environnement GUI de Simutron , où vous pouvez définir votre configuration matérielle via une capture schématique.

Remarque: avec ces outils, vous n'avez pas de connexion physique car tout le matériel est simulé.

aéroglisseur
la source
2

Ceci est répondu dans un article de revue Linux référencé dans une question similaire: Jtag debugging AVR .

Fondamentalement, en utilisant avr-gdb et simulavr en tandem, vous pouvez exécuter votre logiciel sur un choix de microcontrôleurs AVR via le simulateur, tout en utilisant GDB pour parcourir et observer le code d'exécution.

J'espère que cela t'aides!

slurms
la source