Go Down

Topic: UECIDE: A New Fork of the IDE (Read 59382 times) previous topic - next topic

tf68


majenko

Leo on order.  Should be here next day or so.  That should make this easier.  I will check the command the leo board def is generating and tweak it accordingly.  Not sure baout this 1200 baud thing though.

I'm just looking into compiling 4.8.1 for AVR - see how it goes.  If it works I may bundle it as default for Linux users.  I may do the same for the msp430 and arm-eabi targets too.

tf68

Hi Matt,

I've been using the gcc4.8.0/avr-libc1.8 toolchain for 2 or 3 months. The only thing I've come across is a slight difference with PROGMEM. I don't have the details at hand but can dig them up. I don't recall that it broke any of the Arduino libs but it did break some demos on how to use PROGMEM.

terry

majenko


Hi Matt,

I've been using the gcc4.8.0/avr-libc1.8 toolchain for 2 or 3 months. The only thing I've come across is a slight difference with PROGMEM. I don't have the details at hand but can dig them up. I don't recall that it broke any of the Arduino libs but it did break some demos on how to use PROGMEM.

terry

For now I am only looking at replacing gcc and binutils, not libc.  I am now wondering if there is a way I can have multiple compilers associated with multiple cores...  That'd be interesting...

tf68

Easy now, I'm having enough trouble keeping my various boards and cores straight as it is. Along with where the bits and pieces are hiding, it's getting to much for my feeble old mind.

terry

majenko

Well, 4.8.1 just compiled blink.ino...  I can't compare compilation times or anything fancy like that as my computer is busy converting a 320GB raw disk image into a VDI image, and has been the best part of the evening.

tf68

Matt,

One thing you will find is a pretty substantial decrease in the size of the hex files. One example I can remember is the size of the standard arduino bootloader was 5.0K with gcc4.3 and 4.2K with 4.8. It works with avr-gcc 1.6?  I thought you had to sort of keep the latest gcc with the latest avr-libc. Maybe not.

terry

majenko


Matt,

One thing you will find is a pretty substantial decrease in the size of the hex files. One example I can remember is the size of the standard arduino bootloader was 5.0K with gcc4.3 and 4.2K with 4.8. It works with avr-gcc 1.6?  I thought you had to sort of keep the latest gcc with the latest avr-libc. Maybe not.

terry

Nah, that'd be like replacing your car for a newer one just cus they'd brought out a fancy new kind of oil ;)

I'm looking at integrating a build of the latest libc into my build script too - see if I can make an entire clean compiler distribution completely from source :)

majenko

Right, leo is here, and I think I now have it sussed.

I have had to add a new reboot method to the IDE, so you will need to upgrade the IDE before it will work, but now the Leonardo (and similar boards) has:

Code: [Select]

upload.using=usbcdc
upload.reset.baud=1200


