patchAVR C Runtime Library - Patches: patch #9543, Add avrxmega3 devices.

 
 

You are not allowed to post comments on this tracker with your current authentication level.

patch #9543: Add avrxmega3 devices.

Submitter:  Balint Cristian <cbalint>
Submitted:  Wed 17 Jan 2018 03:29:03 PM UTC
   
 
Category:  None Priority:  5 - Normal
Status:  None Privacy:  Public
Assigned to:  None Open/Closed:  Open

Jump to the original submission

Tue 23 Nov 2021 08:09:23 PM UTC, comment #34: 

Updated avrxmega3-v12.diff.xz:
  * Update wdt.h, sleep.h (based on avr8-toolchain-3.6.2.1778).

Thanks,
~Cristian.

Balint Cristian <cbalint>
Tue 23 Nov 2021 06:58:48 PM UTC, comment #33: 

wdt.h seems to have some issues that need fixing up. The wdt_enable() and wdt_disable() macros seem are completely inapplicable to the ATtiny416.

There seem to be similar issues in sleep.h

Joel Holdsworth <jhol>
Tue 16 Nov 2021 01:39:48 PM UTC, comment #32: 

Updated avrxmega3-v11.diff.xz with latest AVR8X devices.
Rebased on latest *.ATDF (AVR8X only entries):
     Atmel.ATtiny_DFP.1.10.348.atpack
     Atmel.ATmega_DFP.1.7.374.atpack
Header generator error fixed for DWORD types (size=4).
Add FUSELOCK_DEFAULT values (as per newer original *.h)
New devices:
     attiny424, attiny426, attiny427,
     attiny824, attiny826, attiny827,
     attiny1624, attiny1626, attiny1627,
     attiny3224, attiny3226, attiny3227.


Tested it against SVN master.

Let me know about any help needed to merge this.


Thank you,
~Cristian.

Balint Cristian <cbalint>
Tue 16 Nov 2021 01:09:08 PM UTC, comment #31: 

Is it possible to cut the Gordian knot? This patch applies cleanly and works perfectly - as far as I can tell from my testing. I see no reason why it's necessary for it to be tangled up with these other long-standing issues. I would imagine this patch could be applied, and a release made in a couple of hours work.

Joel Holdsworth <jhol>
Mon 15 Nov 2021 06:55:42 PM UTC, comment #30: 

What would it take to get all these changes merged?

Joel Holdsworth <jhol>
Mon 15 Nov 2021 06:43:14 PM UTC, comment #29: 

This patch is best integrated after the changes from


https://savannah.nongnu.org/bugs/?49567

and

https://savannah.nongnu.org/bugs/?57071

which will greatly reduce the number of conflicts.

Georg-Johann Lay <gjlayde>
Mon 15 Nov 2021 05:42:31 PM UTC, comment #28: 

Can we have this patch integrated and released? I have used it for a complex project on the ATtiny416, and have found no issues.

Joel Holdsworth <jhol>
Tue 01 Dec 2020 11:52:19 AM UTC, comment #27: 

comment #26:

> Great work all. As I am not so knowlegable@Linux, it took me a while to get that running, lots of compile problems, try and error, so I wanted to share what finally worked for me.
>



Thank you Wasti !
One issue as you pointed out is community support. We do best what we can, each person within their own area of expertise, but proper documentation and promotion is always an issue.

  • Also I recommend gcc 8.0.0 (very fist gcc8 release) for proper LTO (-Os, smallest possible size) working, anything >gcc8.0.0 will lead to 30% increase of binary (in some corner cases).* Spent a lot of time tracking down issues (by tracking commits) with LTO across gcc8 then gcc9 up to gcc10 and now with a list of commits/reverts I found hard even to raise the issue to the GCC community.






> # Other than in the manual below, I did install everything into the default path. No PREFIX, as prefixing did not work on my environment.
> # https://www.nongnu.org/avr-libc/user-manual/install_tools.html#install_avr_gcc
>
> # The following process did work for me.
> cat /proc/version
> #Linux version 5.4.0-52-generic (buildd@lgw01-amd64-060) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))
>
> sudo apt remove gcc-avr binutils-avr avr-libc
>
> # Important: close teminal and reopen to remove cached links to the binaries
>
> #set up directory
> mkdir ~/libc-compile
> cd ~/libc-compile
>
> #
> #compile and install binutils
> #
>
> wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.34.90.tar.xz
> tar -xf binutils-2.34.90.tar.xz
> cd binutils-2.34.90
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --disable-nls
> make
> sudo make install
>
> #check version
> avr-ld --version
>
> #
> #compile and install GCC, this takes a wile, have lunch...
> #
>
> cd ~/libc-compile
>
> git clone -b releases/gcc-10.1.0 --single-branch git://gcc.gnu.org/git/gcc.git
> ./contrib/download_prerequisites
>
> cd gcc
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2
> make
> sudo make install
>
> #check version
> avr-gcc --version
>
> #
> #patch, compile and install avr-libc
> #
> cd ~/libc-compile
>
> svn co svn://svn.savannah.nongnu.org/avr-libc/trunk
> cd trunk/avr-libc/
>
> wget -O - -q https://savannah.nongnu.org/patch/download.php?file_id=48974 >> avrxmega3-v10.diff.xz
> xz --decompress avrxmega3-v10.diff.xz
>
> patch -p0 < avrxmega3-v10.diff
> ./bootstrap
> ./configure --build=`./config.guess` --host=avr
> make
> sudo make install
>
> ###################################
> #now test if it compiles
> ###################################
>
> mkdir ~/libc-compile/test-program
> cd ~/libc-compile/test-program
>
> echo "#define _AVR_ATtiny1604_
> #include <avr/io.h>
> int
> main(void)
> {
>         while (1);
> }" >> main.c
>
> avr-gcc -std=c99 -Wall -g -Os -mmcu=avrxmega3 -DF_CPU=1200000 -I.  -o main.bin main.c
> avr-objcopy -j .text -j .data -O ihex main.bin main.hex
>
>
>
>  


