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

leo72:
Stamattina, con la toolchain Atmel nuova nuova (toolchain Atmel, quindi avr-gcc 4.5.1 Gnu con patch Atmel) ho provato a compilare lo sketch ArduinoISP allegato all'IDE 0022. Risultato: NON FUNZIONA.

Forse non sono stato chiaro, anche sotto Windows il vecchio sketch isp non funziona se compilato con una release del compilatore più recente.

A 9600 non va, è fuori sincronia.

A 9600, con IDE precedente alla 1.0.1, non può funzionare perché l'IDE dialoga a 19200 ed ovviamente se lo sketch dialoga a 9600 non si capiscono :slight_smile:

mentre lo sketch ArduinoISP2 compila e lavora perfettamente. Quindi io metterei una discriminante anche sulla versione della toolchain che si usa: con

Ci tengo a sottolineare che lo sketch ISP allegato alla 1.0.1 funziona perfettamente sia con la 00022-23 (19200) che la 1.0.1 (9600), mentre non funziona con la 1.0, ma con questa sicuramente il problema è nel buffer overflow della seriale che si risolve con la patch che hai applicato alla ISP2.
Speriamo che con la 1.0.1 definitiva diano la ISP patchata riportando la velocità a 19200.

astrobeed:

leo72:
Stamattina, con la toolchain Atmel nuova nuova (toolchain Atmel, quindi avr-gcc 4.5.1 Gnu con patch Atmel) ho provato a compilare lo sketch ArduinoISP allegato all'IDE 0022. Risultato: NON FUNZIONA.

Forse non sono stato chiaro, anche sotto Windows il vecchio sketch isp non funziona se compilato con una release del compilatore più recente.

Scusami, ma già fatico a ricordare le versioni di tutti i compilatori che ho provato su Linux, figurarsi di un SO che non uso :wink:

A 9600 non va, è fuori sincronia.

A 9600, con IDE precedente alla 1.0.1, non può funzionare perché l'IDE dialoga a 19200 ed ovviamente se lo sketch dialoga a 9600 non si capiscono :slight_smile:

Sì, ovvio. Lo avevo messo solo per conferma della cosa.

mentre lo sketch ArduinoISP2 compila e lavora perfettamente. Quindi io metterei una discriminante anche sulla versione della toolchain che si usa: con

Ci tengo a sottolineare che lo sketch ISP allegato alla 1.0.1 funziona perfettamente sia con la 00022-23 (19200) che la 1.0.1 (9600), mentre non funziona con la 1.0, ma con questa sicuramente il problema è nel buffer overflow della seriale che si risolve con la patch che hai applicato alla ISP2.
Speriamo che con la 1.0.1 definitiva diano la ISP patchata riportando la velocità a 19200.

Ma se il problema è nel buffer, il mio ArduinoISP2 dovrebbe lavorare anche sulla 1.0 senza problemi.

Resta il fatto che la cosa è sempre un calvario, secondo il mio modestissimo punto di vista.

leo72:
Ma se il problema è nel buffer, il mio ArduinoISP2 dovrebbe lavorare anche sulla 1.0 senza problemi.

Infatti sotto Windows funziona quindi dovrebbe funzionare anche sotto Linux, quello che non funziona con la 1.0 è la versione non modificata allegata con la 1.0.1 .

Resta il fatto che la cosa è sempre un calvario, secondo il mio modestissimo punto di vista.

Perfettamente d'accordo, non a caso ho consigliato a Michele di attenersi solo alle versioni ufficiali supportate dall'Arduino Team per eventuali guide/articoli, almeno se non va sappiamo con chi prendercela :smiley:

