MEGA 2560: affrontiamo l'errore "first mismatch at byte 0x1e000 0xff != 0x0d"

Non mi risulta un problema di saltuarietà, a michele il problema è fisso, wd anche gli altri che ricordo non lamentano randomizzazioni.
Il fatto che non ci siano molte lamentele dipende secondo me dal fatto che trovare gente che mette mani al bootloader del 2560 è raro, perché non se ne comprano vergini ed aggiornare il bl sulla mega non è indispensabile a molti.
Invece il bootloader sul 328p si mette spesso visto l acquisto di nuovi 328p o sugli standalone.

Domani faccio un po di prove, così aggiorno anche il mio bl.

Mike hai provato anche con un programmatore diverso da ArduinoISP ? Potrebbe essere un bug proprio dello sketch.
Domani provo entrambe le cose.

Testato:
....
Mike hai provato anche con un programmatore diverso da ArduinoISP ? Potrebbe essere un bug proprio dello sketch.
Domani provo entrambe le cose.

Tra un pò dalla scatola del suo avr dragon si sentiranno i tamburi in stile jumanji.... :wink:

BUD: quanto hai ragione! Quel dragon impacchettato mi fa una pena che non hai idea, d'altra parte i test di Astro dimostrano che probabilmente funzionerebbe, ma allora si perderebbe lo scopo del Topic.

Paolo e Test: concordo completamente con Test, l'ultima volta ho proprio fatto notare come "chiunque" tentasse l'operazione avesse lo stesso errore, la Rivista usa questo micro per il progetto TiDiGino, ieri mi hanno mandato il video esplicativo dell'operazione di caricamento del bootloader della MEGA, è per il loro stessi tecnici, alla fine si vede chiaramente l'errore e loro spiegano che è assolutamente normale; a me l'ha fatto in tutte le prove, quindi non c'è nulla di saltuario. E comunque la facilità con cui lo programmo poi via seriale mi mostra che tutto sta funzionando benissimo. Però aspetto con ansia i test di Test :D, ogni ulteriore elemento è utile. A Paolo chiedo, vista la sua rapidità in questo tipo di ricerche, e visto il mio attuale imbordellimento, se riesce a trovare il tempo di localizzare gli ultimi tre Topic in cui si tratta din questo problema; riletti alla luce di quanto sappiamo ora ci darebbero elementi utili (Grazie!)

Toccherebbe provare a ricompilare il bootloder con AvrStudio, senza usare il makefile fornito, e vedere se il problema scompare

Astro, a te tra qualche giorno dovrebbe costare "poco" fare questa prova; per il lavoro che sto realizzando sarebbe elegante poter far sparire questo inutile messaggio. Grazie anche a te.

[quote author=Michele Menniti link=topic=199588.msg1473766#msg1473766 date=1384850367]
A Paolo chiedo, vista la sua rapidità in questo tipo di ricerche, e visto il mio attuale imbordellimento, se riesce a trovare il tempo di localizzare gli ultimi tre Topic in cui si tratta din questo problema; riletti alla luce di quanto sappiamo ora ci darebbero elementi utili (Grazie!)[/quote]

Obbedisco. :grin:
--> Arduino Mega Errore - #17 by maury123 - Hardware - Arduino Forum
--> Mega Bootloader STK500v2_receiveMessage(): timeout - Software - Arduino Forum
--> Upload Sketch su Arduino Mega 2560 da rete o via SD - #3 by system - Software - Arduino Forum
--> [Mega 2560] Non termina l'upload dello sketch - #12 by pablos71 - Generale - Arduino Forum

Penso di poterlo fare durante il weekend, ritengo molto probabile che ricompilando con AvrStudio il problema scompaia.
Credo che alla base del problema ci sia una difficoltà di interpretazioni degli address del file .hex da utilizzare da parte di Avrdude, oppure da parte dello stesso software Arduino ISP, però questo significa anche possibili problemi nel software caricato sul micro.
Potrebbe essere interessante vedere un dump della flash, lo puoi fare con il dragon, dopo aver programmato il 2560 tramite ISP in modo da poter verificare se quanto scritto è realmente dove si deve trovare ed è quanto atteso.

@ Paolo: grazie! ora cerco di studiare e rileggere tutto, poi posto una valutazione globale.

@ Astro: grazie anche a te! il problema (mio) del Dragon è che non l'ho mai tolto dalla confezione, solo una volta per vedere se c'era :grin: e purtroppo in questo periodo davvero non avrei tempo né testa per metterlo al lavoro. Però, visto che in questa vita prima o poi dovremo incontrarci :wink: si potrebbe trovare il tempo per gaurdarlo assieme, avere le prime indicazioni d'uso mi aiuterebbe a "partire".

@ BUD: tu il Dragon l'hai fatto lavorare in un niente e so che lo usi ormai a tempo pieno; non è che per purissimo caso hai approntato una mini-guida d'uso facile facile in modo che in un paio d'ore possa riuscire a fare i primi lavori ISP? :grin:

Premetto un pò di cose:
non ho un atmega2560 per verificare la procedura;
non uso la programmazione icsp ma high voltage;
non lo faccio da atmel studio ma direttamente con avrdude da terminale in kubuntu.

Ho dovuto installare atmel studio 6 soltanto per aggiornare il firmware del programmatore (Tools - AVR Tools firmware upgrade); insieme al software ti installa anche il driver USB (getting started).

Dopo l'installazione dal menu Tools scegli Device Programming.
Qui puoi impostare tutti i parametri relativi al microcontrollore e al tipo di programmazione che intendi effettuare, nel tuo caso Avr Dragon, ATmega2560 e ISP.
Per verificare i collegamenti puoi far leggere il device signature con l'apposito pulsante, se corrispondono ti fa impostare la frequenza di clock per la trasmissione dei dati altrimenti ti restituisce un errore e non ti fa proseguire.

Nella finestra Memories puoi finalmente cancellare, scrivere e verificare la memoria flash del microcontrollore semplicemente impostando il percorso relativo al file hex del bootloader (o altro).

Manca soltanto di impostare i fuse e i lock bits nelle apposite sezioni.

OT: ringrazio l'engine del forum o il server che durante la pubblicazione di questo reply mi ha restituito un Bad Gateway e ho dovuto riscriverlo in fretta :0 :zipper_mouth_face:

Grazie mille BUD, in verità pensavo davvero che tu avessi fatto qualcosina all'inizio dell'uso del Dragon, non ti avrei chiesto di perdere tanto tempo, comunque sia.... a buon rendere :).

