Ubuntu: Qu'est-ce que gcc à utiliser lors de la crosscompilation pour le STM32 (Cortex-M3)?
Question
Je suis en train de commencer avec le STM32 (Cortex-M3) et mon plan est d'obtenir ce travail d'Ubuntu (9.04 / AMD64).
Pour commencer, je suis l'en-tête Olimex STM32-H103 bord et Olimex ARM-USB-TOC de la JTAG, et à cela, je vais probablement utiliser OpenOCD, gcc et Eclipse.
Mais maintenant je suis à la recherche dans la version de gcc à utiliser et comment configurer que pour pouvoir le code compilation croisée.
Il semble y avoir quelques projets de bras là-bas, mais je ne sais pas quoi commencer, quelqu'un peut me pousser dans la bonne direction?
Merci Johan
Mise à jour : Il semble presque être ce que je veux de CodeSourcery , mais ils semblent se concentrer sur IA32 et non AMD64.
Cependant, dans les périphériques pris en charge que je trouve le Cortex-M3
- ARM EABI, ARM M-profil Simulator -mcpu = Cortex-M3 -mthumb
Mise à jour : Il est possible d'installer IA32 sur AMD64, alors peut-être la réponse marquée est déjà obsolète.
Mise à jour : Nous avons trouvé ce lien à propos pour la compilation croisée Cortex-M3.
La solution
Depuis cette réponse est devenu un peu « illisible », J'ai créé une page avec cette info.
Ceci est une interprétation libre basée sur ces deux guides, mais je devais changer les versions et appliquer quelques patches pour le faire fonctionner.
- http://eluaproject.dreamhosters.com/en/Building_GCC_for_Cortex
- http://www.esden.net/blog/2009/02/26/how-to-build-arm-gnu-gcc-toolchain-for-mac-os-x/
Tout d'abord quelques trucs de base
sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential
Alors j'ai créé un endroit pour stocker la chaîne d'outils (changement cj.users à tout ce qui est bon pour vous).
export TOOLPATH=/usr/local/cross-cortex-m3
sudo mkdir /usr/local/cross-cortex-m3
sudo chown cj.users /usr/local/cross-cortex-m3
Binutils
wget http://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.bz2
tar -xvjf binutils-2.19.tar.bz2
cd binutils-2.19
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls
Appliquer patch pour tc-arm.c selon cette info http://sourceware.org /bugzilla/show_bug.cgi?id=7026 / http: // sourceware.org/bugzilla/attachment.cgi?id=3058&action=view
vi ../gas/config/tc-arm.c
make
make install
export PATH=${TOOLPATH}/bin:$PATH
cd ../..
gcc
wget ftp://ftp.sunet.se/pub/gnu/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.bz2
tar -xvjf gcc-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc
cd ../..
newlib
wget ftp://sources.redhat.com/pub/newlib/newlib-1.17.0.tar.gz
wget http://www.esden.net/content/embedded/newlib-1.14.0-missing-makeinfo.patch
tar -xvzf newlib-1.17.0.tar.gz
cd newlib-1.17.0
Je voudrais appliquer le patch avec quelque chose comme ça (mais il ne fonctionne pas)
patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch
Alors je l'ai ouvert la ligne manuellement et 6651 selon edited le patch.
vi configure
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --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 -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
make install
cd ../..
Plus gcc
cd gcc-4.3.4/build
make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all
make install
Résumez
Je viens d'ajouter quelques pistes à mon ~ / .bashrc
#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH
Et je devrais être prêt pour l'étape suivante ...