Pagina moduli AVR Libc aggiornata ...

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 :slight_smile:

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 :wink:

Guglielmo

gpb01:
Essa contiene un infinità di utilissime funzioni che possono evitare l'utilizzo di ben più pesanti classi c++ per fare le stesse cose :wink:

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? :stuck_out_tongue_closed_eyes:

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

Guglielmo

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.

Parlavo degli strumenti allegati all'IDE. :stuck_out_tongue:

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.

L'ultima versione rilasciata è la 1.8.1. (AVR C Runtime Library - Summary [Savannah])
Nell'ultima toolchain ATMEL (http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.4.4/) è presente la 1.8.0. così come nella precedente 3.4.3 integrata nell'IDE 1.5.7.

La 1.8.1 è stata rilasciata a marzo di quest'anno, la toolchain Atmel 3.4.4 invece a maggio. Strano che non l'abbiano inclusa.

Credo che la rilascino dopo dei test. E' possibile che tra marzo è maggio non abbiano avuto il tempo.

Non so se qualcuno l'ha notato, ma è stata rilasciala la AVRlibc 2.0.0 ;D ... la cui documentazione è sempre QUI.

Ora toccherà vedere se e quando verrà inclusa nella toolchain e se e quando verrà inclusa nel IDE.

Occorrerà anche vedere se il solito volontario QUI aggiornerà la sua versione "custom" dell'IDE (... dato che è già indietro).

Guglielmo

gpb01:
Non so se qualcuno l'ha notato, ma è stata rilasciala la AVRlibc 2.0.0

Tra i micro supportati manca il 328PB.

astrobeed:
Tra i micro supportati manca il 328PB.

Dicono :

Note that actual support for some newer devices depends on the ability of the compiler/assembler to support these devices at library compile-time.

... ed in effetti, senza quei files che abbiamo identificato, il 328PB non è ancora incluso nel compilatore ::slight_smile:

Guglielmo

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.

... infatti, anche se ... spero non ci voglia moltissimo prima che la nuova MCU venga ufficialmente supportata da avr gcc e dalla AVRlibc ::slight_smile:

Guglielmo

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.

Ciao.

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 ::slight_smile:

Guglielmo

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.

vbextreme:
Ieri ho compilato GCC 5.3 e la avrlibc 2.0, va alla grande!

Sto cercando di compilare sotto OS X ...
... ho scaricato avr-libc-2.0.0 , ho lanciato il configure così :

./configure --build=./config.guess --host=avr --quiet

... ed è andato tutto bene al che ho lanciato il make e, dopo un bel po' esce con il seguente errore ...

avr-gcc -DHAVE_CONFIG_H -I. -I../../..  -I../../../common -I../../../include -I../../../include  -Wall -W -Wstrict-prototypes -mmcu=avrtiny -D__COMPILING_AVR_LIBC__ -mcall-prologues -Os  -MT asctime_r.o -MD -MP -MF .deps/asctime_r.Tpo -c -o asctime_r.o ../../../libc/time/asctime_r.c
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s: Assembler messages:
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:73: Error: illegal opcode elpm for mcu avrtiny
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:75: Error: register not supported
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:76: Error: register not supported
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:87: Error: illegal opcode elpm for mcu avrtiny
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:89: Error: register not supported
/var/folders/td/xjbgg2n97rl9wsy40_rsj90h0000gn/T//cc9ZiNbS.s:90: Error: register not supported
make[4]: *** [asctime_r.o] Error 1
make[3]: *** [check-recursive] Error 1
make[2]: *** [check-recursive] Error 1
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1

... che, onestamente, non capisco :confused:

Qualche indicazione/aiuto ? ? ?

Guglielmo