erreur de transfert

Bonjour à tous,

je suis nouveau sur la plate forme arduino mais un connaisseur des pics et du langage C (mikroC)

j'essaye de transférer un programme sur mon arduino uno (atmega 328P)

la compilation se passe bien le transfert débute tx et rx clignotent pendant environ 8 sec et elles s’arrêtent.

et après erreur sur l'IDE :

Binary sketch size: 28958 bytes (of a 32256 byte maximum)

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: failed to write flash memory, rc=-4
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

cela fait plusieurs jours que je cherche sur différents forum mais j'ai pas trouvé pourquoi ?

un autre programme plus court fonctionne sans problème sur ma carte.

vous avez une idée du programme ? je pensais peut être au bootloader ?

Bonjour,

nicop89:
la compilation se passe bien le transfert débute tx et rx clignotent pendant environ 8 sec et elles s’arrêtent.
(...)
un autre programme plus court fonctionne sans problème sur ma carte.

C'est un probléme connu venant du bootloader.

Binary sketch size: 28958 bytes (of a 32256 byte maximum)

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: failed to write flash memory, rc=-4
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Quand on atteint la limite des 29Ko le bootloader arrête d'écrire en flash, c'est un probléme récurent dont j'ai déja fait l'expérience.

En théorie le bootloader n'occupe que 512 octets ce qui laisse 32256 octets libre, sauf qu'une erreur c'est glissé dans le code du bootloader et vient tout bloquer quand on approche des 29Ko.

Si tu posséde un programmateur d'AVR (d'AVR pas de PIC !) tu peut mettre à jour le bootloader par tes propres moyens :
http://www.adafruit.com/forums/viewtopic.php?f=25&t=19260

Sinon il faut que tu réduise la taille de ton code par un quelconque moyen :~

Merci pour ta réponse,

effectivement c'est ce que j'ai remarqué avec un prog un peu plus court cela passe... n'ayant pas envie de revoir mes 1035 lignes de programme, j'ai donc commandé un programmateur AVR pour pour pouvoir programmer mon atmel et modifier le bootloader.

par contre je peux le trouver ou le nouveau bootloader sans le bug?

nicop89:
par contre je peux le trouver ou le nouveau bootloader sans le bug?

Dans le lien que je t'ai donné il y a un zip qui contient un sketch spécial permettant de mettre à jour le bootloader d'une carte arduino en utilisant une autre carte arduino en programmateur.

Il suffit d'extraire le .hex inclut dans le sketch :

:107E0000112484B714BE81FFE6D085E08093810001
:107E100082E08093C00088E18093C10086E0809377
:107E2000C20080E18093C4008EE0CFD0259A86E026
:107E300020E33CEF91E0309385002093840096BBD3
:107E4000B09BFECF1D9AA8958150A9F7DD24D3944D
:107E5000A5E0EA2EF1E1FF2EABD0813421F481E0E0
:107E6000C5D083E020C0823411F484E103C085349E
:107E700019F485E0BBD091C0853581F499D0082FE5
:107E800010E096D090E0982F8827802B912B880FB8
:107E9000991F90930102809300027EC0863529F4D9
:107EA00084E0A4D080E07CD078C0843609F04EC055
:107EB00087D0E0910002F091010280E7E030F807FE
:107EC00018F483E087BFE895C0E0D1E071D08993D2
:107ED000809102028150809302028823B9F7E091D9
:107EE0000002F091010280E7E030F80718F083E02B
:107EF00087BFE89575D007B600FCFDCF4091000222
:107F000050910102A0E0B1E02C9130E011968C91EB
:107F1000119790E0982F8827822B932B1296FA01C5
:107F20000C01D7BEE89511244E5F5F4FF1E0A038F9
:107F3000BF0751F7E0910002F0910102E7BEE8951A
:107F400007B600FCFDCFF7BEE89527C08437B9F42B
:107F500037D046D0E0910002F09101023196F093C3
:107F60000102E09300023197E4918E2F19D08091A5
:107F70000202815080930202882361F70EC0853788
:107F800039F42ED08EE10CD085E90AD08FE08BCF6A
:107F9000813511F488E019D023D080E101D05CCF85
:107FA000982F8091C00085FFFCCF9093C600089564
:107FB000A8958091C00087FFFCCF8091C6000895EE
:107FC000F7DFF6DF80930202F3CFE0E6F0E098E11E
:107FD00090838083089580E0F8DFEE27FF270994DF
:107FE000E7DF803209F0F7DF84E1DACF1F93182F43
:0C7FF000DFDF1150E9F7F4DF1F91089566
:0400000300007E007B
:00000001FF

