[WIN] Aggiornam. compilatore IDE 0022-0023-1.0 all'ULTIMA VERSIONE ATMEL

Scusa Astro, stavo editando il mio post, ma ogni tanto la mia connessione lavora ad 1 bit/ora; è scritto tutto su. Continuo a fare prove per capire cosa è successo, ma non mi pare di vedere cose strane :cold_sweat:

Mi basavo sull'affermazione di BB che diceva d'aver visto tra i sorgenti di AVRDUDE il file Arduino.h; quindi sembra fondamentale l'operazione di recupero del vecchio avrdude.exe suggerita da Astrobeed nei vari passaggi di aggiornamento.

io mi riferivo alla possibilità di avrdude di riconoscere arduino come programmatore con il suo nome, non ad altro.

BrainBooster:

Mi basavo sull'affermazione di BB che diceva d'aver visto tra i sorgenti di AVRDUDE il file Arduino.h; quindi sembra fondamentale l'operazione di recupero del vecchio avrdude.exe suggerita da Astrobeed nei vari passaggi di aggiornamento.

io mi riferivo alla possibilità di avrdude di riconoscere arduino come programmatore con il suo nome, non ad altro.

Bonjour BB XD
Non era un'accusa :~; nei post precedenti ho scritto, e l'ho fatto sul serio, di aver riletto l'intero Topic, per documentarmi, visto che, ormai è ufficiale (ma vi tengo nascosta la notizia più importante :D), su questa cosa tirerò fuori un articolo per Elettronica In. Ho preso un casino di "appunti", li ho riorganizzati e studiati per farmi le idee chiare e per approfondire qualche punto non chiaro per me; tra questo c'era quel breve scambio tra te e Astro su questa cosa dell'AVRDUDE; poiché, consigliato da tutti, ho scelto di seguire la strada meno invasiva possibile, riguardo l'operazione di aggiornamento, ho cercato di eliminare dalla discussione ogni modifica che non fosse indispensabile; quindi ho fatto la prova con avrdude.exe originale della toolchain, se avesse funzionato avrei evitato il passaggio in cui Astro dice di copiare quello della vecchia versione e usarlo al posto del nuovo; invece mi dà errore e se per farlo funzionare occorre fare operazioni aggiuntive non conviene. Stesso discorso applicato alla questione dell'ISP, la nuova versione originale funziona con 0022-23-1.0.1 ma non con la 1.0; Leo ha applicato una patch e la sua versione, che però non è ufficiale, funziona anche con la 1.0 a 9600 baud. Quindi io proporrò di adottare la nuova 1.0.1 (spiegando che comunque è una r.c. e non ancora una versione definitiva), ma a quelli che stanno bene con la 1.0 "fornirò" la versione di Leo, come patch. La cosa ha una sua logica.

:slight_smile: non mi sono sentito accusato, era solo per correggere sul nascere un'associazione errata che mi pareva di cogliere dal tuo discorso.
Per tutto il resto ti quoto ampiamente.

@Mike:
ricordati un paio di cose. Se l'articolo vale per tutti, non devi però generalizzare sull'uso di avrdude, cioè ricordati sempre che ciò che sperimenti su Windows non vale per Linux/Mac o viceversa. Quando tu affermi che l'avrdude originale incluso nella toolchain Atmel non funziona con Arduino la cosa è normale, dato che quella versione è vecchia e non riconosce l'Arduino come programmatore, e l'IDE di Arduino ne contiene una versione anch'essa vecchia ma patchata per riconoscere l'Arduino. Sui sistemi Linux si trova nei repo una versione di avrdude molto recente (>=5.10) che già di "serie" riconosce l'Arduino. Quindi usare quello oppure utilizzare quello patchato dell'IDE è perfettamente indifferente. Solo una precisazione per il tuo articolo, non è un appunto. :wink:
Il problema è che ogni sistema operativo ha un modo di fare diverso.

Te lo spiego io. Perché tu hai compilato lo sketch per l'Attiny4313 senza accorgertene :stuck_out_tongue:
Quegli errori sono classici di un micro selezionato al posto di un altro, e giustamente il compilatore non riconosce quelle costanti come registri del micro per cui vuoi compilare. Se non ci credi, seleziona in Boards il 4313 oppure un altro Tiny e ricompila. Vedrai che ti riesce l'errore XD

In allegato uno sketch di circa 80k compilato, l'ho ottenuto partendo da MultiWii 1.9, che utilizza quasi tutte le risorse disponibili su 328p, aggiungendo varie tabelle dati fittizie poste nella flash, in questo modo c'è molto codice vero che fa cose reali.
Dopo averlo caricato il led sul pin 13 esegue una sequenza complessa di lampeggi ripetuta all'infinito, questo perché non trova i sensori I2C ed esegue continuamente la fase di init.
Per il momento di più non posso fare, funziona sicuramente su un MEGA2560, provato sia su Arduino MEGA 2560 che il TiDiGino.