which tells it to try rebooting by opening the serial port without worrying about toggling DTR/RTS (upload.using=usbcdc) and setting it to a specific baud rate (upload.reset.baud=1200).  It then delays for 1 second (I'm not sure on that timing TBH - I may make it more variable / dynamic in some way) for the serial port to reappear, then continues the upload.

The core has also been tweaked to allow the right upload protocol (for some reason I'd had a brain fart and hard coded -carduino even though there is a perfectly good upload.protocol variable that I always used in the past ...  :smiley-eek-blue: )

majenko

Well, that was fun, getting my 4.8.1 build script to put things in the right places...  For a while there it was insisting on running /usr/bin/as instead of the as in the compiler's dir.  Fail ;)  That's only because binutils doesn't put it by default where gcc expects to find it ... Still, it's in the right place now.

Blink, with the standard Arduino compiler:
Code: [Select]

Program Size:
  Flash: 16% (4826 bytes out of 28672 bytes max)
    RAM: 157 bytes
         (text: 4782, data: 44, bss: 113)

Blink with arduino-gcc-481:
Code: [Select]

Program Size:
  Flash: 16% (4766 bytes out of 28672 bytes max)
    RAM: 157 bytes
         (text: 4722, data: 44, bss: 113)

Saved 60 bytes just on blink...  Wonder what it'd do with a more complex sketch...? ;)

tf68

Well alright !

Leonardo sketches compile, upload and work. By the way I had to change the core.txt file upload.command from -carduino to -c${upload.protocol} so it would pick up the correct protocol from the board.txt.
The binary sizes from the different toolchains is sort of a crapshoot. When I was fiddling around with optiboot the 4.8.0toolchain produced the largest binaries while the ubuntu4.3.3 toolchain produced the smallest. Smaller even than the binaries distributed with optiboot, go figure.
I compile the toolchain packages with prefix=SomeDir, the same for each package and I place it first in the PATH during the compile. Everything seems to work just fine and you can place it where you want later on.

thanks,
terry

majenko


Well alright !

Leonardo sketches compile, upload and work. By the way I had to change the core.txt file upload.command from -carduino to -c${upload.protocol} so it would pick up the correct protocol from the board.txt.
The binary sizes from the different toolchains is sort of a crapshoot. When I was fiddling around with optiboot the 4.8.0toolchain produced the largest binaries while the ubuntu4.3.3 toolchain produced the smallest. Smaller even than the binaries distributed with optiboot, go figure.
I compile the toolchain packages with prefix=SomeDir, the same for each package and I place it first in the PATH during the compile. Everything seems to work just fine and you can place it where you want later on.

thanks,
terry

I compiled GCC using the flags from the original Arduino compilation (run avr-gcc -v to get them) - I guess they didn't have things quite as "default" as I thought ;)  (typical Arduino - anyone'd think they were owned by Microsoft or something... :D )

I just had to tweak the --execprefix so .../avr was changed to .../lib/avr

I am now looking at installing MinGW on a Windows 7 VM to try and get a windows version going.  I tried cross-compiling on Linux, but it threw an absolute fit about missing libraries, and I gave up ;)

majenko

I have now got it working on the Raspberry Pi.  The PIC32 compiler is working on the Pi, and is self-contained like the others.  The AVR compiler, though, is just a "stub" compiler which points to system-installed binaries, so you have to have the avr-gcc package installed for it to work.  The chipKIT and arduino cores both have the arm versions of avrdude with them now though.  I will do the same for the other AVR cores too.

tf68

Matt,

For what it's worth here is what the avr-libc manual recommends:

binutils:
../configure --prefix=/toolchain --target=avr --disable-nls

gcc:
../configure --prefix=/toolchain --target=avr --enable-languages=c,c++  --disable-nls --disable-libssp --with-dwarf2

only for 4.7.x:
--with-avrlibc=yes

avrlibc:
./configure --prefix=/toolchain --build=`./config.guess` --host=avr


put the new avr-gcc bin dir first in path while compiling:
PATH=/toolchain/bin:$PATH
export PATH

Try compiling the toolchain on the pi ]:D

terry

majenko


Matt,

For what it's worth here is what the avr-libc manual recommends:

binutils:
../configure --prefix=/toolchain --target=avr --disable-nls

gcc:
../configure --prefix=/toolchain --target=avr --enable-languages=c,c++  --disable-nls --disable-libssp --with-dwarf2

only for 4.7.x:
--with-avrlibc=yes

avrlibc:
./configure --prefix=/toolchain --build=`./config.guess` --host=avr


put the new avr-gcc bin dir first in path while compiling:
PATH=/toolchain/bin:$PATH
export PATH

That's pretty much what I had.
Quote

Try compiling the toolchain on the pi ]:D

terry

Funny you should say that...  4.8.1 is part way through compiling as we speak ;)
Code: [Select]

arm-linux-gnueabihf-gcc -c -DHAVE_CONFIG_H -g -O2  -I. -I../../../gcc-4.8.1/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic  ../../../gcc-4.8.1/libiberty/regex.c -o regex.o

Go Up