Non ti preoccupare, come vedi non è difficile usarlo.
Lo sbattimento più grande è stato installare atmel studio :slight_smile:

Il problema e' piu' grave di quanto sembri :slight_smile:
Testato su Win7-64
IDE 1.5.4
Prog. UsbAsp

1- caricando il bootloader ricevo l'errore first mismatch at byte 0x1e000 0xff != 0x0d
2- caricando uno sketch via ICSP esso viene caricato in flash, senza errori riportati da avrdude, ma la mega non parte, anche resettandola.

Quindi oltre all'errore di verifica c'e' un punto molto piu' grave: "La Mega non puo' essere programmata via ICSP" :fearful:

Testato:
Quindi oltre all'errore di verifica c'e' un punto molto piu' grave: "La Mega non puo' essere programmata via ICSP" :fearful:

Affermazione un pochino avventata visto che io la MEGA2560 la programmo da ISP senza problemi :slight_smile:
Pure le prove fatte da Michele, e da tanti altri, confermano che dopo la programmazione tramite Arduino ISP indipendentemente dall'errore poi la MEGA funzione.

Le prove di Michele e di tutti gli altri affermano che dopo il caricamento del bootloader e' possibile programmare la mega MA VIA USB
Se voglio programmare la mega con l'apposito comando via ICSP (in modo da avere solo lo sketch a bordo senza BL) non funziona, questo affermo nel mio punto 2. Cioe' anche il TDGino che michele porta ad esempio lo fanno funzionare sempre con BL a bordo
Ho rieseguito tutti i test anche su IDE 1.0.5 stessi risultati.

(parlo del comando Carica Tramite Un Programmatore, spiegato nella mia guida)
a te funziona ma via avrstudio+dragon giusto ?

Testato:
(parlo del comando Carica Tramite Un Programmatore, spiegato nella mia guida)
a te funziona ma via avrstudio+dragon giusto ?

Dato che non uso lo sketch Arduino ISP, e non voglio usarlo :slight_smile: , non ho provato a caricare un programma in questo modo, sicuramente il test lo farà Michele e vediamo se conferma il problema.
Io posso solo confermare che caricando il file .hex del bootloader tramite AvrStudio e l'AVRISP MKII non ho nessun errore in verifica e il programma va ad occupare correttamente il segmento di flash previsto.

certo, aspettiamo michele, pero' guarda che il caricamento di uno sketch senza bootloader e' una cosa ufficiale che fai con il tuo programmatore ed usando l'IDE al posto di AtmelStudio, arduinoISP non c'entra nulla.
Quindi a limite devi sostenere di non voler usare l'IDE, non di non voler usare ArduinoISP :slight_smile:

