Pages: [1]   Go Down
Author Topic: [leonardo] bootloader interminable  (Read 784 times)
0 Members and 1 Guest are viewing this topic.
Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut les copains!

Bon, ceux qui ont une leonardo le confirmeront, le booloader dure 8 secondes, ce qui est bien trop long, comparé aux autres cartes. J'imagine que c'est le fait que l'USB soit onboard, mais 8 secondes, c'est bien trop long.

J'ai trouvé ça dans le bootloader caterina / leonardo :

Code:
/* Bootloader timeout timer */
#define TIMEOUT_PERIOD 8000

En effet, pendant ces 8000ms, il ne se passe rien à part la led qui clignote. c'est seulement au bout de ces 8 secondes que le "téléversement" peut commencer, ou le prog démarrer.

Quelqu'un a essayé de modifier ça? c'est risqué?
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour Super Cinci

De mon côté je n'ai pas essayé à raccourcir (sauf en donnant un coup de pouce pour le Reset) .
Pas certain qu'on puisse réduire beaucoup avec les cartes à mega32u4  pour l'activation du bootloader :
-arriver à faire le Reset ...
-fermer le port COM de l'appli (COM 7 en ce moment)
-ouvrir l'autre port COM, celui du bootloader (COM 8 en ce moment)

Si coches "compliation" et "téléversement dans   Fichier/Préférences   "Afficher les résultats détaillés pendant" tu verras le travail !
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Bon, ceux qui ont une leonardo le confirmeront, le booloader dure 8 secondes, ce qui est bien trop long, comparé aux autres cartes. J'imagine que c'est le fait que l'USB soit onboard, mais 8 secondes, c'est bien trop long.
Je confirme, c'est même relativement  smiley-zipper de voir la led "pulser" pendant tout ce temps à chaque upload, qui lui ne dure qu'une fraction de seconde (merci l'usb 2.0 natif).

Quelqu'un a essayé de modifier ça? c'est risqué?
Ouaip, je l'ai réduit à 4 seconde (ce qui est déja pas mal) quand j'ai recompilé le bootloader lors de ma manip pour le rendre compatible avec teensyduino.
Si tu as un programmateur d'AVR sous la main il n'y a pas trop de risque (à moins de faire une grosse boulette).
Fait un tour sur mon article qui traite du "hack teensyduino sur arduino leonardo", tu auras pas mal d'info sur la manip smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'avais pensé à "encadrer" le main du bootloader ainsi (avec quand même une optimisation du code) :

Code:
digitalWrite(2, HIGH);
if (!digitalRead(2)){

// ici le code du main d'origine...

}
// jmp(0x0000);  // démarrage du sketch

En gros, si la pin 2 est à 0 par liaison extérieure au 0V, pas de bootloader, on banane direct sur le sketch, sinon, bootloader...

Seulement, le truc est de savoir ce qu'il se passe si on sqouize totalement le bootloader, est-ce qu'on aurait toujours accès au port série virtuel sur USB? Peut-être que le driver FTDI en a besoin pour s'initialiser ou cette initialisation se fait sur le Serial.begin() dans l'ATMEGA??
Logged

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Je viens de regarder les 3 versions de Caterina qui sont disponibles dans l'environnement 1.0.2
L'une d'elles pourrait peut etre donner des idées : caterina-LilyPadUSB (Un LilyPad à mega32u4, "FLORA")
http://adafruit.com/products/659
Elle est basée, si j'ai bien compris,  sur un reset manuel 'à chaud effectué juste après le HardReset pour activer le bootloader.
Code:
LilyPadUSB bootloader code
The LilyPadUSB bootloader has been changed to remove the 8-second delay after external reset which is in
the Leonardo. To enter the bootloader, the user should execute TWO external resets within 750 ms; that is,
press the reset button twice, quickly.\

Pour la modification que tu proposes,Super_Cinci,  il me semble qu'il n'y a pas de contre indication de principe (le bootloader et l'appli installent chacun de leur côté leur propre port série ) mais il y a des riques d'"effets de bord" plus délicats à prévoir dès lors qu'on touche et recompile un bootloader (taille du bootloader par exemple)
« Last Edit: November 16, 2012, 08:57:37 am by al1fch » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Seulement, le truc est de savoir ce qu'il se passe si on sqouize totalement le bootloader, est-ce qu'on aurait toujours accès au port série virtuel sur USB? Peut-être que le driver FTDI en a besoin pour s'initialiser ou cette initialisation se fait sur le Serial.begin() dans l'ATMEGA??
Normalement la partie usb est ré-initialisé au démarrage du programme utilisateur.
Dans mon bootloader modifié je force même la dé-initialisation du port usb avant de lancer le programme utilisateur.
(c'est la condition qui fait que teensyduino fonctionne ou non sur la leonardo)

Je viens de regarder les 3 versions de Caterina qui sont disponibles dans l'environnement 1.0.2
L'une d'elles pourrait peut etre donner des idées : caterina-LilyPadUSB (Un LilyPad à mega32u4, "FLORA")
Damned il ont encore touché aux bootloaders dans la 1.0.2 smiley-zipper
Va falloir que je regarde de plus prés cette nouvelle version ...pour le moment j'essaye la beta 1.5 pour la due ...
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1395
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

le double-click reset peut être sympa, en effet! il va falloir que je regarde ça! smiley-wink
Logged

Pages: [1]   Go Up
Jump to: