Je travail sur un projet de lecteur midi assez conséquent, le code est presque finit mais j'ai un gros probléme
La premiers version de mon code fait environ 20000 bytes en flash, mais ma dernière version fait 30000 bytes.
Quand j'upload la 1er version aucun probléme tout marche, mais quand j'upload la + grosse version boom :
Binary sketch size: 29418 bytes (of a 32256 byte maximum)
avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync
Le pire c'est que l'upload à presque l'air de ce faire, les led rx/tx clignote à mort puis le sketch démarre, enfin au début, après quelque secondes il crash.
Ce qui me laisse à penser que l'upload c'est fait mais pas entièrement.
A votre avis qui est fautif le bootloader ou l'Atmega328 ?
(Ps: j'ai des Atmega328 et un programmateur ISP donc je peut faire une màj du bootloader si c'est que ça ou changer l'ATmega).
-avec upload.verbose=true dans preferences.txt tu pourrais peut être en apprendre un peu plus
-ton programmateur ISP est sans doute utilisable pour lire la mémoire flash après l'upload pour voir s'il est réellement partiel
-je vois à l'instant que d'autres ont me même genre de souci avec Optiboot qui est installé depuis Uno Google Code Archive - Long-term storage for Google Code Project Hosting.....
oups ! Le verbose, j'avais oublié je change ça et je re-upload pour voir.
Je posterai les deux .hex pour voir si ma théorie est bonne mais il faudra prendre en compte que dans la version extraite de l'atmega il y aura aussi le bootloader.
Edit: je vais voir avec la dernière version de optiboot, j'ai rien a craindre avec le programmateur donc bon ...
je pense que ton explication sur la taille 'excessive' du fichier HEX est la bonne et que c'est un des bugs de la version actuelle du bootloader.
ça me rappelle qu'un fil de discussion présente un travail sur le bootloader Optiboot pour éliminer certains de ses défauts dont celui que tu rencontres ainsi que l'impossibilité de faire fonctionner le sketch 'Arduino en ISP'
je n'ai pas encore eu l'occasion de le tester : http://arduino.cc/forum/index.php/topic,64105.0.html
Avec cette dernière version ça pourrait passer.
Bon voila le .txt en verbose + les deux .hex
Le dump.hex a quand même une tête bizarre, j'ai utilisé le bootloader pour lire l'ATmega histoire de ne pas avoir le bootloader inclut dans le dump mais je sais pas si c'etait une bonne idée
Je vais quand même faire un dump intégrale par ISP au cas ou.
ton dump.hex montre bien une coupure à l'adresse 0x7000 (avant ça passe , après c'est bloqué par le bootloader en place qui est implanté en 0x7000 et ne veut pas s'écraser lui même !!)
Le bootloader est sur le secteur 0x7000 ?
j'ai toujours pensé que le bootloader était sur les premiers secteur ?
Le truc c'est que vouloir grappillé 1.5Ko de flash va pas m'avancer beaucoup il faudrai que je trouve un moyen de réduire la place que prend mon programme ... mais comment ...