comment #26:

> Great work all. As I am not so knowlegable@Linux, it took me a while to get that running, lots of compile problems, try and error, so I wanted to share what finally worked for me.
>
> # Other than in the manual below, I did install everything into the default path. No PREFIX, as prefixing did not work on my environment.
> # https://www.nongnu.org/avr-libc/user-manual/install_tools.html#install_avr_gcc
>
> # The following process did work for me.
> cat /proc/version
> #Linux version 5.4.0-52-generic (buildd@lgw01-amd64-060) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))
>
> sudo apt remove gcc-avr binutils-avr avr-libc
>
> # Important: close teminal and reopen to remove cached links to the binaries
>
> #set up directory
> mkdir ~/libc-compile
> cd ~/libc-compile
>
> #
> #compile and install binutils
> #
>
> wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.34.90.tar.xz
> tar -xf binutils-2.34.90.tar.xz
> cd binutils-2.34.90
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --disable-nls
> make
> sudo make install
>
> #check version
> avr-ld --version
>
> #
> #compile and install GCC, this takes a wile, have lunch...
> #
>
> cd ~/libc-compile
>
> git clone -b releases/gcc-10.1.0 --single-branch git://gcc.gnu.org/git/gcc.git
> ./contrib/download_prerequisites
>
> cd gcc
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2
> make
> sudo make install
>
> #check version
> avr-gcc --version
>
> #
> #patch, compile and install avr-libc
> #
> cd ~/libc-compile
>
> svn co svn://svn.savannah.nongnu.org/avr-libc/trunk
> cd trunk/avr-libc/
>
> wget -O - -q https://savannah.nongnu.org/patch/download.php?file_id=48974 >> avrxmega3-v10.diff.xz
> xz --decompress avrxmega3-v10.diff.xz
>
> patch -p0 < avrxmega3-v10.diff
> ./bootstrap
> ./configure --build=`./config.guess` --host=avr
> make
> sudo make install
>
> ###################################
> #now test if it compiles
> ###################################
>
> mkdir ~/libc-compile/test-program
> cd ~/libc-compile/test-program
>
> echo "#define _AVR_ATtiny1604_
> #include <avr/io.h>
> int
> main(void)
> {
>         while (1);
> }" >> main.c
>
> avr-gcc -std=c99 -Wall -g -Os -mmcu=avrxmega3 -DF_CPU=1200000 -I.  -o main.bin main.c
> avr-objcopy -j .text -j .data -O ihex main.bin main.hex
>
>
>
>  


comment #26:

> Great work all. As I am not so knowlegable@Linux, it took me a while to get that running, lots of compile problems, try and error, so I wanted to share what finally worked for me.
>
> # Other than in the manual below, I did install everything into the default path. No PREFIX, as prefixing did not work on my environment.
> # https://www.nongnu.org/avr-libc/user-manual/install_tools.html#install_avr_gcc
>
> # The following process did work for me.
> cat /proc/version
> #Linux version 5.4.0-52-generic (buildd@lgw01-amd64-060) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))
>
> sudo apt remove gcc-avr binutils-avr avr-libc
>
> # Important: close teminal and reopen to remove cached links to the binaries
>
> #set up directory
> mkdir ~/libc-compile
> cd ~/libc-compile
>
> #
> #compile and install binutils
> #
>
> wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.34.90.tar.xz
> tar -xf binutils-2.34.90.tar.xz
> cd binutils-2.34.90
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --disable-nls
> make
> sudo make install
>
> #check version
> avr-ld --version
>
> #
> #compile and install GCC, this takes a wile, have lunch...
> #
>
> cd ~/libc-compile
>
> git clone -b releases/gcc-10.1.0 --single-branch git://gcc.gnu.org/git/gcc.git
> ./contrib/download_prerequisites
>
> cd gcc
>
> mkdir obj-avr
> cd obj-avr
> ../configure --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2
> make
> sudo make install
>
> #check version
> avr-gcc --version
>
> #
> #patch, compile and install avr-libc
> #
> cd ~/libc-compile
>
> svn co svn://svn.savannah.nongnu.org/avr-libc/trunk
> cd trunk/avr-libc/
>
> wget -O - -q https://savannah.nongnu.org/patch/download.php?file_id=48974 >> avrxmega3-v10.diff.xz
> xz --decompress avrxmega3-v10.diff.xz
>
> patch -p0 < avrxmega3-v10.diff
> ./bootstrap
> ./configure --build=`./config.guess` --host=avr
> make
> sudo make install
>
> ###################################
> #now test if it compiles
> ###################################
>
> mkdir ~/libc-compile/test-program
> cd ~/libc-compile/test-program
>
> echo "#define _AVR_ATtiny1604_
> #include <avr/io.h>
> int
> main(void)
> {
>         while (1);
> }" >> main.c
>
> avr-gcc -std=c99 -Wall -g -Os -mmcu=avrxmega3 -DF_CPU=1200000 -I.  -o main.bin main.c
> avr-objcopy -j .text -j .data -O ihex main.bin main.hex
>
>
>
>

Balint Cristian <cbalint>
Tue 01 Dec 2020 08:06:57 AM UTC, comment #26: 

Great work all. As I am not so knowlegable@Linux, it took me a while to get that running, lots of compile problems, try and error, so I wanted to share what finally worked for me.