Ma infatti per questo sto facendo casino, non possiamo diffondere una tecnica sotto forma di notizia (ebbene sì :grin:) con dubbi sul suo funzionamento, né possiamo fornire alternative non ufficiali, se non siamo assolutamente certi, dopo tante prove fatte da tanti di noi, in quanto ci esporremmo a magre figure (non mi sto attribuendo il maiestatis, come più di qualcuno sa, nei limiti delle mie possibilità ho dato e darò ai Cesari ciò che è loro :)) dopo tante cose buone fatte.
La patch di Astrobeed è stata sufficientemente testata e lo specchietto che ha postato oggi e le prove che cercherò di fare stasera mi daranno il responso definitivo sulla strada da intraprendere.
Ciò detto, se Leo et altri potessero darmi ragionevoli garanzie, potrei (sempre col suo permesso) mettere a disposizione il suo AISP2 per la 1.0 in ambiente Windows, con riserva di possibili malfunzionamenti; ma se queste garanzie non ci sono non ne parlo.
Mi servirebbe uno sketch (formato .pde) da 120Kb (NON oltre, va sul 1284 e deve lasciare un po' di fash libera) che non faccia altro alla fine che blinkarmi tre led in sequenza, a sola dimostrazoine che lo sketch è stato compilato caricato ed è funzionante; mi serve massimo per domattina; quello usato da Astro è un suo lavoro ufficiale e non è giustamente utilizzabile, lui ha chiaramente detto di essere incasinato fino a fine settimana, ed io non sono in grado di mettere in piedi una bestia di array che occupi memoria a secchi: chi mi aiuta?
Io intanto inizio a montare la bancarella per i test :grin:

Lo sketch di test è quasi pronto, fa molto di più del semplice blink, in pratica usa quasi tutte le periferiche, esegue vari calcoli complessi con i float utilizzando quasi tutte le funzioni matematiche avanzate, e occupa 100 k sotto forma di vari array posti nella flash, il tutto compilato occupa quasi 110k.

L'ArduinoISP2 puoi anche prenderlo, io l'ho provato con un Tiny85 ed ha funzionato, Astro ha confermato che funziona quindi dovrebbe andare. Solo ti chiedo di prelevare quello allegato a questo post, lo stesso identico dell'altro con in più l'aggiunta di una riga di commento allo sketch in modo da dare la giusta gratificazione a questo povero, umile, ignorante utente :sweat_smile:

ArduinoISP2.pde.zip (4 KB)

astrobeed:

[quote author=Michele Menniti link=topic=96976.msg740952#msg740952 date=1332957824]
Mi servirebbe uno sketch (formato .pde) da 120Kb (NON oltre, va sul 1284 e deve lasciare un po' di fash libera) che non faccia altro alla fine che blinkarmi tre led in sequenza,

Lo sketch di test è quasi pronto, fa molto di più del semplice blink, in pratica usa quasi tutte le periferiche, esegue vari calcoli complessi con i float utilizzando quasi tutte le funzioni matematiche avanzate, e occupa 100 k sotto forma di vari array posti nella flash, il tutto compilato occupa quasi 110k.

[/quote]
Ottimo, mi ero sinceramente pentito di avertelo chiesto perché so quanto sei incasinato questa settimana, ecco perché avevo "aperto" la richiesta, allora va benissimo così, anzi molto di più!

leo72:
L'ArduinoISP2 puoi anche prenderlo, io l'ho provato con un Tiny85 ed ha funzionato, Astro ha confermato che funziona quindi dovrebbe andare. Solo ti chiedo di prelevare quello allegato a questo post, lo stesso identico dell'altro con in più l'aggiunta di una riga di commento allo sketch in modo da dare la giusta gratificazione a questo povero, umile, ignorante utente :sweat_smile:

naturalmente Leo, l'altro non lo avevo nemmeno scaricato, e comunque se non l'avessi messa tu la riga l'avrei fatto io, come in altre occasioni (il plurale non è un errore di calcolo ;))

Notizie:
1 - La versione di Leo ha funzionato al primo colpo con la mia 0022, ho inviato con successo uno sketch al 4313
2 - La versione ufficiale invece mi dà errore già in fase di compilazione:

ArduinoISP101.cpp: In function 'void spi_init()':
ArduinoISP101.cpp:192:3: error: 'SPCR' was not declared in this scope
ArduinoISP101.cpp:193:5: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:194:5: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void spi_wait()':
ArduinoISP101.cpp:200:12: error: 'SPSR' was not declared in this scope
ArduinoISP101.cpp:200:25: error: 'SPIF' was not declared in this scope
ArduinoISP101.cpp: In function 'uint8_t spi_send(uint8_t)':
ArduinoISP101.cpp:205:3: error: 'SPDR' was not declared in this scope
ArduinoISP101.cpp: In function 'void start_pmode()':
ArduinoISP101.cpp:290:11: error: 'SS' was not declared in this scope
ArduinoISP101.cpp:292:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:297:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:298:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp: In function 'void end_pmode()':
ArduinoISP101.cpp:304:11: error: 'MISO' was not declared in this scope
ArduinoISP101.cpp:305:11: error: 'MOSI' was not declared in this scope
ArduinoISP101.cpp:306:11: error: 'SCK' was not declared in this scope
ArduinoISP101.cpp:307:11: error: 'SS' was not declared in this scope

non riesco a capire quali differenze ci siano tra i due sketch: anche nella versione di leo ci sono queste variabili e non sono dichiarate all'inizio, ma purtroppo non riesco ad andare oltre con l'analisi

EDIT: non chiedetemi come e perché ma ora funziona; nelle varie prove ho voluto sperimentare l'AVRDUDE originale della toolchain; già all'upload di ArduinoISP esce:

avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

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. Aggiungo che la presenza dell'AVRDUDE.CONF nella cartella "bin" è assolutamente ininfluente.

Quell'errore sembra dovuto alla mancanza di #include "pins_arduino.h" , ho provato a scaricare il file che avevo allegato e compilarlo, non mi da nessun errore.
Sei sicuro di aver preso il file giusto ?
Per sicurezza te lo riallego.

ArduinoISP_1.0.1.rar (3.82 KB)

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)