Les fusibles :

Low: 0xFF
High: 0xDE
Extended: 0x05

Et je crois que tu aura besoin d'un tutoriel pour avrdude :wink:

Remarque (peut être idiote) :
Si on utilise un programmeur externe pour mettre à jour le bootloader tant qu'on y est ne serait-il pas possible de virer complètement le bootloader et de récupérer 512 octets supplémentaire ?

skywodd:

nicop89:
par contre je peux le trouver ou le nouveau bootloader sans le bug?

Dans le lien que je t'ai donné il y a un zip qui contient un sketch spécial permettant de mettre à jour le bootloader d'une carte arduino en utilisant une autre carte arduino en programmateur.

Il suffit d'extraire le .hex inclut dans le sketch :

:107E0000112484B714BE81FFE6D085E08093810001

:107E100082E08093C00088E18093C10086E0809377
:107E2000C20080E18093C4008EE0CFD0259A86E026
:107E300020E33CEF91E0309385002093840096BBD3
:107E4000B09BFECF1D9AA8958150A9F7DD24D3944D
:107E5000A5E0EA2EF1E1FF2EABD0813421F481E0E0
:107E6000C5D083E020C0823411F484E103C085349E
:107E700019F485E0BBD091C0853581F499D0082FE5
:107E800010E096D090E0982F8827802B912B880FB8
:107E9000991F90930102809300027EC0863529F4D9
:107EA00084E0A4D080E07CD078C0843609F04EC055
:107EB00087D0E0910002F091010280E7E030F807FE
:107EC00018F483E087BFE895C0E0D1E071D08993D2
:107ED000809102028150809302028823B9F7E091D9
:107EE0000002F091010280E7E030F80718F083E02B
:107EF00087BFE89575D007B600FCFDCF4091000222
:107F000050910102A0E0B1E02C9130E011968C91EB
:107F1000119790E0982F8827822B932B1296FA01C5
:107F20000C01D7BEE89511244E5F5F4FF1E0A038F9
:107F3000BF0751F7E0910002F0910102E7BEE8951A
:107F400007B600FCFDCFF7BEE89527C08437B9F42B
:107F500037D046D0E0910002F09101023196F093C3
:107F60000102E09300023197E4918E2F19D08091A5
:107F70000202815080930202882361F70EC0853788
:107F800039F42ED08EE10CD085E90AD08FE08BCF6A
:107F9000813511F488E019D023D080E101D05CCF85
:107FA000982F8091C00085FFFCCF9093C600089564
:107FB000A8958091C00087FFFCCF8091C6000895EE
:107FC000F7DFF6DF80930202F3CFE0E6F0E098E11E
:107FD00090838083089580E0F8DFEE27FF270994DF
:107FE000E7DF803209F0F7DF84E1DACF1F93182F43
:0C7FF000DFDF1150E9F7F4DF1F91089566
:0400000300007E007B
:00000001FF




Les fusibles :


Low: 0xFF
High: 0xDE
Extended: 0x05




Et je crois que tu aura besoin d'un tutoriel pour avrdude ;)
http://skyduino.wordpress.com/2011/12/02/tutoriel-avrdude-en-ligne-de-commande/

merci j'avais pas fait attention au fichier dans ton lien.

68tjs:
Remarque (peut être idiote) :
Si on utilise un programmeur externe pour mettre à jour le bootloader tant qu'on y est ne serait-il pas possible de virer complètement le bootloader et de récupérer 512 octets supplémentaire ?

effectivement si tu a un prog externe tu peux te passer du bootloader et recuperer la place qu'il utilise.

nicop89:
effectivement si tu a un prog externe tu peux te passer du bootloader et recuperer la place qu'il utilise.

Oui mais c'est quand même bien moins pratique qu'un bootloader, surtout que optiboot fait que 512 octets ...