Mi pareva di averlo scritto nel post di apertura che ho programmato via ISP sia il bootloader che il solo sketch (carica con un programmatore, non c'è altro modo....), e poi ho detto che una volta installato il bl, nonostante l'errore, posso programmare via seriale.
EDIT: sì, l'avevo scritto :slight_smile:

Allora ho provato a caricare direttamente degli sketch con l'opzione tipica ISP e tutto funziona regolarmente; quindi il problema non sembra dipendere dalla tecnica ISP e certamente non dipende dal micro.

Però a dire il vero ho notato che in qualche caso (considerate che domenica sono stato dalle 15 alle 24 ininterrottamente su questa cosa, senza prendere appunti :disappointed_relieved:) per vedere il blink partire dovevo premere e tenere premuto il reset di Arduino, ed in qualche caso effettivamente non partiva; mi pare di aver notato anche delle differenze di comportamento su questa cosa in base al fatto che alimentavo la scheda via seriale o via ISP, eppure le piste sono identiche e le due tecniche le commuto tramite un deviatore agisce proprio sul reset e sui 5V, per evitare casini. Però le ultime 4-5 prove non mi hanno dato problemi quindi devo per forza replicare ed approfondire.
Ho notato anche un'altra cosa: quel giorno ho avurto grandi difficoltà a programmare la MEGA ADK che ho, usando IDE 1.0.1 mentre non ho avuto alcuna difficoltà con la 0022, riesumata per l'occasione, ma essensomi concentrato sulla questione BL/ISP onestamente non ho approfondito nessuno di questi piccoli problemi.
Posso però affermare con certezza una cosa, quando io e Astro abbiamo pubblicato l'articolo sulla toolchain aggiornata, non disponendo della MEGA facemmo le prove su un TiDiGino, basato su un 2560, ed in quel caso non sapevamo nemmeno che avesse un bootloader a bordo, per cui tutti i test li facemmo caricando via ISP una specie di blink sofisticato (scritto da Astro) che, per lampeggiare, si fregava una marea di flash (la cosa era ovviamente voluta) ma ha sempre funzionato, quindi temo che Test si sia scontrato con uno dei miei problemi
Quindi ora, appurato che l'errore non dovrebbe essere più un errore, nell'attesa della prova di compilazione di Astro e della verifica della flash da parte mia, la prossima volta mi concentrerò sui problemi che ho avuto, ma stavolta lo farò in modo serio, descrivendo ogni singola prova e vedremo cosa ne esce; aggiungerò alle prove la versione 1.0.5 come da suggerimento di Paolo, visto che certamente ha meno bug della 1.0.1 ma non intendo usare per il momento la 1.5.x.

Una sola considerazione finale x Test: tu non usi ArduinoISP perché usi un programmatore esterno, non perché puoi farne piacevolmente a meno, è così o mi sfugge qualcosa? (ti ricordo che io usco esclusivamente Arduini come programmatori....)

ho usato un UsbAsp proprio per differenziarmi da te e verificare se l'errore di verifica si confermava, e si e' confermato.
Sul discorso Carica via Programmatore a me il problema e' fisso, non parte la mega, nemmeno resettanto piu' volte. Astro se vuole puo' fare anche lui la prova, usando il uo rpogrammatore (che e' supportato dall'ide) e avere altra verifica, se fosse un problema tra l'IDE ed il comando Carica Via Programmatore verrebbe fuori anche a lui.
A questo punto stasera se ho un attimo faccio le prove anche con una UNO+ArduinoISP visto che a te funziona, o almeno ti ha saltuariamente funzionato.
Nessun rpoblema invece ad usare normalmente l'USB dopo il caricamento del bootloader.

I vecchi firmware dell'USBasp (ante 2009) avevno un limite per il quale non potevano scrivere oltre la soglia dei 64KWord (128Kbyte). Tale limite è stato risolto nel 2011:

usbasp.2011-05-28 (v1.4)
......
- added support for controllers with flash >128kb

E' probabile quindi che non riesca a scrivere il bootloader perché materialmente il tuo programmatore non riesce ad arrivare così in alto. Il micro resta bloccato perciò perché i fuse li hai impostati per andare a saltare in fondo alla Flash ma lì non c'è nessun bootloader.

Testato:
Astro se vuole puo' fare anche lui la prova, usando il uo rpogrammatore (che e' supportato dall'ide) e avere altra verifica, se fosse un problema tra l'IDE ed il comando Carica Via Programmatore verrebbe fuori anche a lui.

Non mi chiedete di fare questa prova per un semplicissimo motivo, per poter utilizzare l'AVRISP MKII da IDE di Arduino è indispensabile installare gli appositi driver per Avrdude, driver che non hanno il certificato valido per W7 64 bit e che vanno a sovrascrivere quelli di AvrStudio.
Non ho alcuna intenzione di combattere con W7 per l'installazione e "sporcare" l'installazione di AvrStudio :slight_smile:
Comunque penso di aver trovato il bandolo della matassa, se è come penso io (devo verificarlo) sarà l'ennesima conferma che non c'è nessun controllo qualità, o comunque è meno che minimale, sul software ufficiale di Arduino :grin:

ok, non sapevo sta cosa dei driver, che casino, quindi due sw che usano lo stesso programmatore abbisognano di due driver diversi ? assurdo, ma mica anche sotto linux e' cosi' ?

x leo, giu' dalle brande.... il bootloader viene scritto bene con UsBAsp :slight_smile:
E' lo sketch che, caricato con l'apposita funzione presente dalla 1.0 in poi Carica Tramite Programatore, a me fallisce sempre ed a Michele e' fallita saltuariamente

Se il tuo USBasp ha il firmware vecchio "sembra" che scriva correttamente ma non lo fa. Tu stesso dici che hai dei problemi, se lavorasse correttamente problemi non ne dovrebbe avere... :wink:
Potresti provare installandogli sopra il nuovo firmware datato 2011 e riprovare. Che ti costa?