Parliamo di cose serie.
avr-libc è ferma alla versione 2.0, attualmente vedo poche speranze che il progetto vada avanti.
avr-gcc è alla versione 9.2 dove c'è apparente supporto per le nuove mcu con periferiche indipendenti come attiny817-814 ecc.
Microchip da la possibilità di scaricare i device support file da qui:http://packs.download.atmel.com/
Alcuni di questi file sono utili per ricavare gli header file da includere ed in generale per automatizzare la generazione del tree dei sorgenti di avr-libc per poi fare il build. Se questa prospettiva si rivela funzionale sarà possibile mantenere il progetto con meno lavoro si spera.
Qualcuno ha già provato a fare questo lavoro e lo trovate qui.
Il build di quel tree non compila del tutto, il motivo risiede nel include/avr/makefile.am dove la riga 646 ha 4 spazi anziché un TAB. (make vuole il TAB).
Risolto questo saltano altri problemi, il più importate si presenta nel momento di compilare malloc.c, l'errore è il seguente:
avr-gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../../common -I../../../include -I../../../include -Wall -W -Wstrict-prototypes -mmcu=avr2 -D__COMPILING_AVR_LIBC__ -mcall-prologues -Os -MT malloc.o -MD -MP -MF .deps/malloc.Tpo -c -o malloc.o ../../../libc/stdlib/malloc.c
In file included from ../../../libc/stdlib/malloc.c:38:
../../../libc/stdlib/malloc.c: In function 'malloc':
../../../libc/stdlib/stdlib_private.h:90:34: error: 'AVR_STACK_POINTER_REG' undeclared (first use in this function)
90 | #define STACK_POINTER() ((char *)AVR_STACK_POINTER_REG)
| ^~~~~~~~~~~~~~~~~~~~~
../../../libc/stdlib/malloc.c:165:8: note: in expansion of macro 'STACK_POINTER'
165 | cp = STACK_POINTER() - __malloc_margin;
| ^~~~~~~~~~~~~
Come si vede sta compilando per AVR2.
AVR_STACK_POINTER_REG è una macro creata se esiste la macro SP.
Tutte le mcu appartenenti al gruppo AVR2 hanno 8k e l'indirizzo dello Stack pointer dovrebbe essere lo stesso.
Quando si compila per AVR3 ecc la malloc viene nuovamente compilata per poi fare parte di libc.a, quindi un libc.a per gruppo (AVR2, 3, 4, 5 ecc).
La compilazione potrebbe non andare a buon fine perché avr-gcc installato nel mio sistema non fornisce supporto per AVR2 e mancano quindi gli specfile.
Devo provare se eliminando AVR2 (e tutti gli altri gruppi non supportati da avr-gcc) da avr-libc per vedere se almeno compila con successo.
PS: mi scoccia non potere usare alcune MCU interessanti come i nuovi attiny.
Ciao.