Go Down

Topic: Comment éviter la séquence d'initialsation bootloader sur carte Micro, Leonardo? (Read 5332 times) previous topic - next topic

Philduino

Est-il possible d'éviter la séquence d'initialisation bootloader d'une carte Micro, leonardo ou Esplora lorsque l'on connecte la carte sur un ordinateur et de lancer directement le sketch? C'est à dire qu'un ordinateur sur lequel la carte n'a jamais été connecté ne demande que les drivers USB pour le clavier et non toute la procédure d'installation des drivers pour la carte. J'ai vu que l'on pouvait supprimer le bootloader et récupérer et peu de mémoire en programmant avec un programmateur extérieur pour mettre que le sketch sur la carte mais j'aurais souhaiter le faire en Hard, c'est à dire peut-être avec la broche Reset. Je n'ai rien trouvé de concluant. Merci pour votre aide sur ce topic.

barbudor

Bonjour

Pour se passer du bootloader, il faut effectivement programmer la carte par un programmateur extérieur type USBASP ou USBtinyISP.
Dans ce cas, la programmation ne se fait plus par le menu "Upload" mais par le menu "Upload using programmer" après avoir correctement configuré le menu Tools -> Programmer (et le menu Tools -> Board bien sûr mais cela est vrai dans tous les cas).

Dans ce cas, plus de bootloader, le sketch démarre tout de suite et effectivement tu récupères les quelques centaines d'octets du bootloader dans la Flash.

USBasp : eBay. Il faut l'adaptateur 10->6 et le module USB. De préférence prendre 2 modules USB afin de pouvoir mettre à jour le firmware de l'un avec l'autre. La page du projet USBasp c'est ici.

USBtinyISP : La page du projet c'ests ici.

Philduino

Bonsoir,
Merci pour la réponse. Désolé d'avoir tardé pour donner des nouvelles mais je n'est toujours pas reçu le programmateur que j'ai commandé. Donc j'ai essayé de faire un programmateur avec une carte UNO en utilisant le sketch ArduinoISP. J'ai donc réussi à programmer la carte Leonardo sans le bootloader, le programme fonctionne et donc je ne peux plus programmer la carte avec l'IDE. J'ai réussi à remettre le bootloader et reprogrammer la carte Leonardo avec l'IDE. Donc tout fonctionne sauf que lorsque je programme la carte Leonardo en supprimant le bootloader, la carte est toujours reconnu  comme une carte Arduino Leonardo et comme un clavier PIH, avec impossibilité de programmer la carte Arduino avec l'IDE. Est-il possible de supprimer la détection de la carte Arduino et de garder uniquement la détection d'un clavier PIH? D'avance merci.

barbudor

le code par défaut doit laisser actif le périphérie série pour la console (Serial) en plus du HID.

Va voir : arduino\cores\arduino\USBdesc.h :
Code: [Select]
#define CDC_ENABLED
#define HID_ENABLED


CDC c'est le port série USB.
Met le #define CDC_ENABLED en commentaire (//) et recompile.

Pour moi ca devrait supprimer le port série et il ne restera que le HID.

Je ne voit pas comment faire cela sans toucher ce fichier du core

Philduino

Merci pour la réponse. J'ai trouvé 2 fichiers portant le nom USBdesc.h et j'ai modifié les 2 en mettant #define CDC_ENABLED en commentaire. Résultat dans le gestionnaire de périphériques Windows la carte Arduino est reconnue dans  Ports com avec un point d'exclamation jaune par contre plus rien comme clavier PIH. C'est dommage, je vais essayer d'approfondir quand même dans cette direction. Merci encore.

skywodd

Bonjour,

Si tu veut utiliser ta carte de manière "avancée" en choisissant le type de périphérique usb directement dans l'ide tu devrait regarder du côté de Teensyduino ;)