# Other than in the manual below, I did install everything into the default path. No PREFIX, as prefixing did not work on my environment.
# https://www.nongnu.org/avr-libc/user-manual/install_tools.html#install_avr_gcc

# The following process did work for me.
cat /proc/version
#Linux version 5.4.0-52-generic (buildd@lgw01-amd64-060) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))

sudo apt remove gcc-avr binutils-avr avr-libc

# Important: close teminal and reopen to remove cached links to the binaries

#set up directory
mkdir ~/libc-compile
cd ~/libc-compile

#
#compile and install binutils
#

wget ftp://sourceware.org/pub/binutils/snapshots/binutils-2.34.90.tar.xz
tar -xf binutils-2.34.90.tar.xz
cd binutils-2.34.90

mkdir obj-avr
cd obj-avr
../configure --target=avr --disable-nls
make
sudo make install

#check version
avr-ld --version

#
#compile and install GCC, this takes a wile, have lunch...
#

cd ~/libc-compile

git clone -b releases/gcc-10.1.0 --single-branch git://gcc.gnu.org/git/gcc.git
./contrib/download_prerequisites

cd gcc

mkdir obj-avr
cd obj-avr
../configure --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2
make
sudo make install

#check version
avr-gcc --version

#
#patch, compile and install avr-libc
#
cd ~/libc-compile

svn co svn://svn.savannah.nongnu.org/avr-libc/trunk
cd trunk/avr-libc/

wget -O - -q https://savannah.nongnu.org/patch/download.php?file_id=48974 >> avrxmega3-v10.diff.xz
xz --decompress avrxmega3-v10.diff.xz

patch -p0 < avrxmega3-v10.diff
./bootstrap
./configure --build=`./config.guess` --host=avr
make
sudo make install

###################################
#now test if it compiles
###################################

mkdir ~/libc-compile/test-program
cd ~/libc-compile/test-program

echo "#define _AVR_ATtiny1604_
#include <avr/io.h>
int
main(void)
{
        while (1);
}" >> main.c

avr-gcc -std=c99 -Wall -g -Os -mmcu=avrxmega3 -DF_CPU=1200000 -I.  -o main.bin main.c
avr-objcopy -j .text -j .data -O ihex main.bin main.hex




wasti <wastis>
Sun 08 Nov 2020 04:31:11 PM UTC, comment #25: 

comment #22:

> When I attempt to apply any of them to libc-2.0.0, I get lots of complaints about missing files, e.g. "devtools/generate_iosym.sh". That file doesn't exist in libc-1.8.1 either.


Same problem here. It says "devtools/gen-avr-lib-tree.sh" cannot be found, even if the file is right here. After some head scratching, I realized the patch must be applied as level "-p0". Instead of "patch < avrxmega3-v10.diff", it should be "patch -p0 < avrxmega3-v10.diff". I've successfully applied the patch to SVN trunk r2551.

Tom Li <biergaizi>
Thu 30 Apr 2020 03:08:57 PM UTC, comment #24: 
  • Updated avrxmega3-v10.diff.xz with latest AVR8X devices.
  • Rebased on *.ATDF (AVR8X only) from latest:

     Atmel.ATtiny_DFP.1.4.310.atpack
     Atmel.ATmega_DFP.1.4.351.atpack

  • Header generator updated to python3
  • Update FUSE generation in header (as per original *.h)
  • New devices:

     atmega808,atmega809,
     atmega1608,atmega1609,
     atmega4808,atmega4809

  • GCC 9.3.1 is needed for newer devices


Balint Cristian <cbalint>
Thu 30 Apr 2020 03:03:09 PM UTC, comment #23: 


comment #22:

> I would like to use those new ATtiny devices. It would be great if those newer devices were supported, and I am willing to help with that.
> People here seem to have successfully used the patches here, but I seem unable to find where to apply them: Do we need just the last once (v9)? Or do we need to apply them in order? What version of libc do they apply to? Do they apply before or after bootstrap/configure/build/install?
> When I attempt to apply any of them to libc-2.0.0, I get lots of complaints about missing files, e.g. "devtools/generate_iosym.sh". That file doesn't exist in libc-1.8.1 either.
>

Balint Cristian <cbalint>
Wed 22 Apr 2020 12:46:03 PM UTC, comment #22: 

I would like to use those new ATtiny devices. It would be great if those newer devices were supported, and I am willing to help with that.
People here seem to have successfully used the patches here, but I seem unable to find where to apply them: Do we need just the last once (v9)? Or do we need to apply them in order? What version of libc do they apply to? Do they apply before or after bootstrap/configure/build/install?
When I attempt to apply any of them to libc-2.0.0, I get lots of complaints about missing files, e.g. "devtools/generate_iosym.sh". That file doesn't exist in libc-1.8.1 either.

Yves Delley <burnpanck>
Mon 18 Nov 2019 08:02:11 AM UTC, comment #21: 

FYI, support for devices from the 0-series like ATmega4808 (also filed under avrxmega3) has been added to avr-gcc:

https://gcc.gnu.org/PR92545

Georg-Johann Lay <gjlayde>
Tue 12 Mar 2019 09:25:37 PM UTC, comment #20: 

I too have successfully used this patch to add support for ATtiny814 to my avr-libc. Can it be considered for mainline merging sometime please? This would help improve the uptake of these new chips.

Paul Evans <leonerd>
Thu 21 Feb 2019 11:57:45 AM UTC, comment #19: 

I have successfully used this patch with the ATtiny817 which works well. Are there concrete plans to get this merged?

Thanks,
Sven

Sven <svenschwermer>
Tue 25 Dec 2018 07:04:19 PM UTC, comment #18: 
  • Updated avrxmega3-v9.diff.bz2 with latest AVR8X devices.
  • Rebased on .ATDF from latest Atmel.ATtiny_DFP.1.3.229.atpack


