Non so quanti lo hanno notato, ma in data 12 Agosto 2014, la pagina dei moduli di AVR Libc è stata aggiornata all'ultima release.
In basso, come in passato, sono riportati una serie di interessanti esempi d'uso
Ricordo che AVR Libc è automaticamente inclusa e quindi sempre a disposizione anche quando si usa il normale IDE di Arduino. Essa contiene un infinità di utilissime funzioni che possono evitare l'utilizzo di ben più pesanti classi c++ per fare le stesse cose
gpb01:
Essa contiene un infinità di utilissime funzioni che possono evitare l'utilizzo di ben più pesanti classi c++ per fare le stesse cose
Ma vuoi mettere la comodità di usare una bella classe C++ con tutte le sue decine di byte di flash di sovraccarico rispetto al doversi sbattere per usare una funzione in C?
nid69ita:
Sbaglio o bisogna usare almeno ide 1.5.x per avere quelle lib allineate a quella release ( forse neppure) ?
La 1.0.x ha versione vecchia di AVR libc, giusto ?
Probabilmente il 100% solo in Atmel Studio, ma ... un buon 80-90% è disponibile fin dall'IDE 1.0 XD XD XD
La 1.0.5 di sicuro è fuori gioco perché ha una toolchain vecchia di anni. Nell'ultima 1.5.7 ci dovrebbe essere una toolchain parecchio aggiornata, andrebbero controllate le versioni dei vari tool.
leo72:
La 1.0.5 di sicuro è fuori gioco perché ha una toolchain vecchia di anni.
Non vuol dire nulla, la avr libc è una raccolta di funzioni C Ansi che funzionano con qualunque versione del compilatore avr gcc, ovviamente rimane fuori il supporto alle periferiche specifiche dei processori non supportati dalla versione del compilatore che si utilizza.
Semmai c'è da fare un discreto lavoro per includere la nuova versione dentro l'ambiente di lavoro Arduino, la cosa potrebbe essere semplice da fare per chi usa Linux, un pelino più complessa per Windows e, forse, per MAC.
E' ovvio che se sai come fare, puoi sostituire la toolchain con quella aggiornata in pochi passaggi. Ad esempio io sul mio computer ho 2 versioni di entrambi i rami dell'IDE, la prima con la versione dell'IDE allegata e l'altra con l'ultima toolchain patchata Atmel disponibile. Tengo entrambe perché per progetti da ridistribuire uso le versioni "lisce" per compatibilità con chi non ha i tool aggiornati.
Ho installato da poco AtmelStudio 7, alla fine mi sono deciso ad abbandonare il vetusto AvrStudio 4, e curiosando dentro le varie definizioni per il 328PB risulta questa cosa all'interno del file "specs-atmega328pb".
*avrlibc_startfile:
crtatmega328pb.o%s
Cosa che mi porta a pensare ad una modifica fatta direttamente da Atmel alle avrlibc per aggiungere il supporto al 328PB.
Download --> Index of /releases/avr-libc/
Ma non saprei come integrarle nell'IDE.
Inoltre considerate che anche nell'ultima toolchain 3.5.0 di Atmel c'è la 1.8.0.
Quindi si dovrà aspettare parecchio prima che venga comunque integrata da ATmel.
Cosa che mi porta a pensare ad una modifica fatta direttamente da Atmel alle avrlibc per aggiungere il supporto al 328PB.
Se guardi dentro il sorgente di avr-libc trovi degli script python i quali servono a generare codice C a partire dal file xml di proprietà di Atmel.
Quindi se il file xml di Atmel contiene il tag 328PB verrà generato del codice anche per questa MCU.
Poi tocca vedere come aggiungere il 328PB alle binutils e a avr-gcc.
vbextreme tempo permettendo è in grado di fare tutto ciò, ma si perderà tra i makefile e script se non riceve supporto dall'esterno.
Il linker ha bisogno della descrizione della MCU perché dalla descrizione genera gli ldscript, almeno 3 per architettura, il 328PB dovrebbe appartenere sempre ad avr5.
Per gcc il primo obbiettivo dovrebbe essere quello di costatare dopo la compilazione che avr-gcc -dumpspecs mostri anche il 328PB. Quasi sicuramente ci sono degli script ma di questi non ho la minima info.
non ho molto tempo.
Ma ho scoperto che gcc prevede la compilazione di mcu non ancora supportate, atmel dovrebbe fare proprio ciò nel suo omonimo Studio.
quindi dovrebbe bastare ricompilare la libc con il file
"avr-libc/include/avr/iom328pb.h"
poi quando si vuole compilare per il 328pb bisogna fare cosi:
avr-gcc -mcu=avr5 -D__AVR_ATmega328pb__ ...
appena ho qualche ora libera riprovo con il nuovo metodo.
Hanno finalmente messo le note relative alla pubblicazione della 2.0 (che mancavano) ...
avr-libc 2.0.0 released inviato da joerg_wunsch, lun 15 feb 2016 23:16:29 CET - 0 risposte
Version 2.0.0 of avr-libc has been released.
The main reason for the version jump was that support for GCC 5+ has been added, which uses a different mulitilib
layout.
Apart from that, there are numerous small changes and bugfixes
that went into the tree since the previous release 1.5 years
ago.
... aspettiamo che Atmel si svegli ed aggiorni la sua toolchain e aspettiamo che la cosa venga poi implementata nell'IDE :
Ieri ho compilato GCC 5.3 e la avrlibc 2.0, va alla grande!
Ho anche modificato il file di Arduino IDE in modo che usi la nuova versione, compilato un paio di progetti senza nessun problema.