Attention quand même c'est une procédure un peu compliqué de faire passer une carte Leonardo/Micro en tant que carte Teensy  :
http://skyduino.wordpress.com/2012/07/07/hack-utiliser-teensyduino-avec-une-carte-arduino-leonardo-ou-compatible-leonardo/
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Philduino

Merci pour la réponse, c'est certainement la solution, mais je bloque pour l'instant au point
8 - Flashage du bootloader modifié :
La méthode simple ne fonctionne pas j'ai une erreur
Arduino: 1.0.5 (Windows 7), Board: "Arduino Leonardo w/ teensyduino"
java.io.IOException: Cannot run program "C:\ArduinoIDE\hardware/tools/avrdude": CreateProcess error=2, Le fichier spécifié est introuvable
Et avec l'autre méthode
la programmation sous dos
avrdude -p atmega32u4 -c Arduino as ISP -e -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U lock:w:0x3f:m -U efuse:w:0xc3:m
me donne une erreur
avrdude: ser_open(): can't open device "\\.\com1
j'ai donc ajouté  "-P com5" dans la ligne ci-dessus avant l'expression "-e" et la j'ai maintenant une erreur
avrdude: stk500_recv(): programmer is not responding
Donc je confirme la solution n'est pas simple. Il me reste plus qu'à revoir toute la procédure. Et merci pour cette méthode.

skywodd


java.io.IOException: Cannot run program "C:\ArduinoIDE\hardware/tools/avrdude": CreateProcess error=2, Le fichier spécifié est introuvable

Pourquoi il va chercher dans : C:\ArduinoIDE\hardware\tools\avrdude ?
Il devrait aller chercher dans : C:\ArduinoIDE\hardware\tools\avr\bin\avrdude normalement.


avrdude -p atmega32u4 -c Arduino as ISP -e -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U lock:w:0x3f:m -U efuse:w:0xc3:m
me donne une erreur
avrdude: ser_open(): can't open device "\\.\com1

Le -P COM5 est obligatoire, et le "Arduino as ISP" c'est pas un nom de programmateur valide !
"Arduino as ISP" -> "-c stk500"

Tu utilises quoi comme programmateur d'AVR ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Philduino

Bonsoir

Pourquoi il va chercher dans : C:\ArduinoIDE\hardware\tools\avrdude ?
Il devrait aller chercher dans : C:\ArduinoIDE\hardware\tools\avr\bin\avrdude normalement.
J'ai copié le fichier avrdude.exe à l'emplacement que l'IDE demande et maintenant j'ai donc réussi à programmer le bootloader Arduino leonardo w/ teensyduino
Par contre pas possible de lire les fusibles avec mon programmateur comme conseillé à l'étape 9. Le programmateur c'est une carte Arduino Uno avec le sketch ArduinoISP et un condensateur 10µF entre le reset et la masse. J'ai aussi remplacé  "Arduino as ISP" -> "-c stk500" et maintenant j'ai un problème de timeout du style
avrude: stk500v2_ReceiveMessage():timeout
getsync(): timeout communicating with programmer
Merci pour toutes les infos A+

skywodd

Télécharge un zip propre de l'ide en version 1.0.5 (pas 1.5 -> 1.0.5) et reprend la copie de la toolchain AVR :
http://arduino.cc/en/Main/Software#toc2

Le fait que l'ide n'aille pas chercher le compilateur au bon endroit n'est pas normal en soit.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Philduino

Merci à barbudor et à skywodd pour toutes les réponses, je suis arrivé à modifier le bootloader pour que la carte ne soit reconnu uniquement comme un clavier en suivant tous les conseils. Merci.

skywodd


Merci à barbudor et à skywodd pour toutes les réponses, je suis arrivé à modifier le bootloader pour que la carte ne soit reconnu uniquement comme un clavier en suivant tous les conseils. Merci.

Bonne nouvelle :)

Sinon pure curiosité : le problème de chemin pour avrdude.exe c'est réglé de lui même après avoir refait la manip au propre ou il y avait une modif par rapport à mon "tutoriel" ?
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up