The python header generator still generate 1:1 as upstream. Validated against latest (9/28/2018) avr8-gnu-toolchain-3.6.2.1759-linux.any.x86_64.tar.gz by DIFF-ing, and difference is cosmetic only.

Balint Cristian <cbalint>
Sun 01 Jul 2018 01:44:39 PM UTC, comment #17: 
  • Updated avrxmega3-v8.diff.bz2 with latest AVR8X devices.
  • Rebased on .ATDF from latest Atmel.ATtiny_DFP.1.3.172.atpack.zip




(file #44476)

Balint Cristian <cbalint>
Sat 31 Mar 2018 10:00:09 AM UTC, comment #16: 

Cristian,
That compiles fine but for some warnings.

Unfortunately I am not in a position to test the set up. I am building an Ada toolchain. I guess little of this stuff will be used, since I make Ada spec files with the MCU specifics.
But if you have some piece of program and tell me howto I will gladly compile and see whether the generated code makes sense or not.

You might also want to tell me what to do about some of the warnings, then I will patch for it.
This is the most annoying one:


../../../include/ctype.h:112:1: warning: ignoring attribute 'const' in declaration of a built-in function 'isgraph' because it conflicts with attribute 'pure' [-Wattributes]
 extern int isgraph(int __c) __ATTR_CONST__;
 ^~~~~~
<built-in>: note: previous declaration here


ctype.h is full of them.

Enjoy your Easter holiday.

j.

jan de kruyf <deikruve>
Sat 31 Mar 2018 12:06:46 AM UTC, comment #15: 

Jan,

  • Can try v7 of patch ?


  I missed a # sign in header generator, included a fix for generator and also reincluded generated header files. It was my mistake during assamble of V6 patch.

Balint Cristian <cbalint>
Fri 30 Mar 2018 04:52:28 PM UTC, comment #14: 

Cristian, hello.

I just tried to compile avr-libc svn2546 with patches from avrxmega3-v6.diff.bz2. compiler gcc8.0.1 built for avr.

I get some errors which are at least partly from this patch.
I did not get any strange messages before this just some warnings.
Also the last time I built it without the patch it looked right.
 
Could you have a look at it?


In file included from ../../../../include/avr/io.h:456,
                 from ../../../../libc/misc/eewr_block_xmega.c:4:
../../../../include/avr/iotn1614.h:5623:1: error: unknown type name 'define'
 define PERIOD0  (unsigned char)~_BV(0)  /* Watchdog Timeout Period Bit 0 */
 ^~~~~~
../../../../include/avr/iotn1614.h: In function 'PERIOD0':
../../../../include/avr/iotn1614.h:5623:32: error: expected declaration specifiers before '~' token
 define PERIOD0  (unsigned char)~_BV(0)  /* Watchdog Timeout Period Bit 0 */
                                ^
In file included from ../../../../include/avr/io.h:626,
                 from ../../../../libc/misc/eewr_block_xmega.c:4:
../../../../include/avr/fuse.h:234:3: error: expected declaration specifiers before '__fuse_t'
 } __fuse_t;
   ^~~~~~~~
In file included from ../../../../include/stdlib.h:48,
                 from ../../../../include/assert.h:65,
                 from ../../../../libc/misc/eewr_block_xmega.c:8:
/home/jan/programs-8/avrada/lib/gcc/avr/8.0.1/include/stddef.h:216:23: error: storage class specified for parameter 'size_t'
 typedef __SIZE_TYPE__ size_t;
                      ^~~~~~
/home/jan/programs-8/avrada/lib/gcc/avr/8.0.1/include/stddef.h:328:24: error: storage class specified for parameter 'wchar_t'
 typedef __WCHAR_TYPE__ wchar_t;
                        ^~~~~~~
In file included from ../../../../include/assert.h:65,
                 from ../../../../libc/misc/eewr_block_xmega.c:8:
../../../../include/stdlib.h:73:3: error: storage class specified for parameter 'div_t'
 } div_t;
   ^~~~~
../../../../include/stdlib.h:79:3: error: storage class specified for parameter 'ldiv_t'
 } ldiv_t;
   ^~~~~~
../../../../include/stdlib.h:82:15: error: storage class specified for parameter '__compar_fn_t'
 typedef int (*__compar_fn_t)(const void *, const void *);
               ^~~~~~~~~~~~~
../../../../include/stdlib.h:116:13: error: storage class specified for parameter 'abort'
 extern void abort(void) __ATTR_NORETURN__;
             ^~~~~
../../../../include/stdlib.h:121:12: error: storage class specified for parameter 'abs'
 extern int abs(int __i) __ATTR_CONST__;
            ^~~
../../../../include/stdlib.h:130:13: error: storage class specified for parameter 'labs'
 extern long labs(long __i) __ATTR_CONST__;
             ^~~~
../../../../include/stdlib.h:153:61: error: expected declaration specifiers or '...' before 'size_t'
 extern void *bsearch(const void *__key, const void *__base, size_t __nmemb,
                                                             ^~~~~~
../../../../include/stdlib.h:154:8: error: expected declaration specifiers or '...' before 'size_t'
        size_t __size, int (*__compar)(const void *, const void *));
        ^~~~~~
../../../../include/stdlib.h:162:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'div'
 extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__;
              ^~~
../../../../include/stdlib.h:168:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ldiv'
 extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__;
              ^~~~
