Header Ads

A lire - avrdude: stk500v2_receiveMessage(): timeout

A lire... vous allez être surpris

Au cours du développement d'un petit logiciel Arduino Mega pour le contrôle d'Axe-Z pour notre OrdBot, je me suis soudainement retrouvé face  au message

avrdude: stk500v2_receiveMessage(): timeout

Il paraissait visiblement impossible de téléverser/télécharger un nouveau programme sur mon Arduino Mega :-/

Je prends un autre Méga 2560 et au bout de quelques minutes j'ai exactement le même symptôme. M'enfin!!!!

Au bout de quelques reboot (j'utilise Arduino 1.0.1 sur Linux) j'arrive à télécharger le programme "Blink". Ouf!
Je me remets au travail sur mon programme... et cela recommence une fois de plus!!!! avrdude: stk500v2_receiveMessage(): timeout

Il y a donc une relation évidente entre mon programme en cours de développement,  téléversement/téléchargement défaillant et le besoin de rebooter mon PC (pourtant sous Linux) pour accéder de nouveau au port série.

Le coupable est un quadruple !!!! dans une chaine de caractère de mon programme Arduino (voir image).
Promis juré, ce n'est pas un gag... en tout cas sous Linux.


Une fois les "!!!!" retirés, tout est revenu dans l'ordre. Sur ce coup là, je me suis arraché les cheveux!

Pourquoi?
Pure supposition... mais le fait qu'AVRDude restait planté sur mon système (utilise 90% du processeur pour ne rien faire) m'a mis la puce à l'oreille.
Puisqu'AvrDude restait en fonctionnement, normal de ne plus avoir accès à mon Arduino, le port série était en cours d'utilisation... d'où le reboot nécessaire.

Ensuite, le signe ! sont souvent utilisé par les interpreteurs/shells pour exécuter une commande shell et récupérer le résultat.
Ma supposition, c'est que mes multiples !!!! ont soit causé:
  • l'exécution de ce cas particulier par AvrDude... qui n'a jamais reçu de réponse... 
  • Causé une séquence de caractère réservée (du genre "exception de traitement")  durant le téléchargement
Au final, AvrDude était finalement planté en attente d'un résultat sheel ou d'une réponse du bootloader Arduino fortement perturbé par une séquence générée par mes "!!!!".

En espérant que cela puisse servir.

Ressources