toolchain_test.rar (49.6 KB)

@ BB: tutto chiarito :slight_smile:
@ Leo: perché mai non dovrei crederti? c'ho messo un attimo a fare direttamente la prova :blush: ho anche ricorstruito la vicenda; stamattina appena mi sono messo al computer ed ho provato subito il tuo ISP2, chiudendo con lo sketch sul 4313; quando ho scompattato l'1.0.1 mi sono dimenticato di riportare la board sulla UNO. Giustificazione: hai mai chiesto a qualcuno di infilarti un'intera confezione di spilli da startoria nei.....? Credo proprio di no, se vuoi provare l'ebbrezza fatti eleggere Amministratore del Condominio in cui abiti (spero che tu abbia una mega villa lontano da vicini almeno 500mt) e aspetta che comincino a litigare tra loro (succede mediamente dai 20 ai 40 secondi successivi la tua elezione); poiché non risolvono nulla indovina alla fine chi fa la parte della cloaca? Ecco, in quel momento inizia l'ebbrezza degli spilli.
Riguardo l'articolo, la linea della Rivista, a torto o a ragione (non voglio iniziare una nuova querelle), salvo rari casi, si basa quasi esclusivamente sull'ambiente Windows, quindi va da sé che ciò che si afferma è riferito a questo S.O. Non solo, nelle istruzioni è spiegato chiaramente come scaricare la Toolchain di Windows. Purtroppo non sono in condizioni, ma nemmeno mi chiedono di farlo, di replicare le informazioni adattandole ad altri S.O..
@ Astro: per me va più che bene, l'importante è aver superato in abbondanza i 64K; il test lo farò sullo stand-alone dando per scontato il fatto che funzioni sulla Mega 2560 e sul TiDiGino; in questo modo abbracciamo l'intera gamma di interesse dell'articolo XD
Spero di completare almeno il grosso entro stasera, domani sera ho Riunione di Condominio per l'approvazione del Bilancio annuale :disappointed_relieved: :disappointed_relieved: :disappointed_relieved:

@Mike:
se vogliamo parlare di spilli, ne ho giusto usato uno martedì mattina per forarmi l'ascesso ad un dente su cui sta lavorando la mia dentista che, OVVIAMENTE, questa settimana è fuori sede per un corso di aggiornamento.... se a ciò ci aggiungi l'addormentatura alle 3:00 di notte per il lavoro e la sveglia alle 7:15 la mattina, capirai come ti... capisco benissimo :stuck_out_tongue_closed_eyes:

:cold_sweat:...ma che strani passatempi che avete :stuck_out_tongue_closed_eyes:
facciamo un veloce riepilogo per avere una build aggiornata su windows:
arduino ide 1.0.1-rc1
arduinoisp (originale)
toolchain atmel 3.2.3 + includes di astrobeed
avrdude preso dal winavr originale dell'ide con il suo .conf ricopiato nella cartella etc (da ricreare)
dimentico/sbaglio qualcosa?

BrainBooster:
:cold_sweat:...ma che strani passatempi che avete :stuck_out_tongue_closed_eyes:
facciamo un veloce riepilogo per avere una build aggiornata su windows:
arduino ide 1.0.1-rc1
arduinoisp (originale)
toolchain atmel 3.2.3 + includes di astrobeed
avrdude preso dal winavr originale dell'ide con il suo .conf ricopiato nella cartella etc (da ricreare)
dimentico/sbaglio qualcosa?

no, mi pare tutto ok
aggiungo che se invece si lavora con la 0022/23 devi comunque usare l'ISP della 1.0.1
se invece si lavora con la 1.0 bisogna usare l'ISP della 1.0.1 con la patch (denominato da Leo ISP2)

leo72:
l'addormentatura alle 3:00 di notte per il lavoro e la sveglia alle 7:15 la mattina

Scusa leo ma tu lavori 20 ore al giorno :fearful:
La Cina sarebbe un paradiso per te :slight_smile:

