Go Down

Topic: DIY Programmateur USB FT232R BitBang pour Standalone (Read 11 times) previous topic - next topic

Jean-Marie

Les expérimentations de cet après-midi m'ont appris différentes choses.


  • Au sujet de la LED témoin qui reste allumée après la programmation BitBang. je n'ai pu obtenir le déblocage qu'en débranchant l'USB ou en connectant un instant la pin 19 du FT232R à la masse. Et encore, il faut une connexion directe. Si on interpose une résistance de 10 K ou 1K, çà ne marche pas. Pas moyen non plus en choisissant provisoirement un autre port COM ou en faisant un Reset manuel de l'Atmega de remettre les choses en place

  • Essai d'Upload dans l'Ide tant que ce Reset n'est pas fait
    Si on essaye de retourner dans l'Ide pour refaire un Upload, avrdude fait une erreur et on obtient le message suivant:
        Binary sketch size: 1018 bytes (of a 30720 byte maximum)
        avrdude.exe: stk500_getsync(): not in sync: resp=0x37
        avrdude.exe: stk500_disable(): protocol error, expect=0x14, resp=0x37


  • Essai d'Upload dans l'Ide après le Reset du FT232R
    Une tentative d'upload dans l'Ide après le Reset du FT232R donne également le message d'erreur suivant:
        Binary sketch size: 1018 bytes (of a 30720 byte maximum)
        avrdude.exe: stk500_getsync(): not in sync: resp=0x00
        avrdude.exe: stk500_disable(): protocol error, expect=0x14, resp=0x51

    C'est plus gênant car cela signifie que le Bootloader ne fonctionne plus. Ceci est confirmé par les expériences suivantes.

  • Reflashage du Bootloader par BitBanging
    Dans Avrdude-GUI, on effectue les opération suivantes:
    - Modification du hfuse de DA en DB. Ceci débloque la zone de protection 
      de mémoire du Bootloader (voir Engbedded.com)
    - On pointe sur le Bootloader qui convient (C:\Program Files\arduino-0022\
      hardware\arduino\bootloaders\atmega\ATmegaBOOT_168_atmega328.hex)
      et on fait un Erase - Write - Verify
      A noter que le chargement du Bootloader prend environ 25 sec car on n'est
      plus obligé de réduire le Baud Rate puisque l'Atmega fonctionne vec le quartz externe.
    - Remodification du hfuse de DB en DA pour rebloquer la mémoire du Bootloader
    - Reset du FT232R et retour dans l'Ide où on constate que Blink peut à nouveau être uploadé


  • BitBang "Write" et "Erase"
    De multiples essais ont démontré que c'est la commande ERASE qui dédruit le Bootloader (soit en cliquant "Erase - Write - Verify", soit en cliquant "Chip Erase". Cependant la commande "Write" seule ne fonctionne que si la mémoire de l'Atmega est vide, par exemple si l'Atmega sort de l'usine, ou après un Erase ou encore après le chargement et la protection du Bootloader. Par contre, si la mémoire de l'Atméga contient déjà un programme, la commande "Write" entraîne une erreur de avrdude et échoue

  • En conclusion
    Pour ceux qui désirent travailler dans l'environnement de l'Ide Arduino, le mode BitBang est essentiellement utile pour charger ou réparer le Bootloader Arduino. Cela nécessite de disposer du FT232R, que celui-ci soit déjà installé sur une platine Arduino ou qu'il soit indépendant sur un adaptateur SSOP28 --> DIP28. Le flashage du Bootloader peut se faire depuis l'Ide (7 à 8 minutes), ou à l'aide de avrdude-GUI ou de la ligne de commande de avrdude-serjtag (25 secondes). Par contre, le flashage des programmes est à faire de la manière habituelle, à partir de l'Ide, par la voie de l'USART (Tx, Rx).

    Pour ceux qui travaillent en-dehors de l'environnement Arduino, ils peuvent se passer du Bootloader Arduino et flasher les programmes avec l'avrdude-GUI ou la ligne de commande de avrdude-serjtag

Amicalement, Jean-Marie

skywodd

Derniére (petite) question par pure curiosité.

Qu'elle est la méthode la plus rapide (au sens vitesse d'envoi du programme) pour toi, le bit-bang ou le bootloader ?

La programmation par ISP (avec un "vrai" programmateur d'AVR) est trés rapide (presque instantané) mais je n'est jamais comparé bitbang et bootloader, je serais curieux de savoir lequel va le plus vite.

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

Jean-Marie

Hello Skywodd,

Je vais faire le test. Mais le programme Blink est beaucoup trop court pour une mesure du temps. Comme j'ai un 328, l'idéal serait de charger un programme qui fait presque 28 K (car il faut réserver 2K pour le bootmloader). Aurais-tu par hasard un tel fichier hex ? Probablement que tous les exemples de l'Ide sont des programmes génériques et courts.
Amicalement, Jean-Marie

skywodd

Je t'ai fait un hex de 21162 octets, ça devrait aller.

C'est le sketch Arduino PCM du playground que j'ai recompilé avec une musique plus grosse (20000 samples au lieu de 13000).

Par contre petit truc concernant le bootloader arduino, il ne prend physiquement que 2Ko mais il "verrouille" presque 3.2Ko, c'est un bug qui devrait être résolu dans les prochaines version de optiboot.
Pour la version patché : http://arduino.cc/forum/index.php/topic,64105.msg466703.html#msg466703
Sinon le google code d'optiboot : http://code.google.com/p/optiboot/

Jean-Marie: J'utilise la version patché, mais comme je me suis dis que tu devais surement utiliser l'ancien bootloader fourni avec l'ide j'ai volontairement pas dépassé la barre de 29000 octets.
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Jean-Marie

Merci Skywodd, J'essaye çà demain matin et je te tiens au courant.
Amicalement, Jean-Marie

Go Up