../../../../include/stdlib.h:185:33: error: expected declaration specifiers or '...' before 'size_t'
 extern void qsort(void *__base, size_t __nmemb, size_t __size,
                                 ^~~~~~
../../../../include/stdlib.h:185:49: error: expected declaration specifiers or '...' before 'size_t'
 extern void qsort(void *__base, size_t __nmemb, size_t __size,
                                                 ^~~~~~
../../../../include/stdlib.h:186:5: error: expected declaration specifiers or '...' before '__compar_fn_t'
     __compar_fn_t __compar);
     ^~~~~~~~~~~~~
../../../../include/stdlib.h:218:13: error: storage class specified for parameter 'strtol'
 extern long strtol(const char *__nptr, char **__endptr, int __base);
             ^~~~~~
../../../../include/stdlib.h:252:22: error: storage class specified for parameter 'strtoul'
 extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base);
                      ^~~~~~~
../../../../include/stdlib.h:264:13: error: storage class specified for parameter 'atol'
 extern long atol(const char *__s) __ATTR_PURE__;
             ^~~~
../../../../include/stdlib.h:264:1: warning: 'pure' attribute ignored [-Wattributes]
 extern long atol(const char *__s) __ATTR_PURE__;
 ^~~~~~
../../../../include/stdlib.h:276:12: error: storage class specified for parameter 'atoi'
 extern int atoi(const char *__s) __ATTR_PURE__;
            ^~~~
../../../../include/stdlib.h:276:1: warning: 'pure' attribute ignored [-Wattributes]
 extern int atoi(const char *__s) __ATTR_PURE__;
 ^~~~~~
../../../../include/stdlib.h:288:13: error: storage class specified for parameter 'exit'
 extern void exit(int __status) __ATTR_NORETURN__;
             ^~~~
../../../../include/stdlib.h:300:21: error: expected declaration specifiers or '...' before 'size_t'
 extern void *malloc(size_t __size) __ATTR_MALLOC__;
                     ^~~~~~
../../../../include/stdlib.h:307:13: error: storage class specified for parameter 'free'
 extern void free(void *__ptr);
             ^~~~
../../../../include/stdlib.h:312:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__malloc_margin'
 extern size_t __malloc_margin;
               ^~~~~~~~~~~~~~~
../../../../include/stdlib.h:317:14: error: storage class specified for parameter '__malloc_heap_start'
 extern char *__malloc_heap_start;
              ^~~~~~~~~~~~~~~~~~~
../../../../include/stdlib.h:322:14: error: storage class specified for parameter '__malloc_heap_end'
 extern char *__malloc_heap_end;
              ^~~~~~~~~~~~~~~~~
../../../../include/stdlib.h:329:21: error: expected declaration specifiers or '...' before 'size_t'
 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
                     ^~~~~~
../../../../include/stdlib.h:329:36: error: expected declaration specifiers or '...' before 'size_t'
 extern void *calloc(size_t __nele, size_t __size) __ATTR_MALLOC__;
                                    ^~~~~~
../../../../include/stdlib.h:348:35: error: expected declaration specifiers or '...' before 'size_t'
 extern void *realloc(void *__ptr, size_t __size) __ATTR_MALLOC__;
                                   ^~~~~~
../../../../include/stdlib.h:350:15: error: storage class specified for parameter 'strtod'
 extern double strtod(const char *__nptr, char **__endptr);
              ^~~~~~
../../../../include/stdlib.h:361:15: error: storage class specified for parameter 'atof'
 extern double atof(const char *__nptr);
               ^~~~
../../../../include/stdlib.h:383:12: error: storage class specified for parameter 'rand'
 extern int rand(void);
            ^~~~
../../../../include/stdlib.h:387:13: error: storage class specified for parameter 'srand'
 extern void srand(unsigned int __seed);
             ^~~~~
../../../../include/stdlib.h:394:12: error: storage class specified for parameter 'rand_r'
 extern int rand_r(unsigned long *__ctx);
            ^~~~~~
../../../../include/stdlib.h:430:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
../../../../include/stdlib.h:475:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
../../../../include/stdlib.h:518:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
../../../../include/stdlib.h:560:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
../../../../include/stdlib.h:590:13: error: storage class specified for parameter 'random'
 extern long random(void);
             ^~~~~~
../../../../include/stdlib.h:595:13: error: storage class specified for parameter 'srandom'
 extern void srandom(unsigned long __seed);
             ^~~~~~~
../../../../include/stdlib.h:603:13: error: storage class specified for parameter 'random_r'
 extern long random_r(unsigned long *__ctx);
            ^~~~~~~~