[quote author=Michele Menniti link=topic=96976.msg740530#msg740530 date=1332932615]

astrobeed:
La cosa è semplicissima, lo sketch ISP da usare è quello ufficiale allegato al'IDE 1.0.1, che è quello che ti avevo allegato, se parliamo di articoli/guide da pubblicare, se non altro per non creare confusione alle persone con versioni non ufficialmente supportate dall'Arduino Team.

IDE 0022 velocità sketch ISP 19200
IDE 0023 velocità sketch ISP 19200
IDE 1.0 non funziona indipendentemente dalla toolchain, eventualmente usare la versione patchata proposta da Leo a 19200.
IDE 1.0.1 velocità sketch ISP 9600

@ Leo: la tua versione ISP2, per conferma, lavora a 19200 sia con 1.0 che con 1.0.1?

La velocità non dipende dallo sketch, dipende dall'IDE, o meglio lo sketch si deve adattare a quella utilizzata dall'IDE, quindi 9600 con la 1.0.1 e 19200 con tutti gli altri.

astrobeed:

[quote author=Michele Menniti link=topic=96976.msg743009#msg743009 date=1333105110]
@ Leo: la tua versione ISP2, per conferma, lavora a 19200 sia con 1.0 che con 1.0.1?

La velocità non dipende dallo sketch, dipende dall'IDE, o meglio lo sketch si deve adattare a quella utilizzata dall'IDE, quindi 9600 con la 1.0.1 e 19200 con tutti gli altri.

[/quote]
è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :roll_eyes:

Non è stravagante, semplicemente qualcuno dell'Arduino Team ha deciso che era più semplice ridurre la velocità di comunicazione, invece di scrivere uno sketch ISP fatto meglio, e come tale è stata imposta dall'alto per la 1.0.1, forse pure per le seguenti.

Testato:

leo72:
l'addormentatura alle 3:00 di notte per il lavoro e la sveglia alle 7:15 la mattina

Scusa leo ma tu lavori 20 ore al giorno :fearful:
La Cina sarebbe un paradiso per te :slight_smile:

No, è che quando mi capita il turno di notte il sonno semplicemente non esiste... vado a letto alle 3:00 però intorno alle 7:15 mi devo comunque alzare perché devo svegliare i bambini per mandarli a scuola/asilo.... solo che poi, mandati via, spesso torno 1 oretta o 2 a letto perché sennò crollo... difatti in quella settimana che mi capita quel turno sono altamente irascibile.... :0

astrobeed:

[quote author=Michele Menniti link=topic=96976.msg743067#msg743067 date=1333109108]
è stravagante che l'ultima versione dell'ISP lavori alla velocità più bassa SOLO con la versione a cui appartiene :roll_eyes:

Non è stravagante, semplicemente qualcuno dell'Arduino Team ha deciso che era più semplice ridurre la velocità di comunicazione, invece di scrivere uno sketch ISP fatto meglio, e come tale è stata imposta dall'alto per la 1.0.1, forse pure per le seguenti.

[/quote]
certamente, tanto loro non possono fare upload max di 64K :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
Era solo per riaprire l'argomento: mi devi chiarire bene la questione word/byte; io so che una word rappresenta 2 byte ed una long word rappresenta 4 byte, in alcuni tipi di architetture; partiamo da Arduino: io ho realizzato uno sketch inutile ma che riusciva a far uscire in compilazione la cifra 32768 byte, 1 solo byte in più e mi dava out of memory; il mega328 ha 32K di flash e tutti i conti mi tornano; invece il mega1280 ha 128K di flash ma mi pare di capire che può contenere 256KB. Puoi per favore approfondirmi questa cosa?
Aggiungo: "gli sketch da meno di 128k funzionano anche con il vecchio compilatore", ma tu mi hai dato uno sketch da 80K o da 160K?
Ora mi metto al lavoro a fare prove scientifiche con le tre versioni di avr e le tre versioni di ISP su tre micro: tiny2313, mega8 e mega1284; stamattina sono impazzito ma non c'ero con la testa, ora invece ho aperto una tabella e poi ve la posto, perché mi sa che qualche problema c'è..

La dimensione della word varia in base all'architettura. Sui micro Atmel ad 8 bit la word è "larga" 2 byte, 16 bit.
Però bisogna fare un distinguo fra la dimensione dello sketch sul tuo computer, che si misura in byte, e il firmware caricato nella flash, che è organizzata in word, ossia ha celle di 16 bit. Se ti ricordi, infatti, Fuse Calculator, nel menu che riserva lo spazio per il bootloader, indica proprio la dimensione dell'area in word: 256 word, 512 byte, sono il minimo che può essere riservato.

Il compilatore tradurrà i salti a 16 bit, ma questa operazione a te non interessa: fa parte della traduzione del programma dal C al linguaggio macchina.

grazie della domanda menny e della risposta leo, non conosco questo concetto, quindi chiedo:
E' corretto fare un paragone con il cluster degli HD ? quindi dire che meno di una word non puo' essere occupata ?
se anche il dato che devo scrivere in flash fosse di solo 1 byte, in flash ne occupero' cmq 2, o meglio in quel byte libero occupato dal precedente dato non potro' scrivere ?

Secondo me non è del tutto corretto il paragone, perché si parla comunque di indirizzare una coppia di byte che sono letti insieme ma che sono poi gestiti singolarmente perché esiste il concetto di byte alto/byte basso, cosa che in riferimento al cluster non c'è: non c'è il "mezzo cluster alto" e il "mezzo cluster basso".
Però qui non ho abbastanza conoscenze per affermare che ciò che ho detto sia giusto. Dovrei rileggermi il datasheet per dartene certezza assoluta.