[Search] [Contact Us]
Progettazione Elettronica Controlli di Macchine Automatiche  
 ARM GNU 
4.3.3
PROGETTAZIONE
Hardware
Firmware uC
Masters PCB
Circuiti Ibridi
Software Custom
Embedded Linux

SOFTWARE

PRODOTTI
Embedded Linux Board
Moduli I/O USB
Moduli I/O Ethernet
Moduli A/D Ethernet

LPC900 Programmer
PRM-W1 Boards
USB Key


Cerca nel sito


Contatti

L'Autore


ARM7 GNU Toolchain: GCC 4.3.3
By Fausto Marzoli, PRECMA S.r.l.

Here are some updated (090615) informations for 4.3.3 GNU gcc arm-elf compilation; this time I want to rebuild the toolchain with strip dead code abilty enabled in newlib.
Please read the previous 4.2.2 compilation info before, because this is only an update.

binutils-2.19.1.tar.bz2
gcc-4.3.3.tar.bz2
insight-6.8.tar.bz2
newlib-1.17.0.tar.gz


Download all the archieves listed below in /home/your-home/gnu_arm_toolchain/

Then edit your/home/your-home/.bashrc file adding the following line:
export PATH=$PATH:/home/your-home/bin/arm-elf-newlib-4.3.3/bin

Open a console box, cd in the directory where you downloaded the archives and extract them:
tar -jxf binutils-2.19.1.tar.bz2
tar -jxf gcc-4.3.3.tar.bz2
tar -jxf insight-6.8.tar.bz2
tar -zxf newlib-1.17.0.tar.gz


I did a merge of the "t-arm-elf" file previously used for 4.2.2 toolchain and the one found in the gcc tree in /home/your-home/gnu_arm_toolchain/gcc-4.3.3/gcc/config/arm
You can find my own "t-arm-elf" file here. You have to rename it in "t-arm-elf" and copy it in ~/gcc-4.3.3/gcc/config/arm before use.


BINUTILS 2.19.1
cd binutils-2.19.1
./configure --target=arm-elf --prefix=/home/
your-home/bin/arm-elf-newlib-4.3.3 --enable-interwork --enable-multilib --with-float=soft
make all install
cd ..



GCC 4.3.3
Built into a separate directory than the sources (as suggested at http://gcc.gnu.org/install/configure.html)

mkdir gcc-4.3.3-obj
cd gcc-4.3.3-obj

../gcc-4.3.3/configure --target=arm-elf --prefix=/home/
your-home/bin/arm-elf-newlib-4.3.3 --enable-interwork --enable-multilib --with-float=soft --enable-languages="c,c++" --with-newlib --with-headers=/home/your-home/gnu_arm_toolchain/newlib-1.17.0/newlib/libc/include --disable-shared --with-gnu-as --with-gnu-ld

make all-gcc install-gcc
cd ..



NEWLIB 1.17.0
cd newlib-1.17.0
./configure --target=arm-elf --prefix=/home/
your-home/bin/arm-elf-newlib-4.3.3 --enable-interwork --enable-multilib --with-float=soft --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared

make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -D__BUFSIZ__=256"
make install
cd ..



GCC 4.3.3 Final
cd gcc-4.3.3-obj
make all install
cd ..



INSIGHT 6.8
cd insight-6.8
./configure --target=arm-elf --prefix=/home/
your-home/bin/arm-elf-newlib-4.3.3 --enable-interwork --enable-multilib --with-float=soft
make all install



Results
After compiling, I did a few test with some projects and I found that the 4.3.3 toolchain produce a slightly bigger (2% more) binary file than the previously used 4.2.2

Note: I know that some linux hosts (Ubuntu based, maybe) need to add the --disable-werror option to all the configure calls.


Note on the dead code stripping
In order to use dead code stripping you may have to update your linker files (.ld) adding an explicit reference to the start point, for example:
ENTRY(start)
You can find the start point symbol usually in your boot.s or crt0.s file, where are located the vector addresses.

Moreover, you must add in the linker file a deference for all the sectors with name:
        *(.text*)
        *(.rodata*)
        *(.glue_7t)
        *(.data*)
        *(.bss*)



References
http://openhardware.net/Embedded_ARM/Toolchain/
http://eluaproject.dreamhosters.com/en/Building_GCC_for_ARM



PRECMA S.r.l.
4.3.3


Site made with Sworg - Simple Web Organizer
ęCopyright 1998-Today PRECMA S.r.l.
All Rights Reserved - Copyright Notice