../../../../include/stdlib.h:649:14: error: storage class specified for parameter 'dtostre'
 extern char *dtostre(double __val, char *__s, unsigned char __prec,
              ^~~~~~~
../../../../include/stdlib.h:666:14: error: storage class specified for parameter 'dtostrf'
 extern char *dtostrf(double __val, signed char __width,
              ^~~~~~~
../../../../include/stdlib.h:685:12: error: storage class specified for parameter 'atexit'
 extern int atexit(void (*)(void));
            ^~~~~~
../../../../include/stdlib.h:686:12: error: storage class specified for parameter 'system'
 extern int system (const char *);
            ^~~~~~
../../../../include/stdlib.h:687:14: error: storage class specified for parameter 'getenv'
 extern char *getenv (const char *);
              ^~~~~~
In file included from ../../../../libc/misc/eewr_block_xmega.c:8:
../../../../include/assert.h:110:13: error: storage class specified for parameter '__assert'
 extern void __assert(const char *__func, const char *__file,
             ^~~~~~~~
In file included from ../../../../include/avr/eeprom.h:50,
                 from ../../../../libc/misc/eewr_block_xmega.c:10:
/home/jan/programs-8/avrada/lib/gcc/avr/8.0.1/include/stddef.h:149:26: error: storage class specified for parameter 'ptrdiff_t'
 typedef __PTRDIFF_TYPE__ ptrdiff_t;
                          ^~~~~~~~~
/home/jan/programs-8/avrada/lib/gcc/avr/8.0.1/include/stddef.h:437:3: error: storage class specified for parameter 'max_align_t'
 } max_align_t;
   ^~~~~~~~~~~
In file included from ../../../../libc/misc/eewr_block_xmega.c:10:
../../../../include/avr/eeprom.h:137:1: warning: 'pure' attribute ignored [-Wattributes]
 uint8_t eeprom_read_byte (const uint8_t *__p) __ATTR_PURE__;
 ^~~~~~~
../../../../include/avr/eeprom.h:142:1: warning: 'pure' attribute ignored [-Wattributes]
 uint16_t eeprom_read_word (const uint16_t *__p) __ATTR_PURE__;
 ^~~~~~~~
../../../../include/avr/eeprom.h:147:1: warning: 'pure' attribute ignored [-Wattributes]
 uint32_t eeprom_read_dword (const uint32_t *__p) __ATTR_PURE__;
 ^~~~~~~~
../../../../include/avr/eeprom.h:152:1: warning: 'pure' attribute ignored [-Wattributes]
 float eeprom_read_float (const float *__p) __ATTR_PURE__;
 ^~~~~
../../../../include/avr/eeprom.h:158:57: error: expected declaration specifiers or '...' before 'size_t'
 void eeprom_read_block (void *__dst, const void *__src, size_t __n);
                                                         ^~~~~~
../../../../include/avr/eeprom.h:185:58: error: expected declaration specifiers or '...' before 'size_t'
 void eeprom_write_block (const void *__src, void *__dst, size_t __n);
                                                          ^~~~~~
../../../../include/avr/eeprom.h:212:59: error: expected declaration specifiers or '...' before 'size_t'
 void eeprom_update_block (const void *__src, void *__dst, size_t __n);
                                                           ^~~~~~
../../../../libc/misc/eewr_block_xmega.c:55:13: error: storage class specified for parameter 'ccp_write_io'
 extern void ccp_write_io (volatile uint8_t *__ioaddr, uint8_t __value);
             ^~~~~~~~~~~~
In file included from ../../../../libc/misc/eewr_block_xmega.c:9:
../../../../common/sectionname.h:43:33: error: expected declaration specifiers before '__attribute__'
 #define ATTRIBUTE_CLIB_SECTION  __attribute__ ((section (STR(CLIB_SECTION))))
                                 ^~~~~~~~~~~~~
../../../../libc/misc/eewr_block_xmega.c:57:1: note: in expansion of macro 'ATTRIBUTE_CLIB_SECTION'
 ATTRIBUTE_CLIB_SECTION
 ^~~~~~~~~~~~~~~~~~~~~~
../../../../common/sectionname.h:43:33: error: expected declaration specifiers before '__attribute__'
 #define ATTRIBUTE_CLIB_SECTION  __attribute__ ((section (STR(CLIB_SECTION))))
                                 ^~~~~~~~~~~~~
../../../../libc/misc/eewr_block_xmega.c:93:1: note: in expansion of macro 'ATTRIBUTE_CLIB_SECTION'
 ATTRIBUTE_CLIB_SECTION
 ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../../../include/avr/io.h:456,
                 from ../../../../libc/misc/eewr_block_xmega.c:4:
../../../../include/avr/iotn1614.h:5623:8: error: old-style parameter declarations in prototyped function definition
 define PERIOD0  (unsigned char)~_BV(0)  /* Watchdog Timeout Period Bit 0 */
        ^~~~~~~
../../../../include/avr/iotn1614.h:5623:18: error: parameter name omitted
 define PERIOD0  (unsigned char)~_BV(0)  /* Watchdog Timeout Period Bit 0 */
                  ^~~~~~~~~~~~~
../../../../libc/misc/eewr_block_xmega.c:120: error: expected '{' at end of input


../../../../libc/misc/eewr_block_xmega.c:116:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
Makefile:632: recipe for target 'eewr_block_xmega.o' failed


Cheers, Jan.

jan de kruyf <deikruve>
Tue 23 Jan 2018 02:09:12 PM UTC, comment #13: 

The avrxmega3-v6.diff.bz2 includes a ATDF parser for AVR8X.


- The new parser addition does:

  • Generates iotn*.h just from atdf schema.
  • Parse only AVR8X family types (constrained in script).
  • Adds few alieases (hardcoded) as older coding-style.
  • Headers generated are functional the same as Atmel's 3.6.1.
  • Parser license is BSD (the very avr-libc one).



- BTW, One of main difference BSD vs Apache would be that Apache license grants patents (patents will not circumvent the license terms). But I am not lawyer.

Balint Cristian <cbalint>
Fri 19 Jan 2018 10:42:09 AM UTC, comment #12: 

Mixing the licenses is doable, it's just a little cumbersome
since we need to LICENSE documents then at the toplevel.

If #b is not too much work, it would be my personally preferred
solution, as it makes us completely independent from Microchip.
They've chosen to distribute their own version of the headers
independently from us anyway.

Joerg Wunsch <joerg_wunsch>
Group administrator
Fri 19 Jan 2018 10:33:27 AM UTC, comment #11: 



  • The Apache license on io*.h might expose a problem.



- Some possible solutions.

  a) Mchip/Atmel right now mixes BSD+Apache in their packages, so avr-libc could do it too ? (not a lawyer).

  b) Make new headers from scratch based from docs. A simple one (no fancy struct), just simple enumerations.


  • I incline to choose #b, and i am willing to do the task if You all here agree. Probably wise would be to have a common avr8x.h and some alias files that adds extras for each particular devices.




Balint Cristian <cbalint>
Thu 18 Jan 2018 04:32:53 PM UTC, comment #10: 

