Go Down

Topic: ATmega328PB (Read 102914 times) previous topic - next topic

gpb01

Nota per gli utenti MAC (OS X) che usano AVRFuses ...

... dopo aver applicato la modifica ad avrdude.conf (... come detto poco sopra), fare tasto destro su "AVRFuses.app" -> "Show package Contents" e andare nella cartella : /Applications/AVRFuses.app/Contents/Resources/ e sostituire il file AVRFuses.parts con quello contenuto nello .zip qui allegato così da poter selezionare il ATmega328PB e poter programmare i Fuses e leggere/scrivere i .hex

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

inutile riscrivere un core da capo.
Nessuno vuole scrivere un core da capo, si prende quello del 328 e si integra quello che manca.
Comunque non è solo questione di mettere delle semplici #if def e dei pin, tocca inserire tutti i registri mancanti delle periferiche aggiuntive e il codice per gestirle.
Devo ancora scaricare l'ultima toolchain Atmel, che dovrebbe includere anche il 328PB, una volta viste le differenze non dovrebbe essere complicato includerle nel core di Arduino, però tocca aggiornare l'attuale toolchain altrimenti non riconosce il 328PB.
Scientia potentia est

PaoloP

#137
Jan 30, 2016, 11:48 am Last Edit: Jan 30, 2016, 11:50 am by PaoloP
Le toolchain vengono aggiornate con molta più frequenza di prima.
Comunque l'attuale 3.5.0 di Atmel non supporta il 328PB
--> http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.0/avr8-gnu-toolchain-3.5.0.1662-readme.pdf

astrobeed

Le toolchain vengono aggiornate con molta più frequenza di prima.
Atmel le aggiorna ogni volta che viene corretto un bug o rilasciati nuovi modelli di micro, purtroppo Arduino è sempre qualche passo indietro con l'aggiornamento della toolchain.
Attualmente il 328PB non è presente nella toolchain di Arduino, verificato adesso, ed è un micro che è in circolazione da più di 4 mesi.
Scientia potentia est

PaoloP

Stavano già lavorando alla 3.5.0 (https://github.com/arduino/toolchain-avr/tree/trecinquezero). Ma Federico adesso non è più del team.
Io ho notato, e lo vedete anche da quanto poco aggiorno il topic sulle novità, che hanno rallentato lo sviluppo. Credo si stiano dedicando a Create che credo venga presentato il prossimo A-DAY.

vbextreme

Aggiungere i registri per il PB non è un grosso lavoro, io ho riscritto tutto il 328 in una settimana.
Alla fine è solo da modificare un pò di header, solo che se facciamo noi dopo quando esce l'ufficiale tocca risistemare tutto.
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

Aggiungere i registri per il PB non è un grosso lavoro, io ho riscritto tutto il 328 in una settimana.
Ho qualche dubbio sul fatto che rilasciano il core per il 328PB visto che non esiste nessuna scheda ufficiale che lo utilizza.
Scientia potentia est

vbextreme

io mi riferivo ai file che servono a GCC praticamente è solo un insieme di header, se l'instrunction set è veramente uguale a noi basta dire a GCC che la mcu è 328p poi gli passiamo una macro da riga di comando tipo -D_AVR_328PB_NOOFFICIAL in questo modo abbiamo il controllo che ci serve per includere i vari io.h che dovremmo riscrivere, poca roba.
Per il core Arduino il discorso è un pò più complesso, in primis scordiamoci che accettino delle PR su un prodotto non ufficiale e quindi dovremmo rilasciare il nostro core, questo sarà necessario anche per poter controllare la fase di compilazione in maniera pulita.
Si dovrebbe riuscire anche senza core separato perché il core Arduino è l'ultimo ad essere compilato e quindi con qualche astuzia riusciamo a fargli fare ciò che vogliamo noi, questo però implicherebbe un brutto lavoro sporco, difficile da eseguire e subito pronto a fallire.
Io opterei dunque per il core separato, in modo che inizialmente sarà usato solo la parte non ufficiale con la fake 328p poi tra qualche mese, quando si sarà stabilizzato il nuovo chip includeremo anche il compilatore.
Questa per me sembra la soluzione migliore.
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

Per aggiornare la toolchain Atmel 3.5.0 servono questi tre file:

libatmega328pb.a
iom328pb.h
crtatmega328pb.o

libatmega328pb.a e crtatmega328pb.o vanno messi in "/avr/lib".
iom328pb.h va messo in"avr/include/avr".

I tre file li trovate nell'allegato.
Scientia potentia est

vbextreme

non c'è il sorgente della libreria libatmega328pb.a?
va passata al linker durante la fase di compilazione, il la iom è solo la parte che dice il nome a che indirizzo corrisponde, ma non capisco a cosa serva quel file oggetto.
Ci guardo e provo a compilare non appena sono a casa.
Hai provato a compilare sull'Atmel studio? cosa mette come flags?

Bisogna aprire un repository per il nuovo core.
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

astrobeed

Quello che ho postato non è un core, sono i file patch che fornisce Atmel per il 328PB, da usare con la toolchain 3.5 in versione standalone.
Scientia potentia est

Pelletta

Ho qualche dubbio sul fatto che rilasciano il core per il 328PB visto che non esiste nessuna scheda ufficiale che lo utilizza.

Anche per gli ATmega644/1284 non c'è una scheda ufficiale ma sono stati aggiunti... si vedrà

PaoloP

Se facciamo una PR abbiamo buone possibilità che venga implementa, d'altronde è una variante del 328.

vbextreme

@Astro, rettifico tutto ho trovato questo, quindi avr-gcc supporta già 328pb e possiamo scrivere mcu=328pb, solo che tocca scaricare l'ultima versione del compilatore e compilarlo.
Ma il problema del core Arduino rimane, se non rilasciano l'ultima versione di avr-gcc bisogna per forza rilasciare il core separato, altrimenti non possono compilarlo.

Comunque appena sono a casa faccio 2/3 mila prove, voglio vedere se la versione attuale di avr-gcc che usa Arduino supporta 328pb.
Prima bisogna controllare che il compilatore e il linker siano OK poi vediamo come implementare il core Arduino.
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

vbextreme

Allora, io non uso l' avr-gcc che fornisce arduino perchè naturalmente è per x86. La mia versione è la 4.8.2 e non supporta la 328pb
Ora sto scaricando gcc 5.3 e lo provo a compilare, solo che ho finito lo spazio su hd, ho rimasto 200mb xD
Easy framework linguaggio C: https://github.com/vbextreme/EasyFramework
Hack your life: http://vbextreme.netai.net/
Unoffical Telegram group: https://telegram.me/joinchat/ALRu8ACkdTdXyz-2P7v13A

Go Up