Ok, better now.  At least the trivial example builds now.

Some final notes on xmega.h:

Constraint "d" for [ccp_ioreg] resp. [ccp_spm_mask] could be relaxed to the less restrictive "r".

And from a strict point of view, both _PROTECTED_WRITE and _PROTECTED_WRITE_SPM are clobbering memory.

Georg-Johann Lay <gjlayde>
Thu 18 Jan 2018 03:53:50 PM UTC, comment #9: 

Johann,

Uploaded avrxmega3-v5.diff.bz2 .

  • Add _PROTECTED_WRITE_SPM in xmega.h (as per Atmel's upstream 3.6.1).


Balint Cristian <cbalint>
Thu 18 Jan 2018 03:10:27 PM UTC, comment #8: 

There must still be missing something, at least _PROTECTED_WRITE_SPM.  Apart from a build warning for a missing prototype, it's neither resolved by a macro nor my a symbol:


$ echo 'int main(){}' | avr-gcc -xc - -Wl,-u,eeprom_write_block -mmcu=attiny1616
/srv/local/gnu/install/gcc-8/bin/../lib/gcc/avr/8.0.1/../../../../avr/lib/avrxmega3/libattiny1616.a(eewr_block_xmega.o): In function `eeprom_write_block':
eewr_block_xmega.c:(.text.avr-libc+0x80): undefined reference to `_PROTECTED_WRITE_SPM'
collect2: error: ld returned 1 exit status



Georg-Johann Lay <gjlayde>
Thu 18 Jan 2018 02:07:09 PM UTC, comment #7: 

Johann,


- Thank you for the quick review.
- I believe your proposed changes are fine.

  • The task presented here is fairly easy to do, all basic ingredients are Atmel's upstream stuff. Not sure why they are not collaborating with you guys. They started to keep lots of changes on their own fork (their changes have no logs or names).


  • Perhaps migrating to a more collaborative platform like github would help this project a lot.


  • I attached outputs of a sample main() program for atn1616 target that looks good to me [attiny16161-disasm.txt.bz2]. Cannot validate yet on real device (waiting for real chip samples) .


  • I am working on avrdude & USBASP-firmware too for support UPDI

 too (is quite similar to TPI). As reference for UPDI there is https://github.com/mraardvark/pyupdi, you probably already know that.


Balint Cristian <cbalint>
Thu 18 Jan 2018 11:50:34 AM UTC, comment #6: 

Thanks, I can build avr-libc now and a quick test looks good.

Regarding the changes to eewr_block_xmega.c, maybe it's clearer to special-case the different NVM flavours instead of #define + #undef + #define chains?

I allowed me to attach a respective patch as avrxmega3-v4.diff.bz2

Georg-Johann Lay <gjlayde>
Wed 17 Jan 2018 05:13:17 PM UTC, comment #5: 
  • Compiles with avrxmega3-v3.patch.bz2 .

+ Backports changes from Atmel 3.6.1 [1] toolchain:

  - eedef.h
  - eewr_block_xmega.c
  - eewr_byte.S

[1] http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.6.1/

Balint Cristian <cbalint>
Wed 17 Jan 2018 04:15:45 PM UTC, comment #4: 

With that patch, avr-libc fails to build:


Making all in avrxmega3
make[4]: Entering directory '/srv/local/gnu/build/avrlibc-trunk/avr/lib/avrxmega3'
Making all in attiny1614
make[5]: Entering directory '/srv/local/gnu/build/avrlibc-trunk/avr/lib/avrxmega3/attiny1614'
/local/gnu/install/gcc-8/bin/avr-gcc -DHAVE_CONFIG_H -I. -I../../../../../../source/avrlibc-trunk/avr/lib/avrxmega3/attiny1614 -I../../../..  -I../../../../../../source/avrlibc-trunk/common -I../../../../../../source/avrlibc-trunk/include -I../../../../include  -Wall -W -Wstrict-prototypes -mmcu=attiny1614  -mcall-prologues -Os  -MT eewr_block_xmega.o -MD -MP -MF .deps/eewr_block_xmega.Tpo -c -o eewr_block_xmega.o ../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c: In function 'eeprom_write_page':
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c:26:13: error: 'NVM' undeclared (first use in this function)
   } while ((NVM.STATUS & NVM_NVMBUSY_bm) == NVM_NVMBUSY_bm);
             ^~~
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c:26:13: note: each undeclared identifier is reported only once for each function it appears in
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c:26:26: error: 'NVM_NVMBUSY_bm' undeclared (first use in this function); did you mean 'RTC_CMPBUSY_bm'?
   } while ((NVM.STATUS & NVM_NVMBUSY_bm) == NVM_NVMBUSY_bm);
                          ^~~~~~~~~~~~~~
                          RTC_CMPBUSY_bm
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c:58:13: error: 'NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc' undeclared (first use in this function)
   NVM.CMD = NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc;
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../../source/avrlibc-trunk/libc/misc/eewr_block_xmega.c:59:29: error: 'NVM_CMDEX_bm' undeclared (first use in this function); did you mean 'TCD_CMPDEN_bm'?
   ccp_write_io (&NVM.CTRLA, NVM_CMDEX_bm);
                             ^~~~~~~~~~~~
                             TCD_CMPDEN_bm
Makefile:632: recipe for target 'eewr_block_xmega.o' failed


Notice that avr-gcc defines AVR_XMEGA for these devices (in case that matters).

Georg-Johann Lay <gjlayde>
Wed 17 Jan 2018 04:14:14 PM UTC, comment #3: 

Johann, Joerg,

  * Attached avrxmega3-v2.patch.bz2 to add ChangeLog as new file.



Balint Cristian <cbalint>
Wed 17 Jan 2018 04:12:13 PM UTC, comment #2: 

I agree with Johann's comment regarding ChangeLog, though it's
not too hard to simply extract the text from the diff.

It might be the first commit in 2018, so it's going to be a
completely new ChangeLog file anyway.

Joerg Wunsch <joerg_wunsch>
Group administrator
Wed 17 Jan 2018 03:56:18 PM UTC, comment #1: 


> Changed files: [...] ChangeLog


The delta to ChangeLog is not reasonable, too much lines affected.

Usually, ChangeLog is prone to conflicts as each push is touching it; hence it might be more comfortable to supply it as plain text snipped and leave it out of the patch.

Georg-Johann Lay <gjlayde>
Wed 17 Jan 2018 03:29:03 PM UTC, original submission:  
  • This patch adds support for avrxmega3 devices already supported by latest gcc8 compiler:


    attiny1614, attiny1616, attiny1617, attiny212, attiny214,
    attiny3214, attiny3216, attiny3217, attiny412, attiny414,
    attiny416, attiny417, attiny814, attiny816, attiny817 .

  • New files:


  - attinny*.S are generated from latest Atmel.ATtiny_DFP.1.3.169.atpack.zip .xml (.atdf) files.

  - iotn*.h are from latest avr8-gnu-toolchain-osx-3.6.1.495-darwin.any.x86_64.tar.gz ( http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.6.1/ ).

  - ChangeLog-2017

  • Changed files:

   - include/avr/io.h
   - include/avr/Makefile.am
   - devtools/generate_iosym.sh
   - devtools/gen-avr-lib-tree.sh
   - avr-libc/configure.ac
   - ChangeLog

Balint Cristian <cbalint>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attached Files
file #52334:  avrxmega3-v12.diff.xz added by cbalint (92KiB - application/x-xz - V12: Updates for wdt.h, sleep.h)
file #52286:  avrxmega3-v11.diff.xz added by cbalint (92KiB - application/x-xz - V11: Newer AVR8X devices)
file #48974:  avrxmega3-v10.diff.xz added by cbalint (79KiB - application/x-xz - Newer AVR8X devices)
file #45738:  avrxmega3-v9.diff.bz2 added by cbalint (455KiB - application/x-bzip)
file #44476:  avrxmega3-v8.diff.bz2 added by cbalint (456KiB - application/x-bzip - Newer AVR8X devices.)
file #43735:  avrxmega3-v7.diff.bz2 added by cbalint (292KiB - application/x-bzip - V7 of patch)
file #43034:  avrxmega3-v6.diff.bz2 added by cbalint (292KiB - application/x-bzip - V6 of patch [includes ioavr8x.h gen])
file #42957:  avrxmega3-v5.diff.bz2 added by cbalint (284KiB - application/x-bzip - V5 patch [add _PROTECTED_WRITE_SPM])
file #42956:  attiny16161-disasm.txt.bz2 added by cbalint (2KiB - application/x-bzip - ATTINY1616 sample disasm prog.)
file #42952:  avrxmega3-v4.diff.bz2 added by gjlayde (284KiB - application/x-bzip - Avoid #define + #undef + #define chains)
file #42939:  avrxmega3-v3.patch.bz2 added by cbalint (285KiB - application/x-bzip - Patch V3 [backports Atmel's NVM])
file #42938:  avrxmega3-v2.patch.bz2 added by cbalint (284KiB - application/x-bzip - Fixed ChangeLog [now as new file].)
file #42937:  avrxmega3.patch.bz2 added by cbalint (285KiB - application/x-bzip - Add avrxmega3 devices.)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by jhol (Posted a comment)
  • -email is unavailable- added by wastis (Posted a comment)
  • -email is unavailable- added by biergaizi (Posted a comment)
  • -email is unavailable- added by burnpanck (Posted a comment)
  • -email is unavailable- added by leonerd (Posted a comment)
  • -email is unavailable- added by svenschwermer (Posted a comment)
  • -email is unavailable- added by deikruve (Posted a comment)
  • -email is unavailable- added by joerg_wunsch (Posted a comment)
  • -email is unavailable- added by gjlayde (Posted a comment)
  • -email is unavailable- added by cbalint (Submitted the item)
  • -email is unavailable- added by cbalint (Add avrxmega3 devices.)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 14 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2021-11-23 cbalint Attached File- Added avrxmega3-v12.diff.xz, #52334
    2021-11-16 cbalint Attached File- Added avrxmega3-v11.diff.xz, #52286
    2020-04-30 cbalint Attached File- Added avrxmega3-v10.diff.xz, #48974
    2018-12-25 cbalint Attached File- Added avrxmega3-v9.diff.bz2, #45738
    2018-07-01 cbalint Attached File- Added avrxmega3-v8.diff.bz2, #44476
    2018-03-31 cbalint Attached File- Added avrxmega3-v7.diff.bz2, #43735
    2018-01-23 cbalint Attached File- Added avrxmega3-v6.diff.bz2, #43034
    2018-01-18 cbalint Attached File- Added avrxmega3-v5.diff.bz2, #42957
    2018-01-18 cbalint Attached File- Added attiny16161-disasm.txt.bz2, #42956
    2018-01-18 gjlayde Attached File- Added avrxmega3-v4.diff.bz2, #42952
    2018-01-17 cbalint Attached File- Added avrxmega3-v3.patch.bz2, #42939
    2018-01-17 cbalint Attached File- Added avrxmega3-v2.patch.bz2, #42938
    2018-01-17 cbalint Attached File- Added avrxmega3.patch.bz2, #42937
        Carbon-Copy- Added -email is unavailable-

    Back to the top

    Powered by Savane 3.13-cf05.
    Corresponding source code