Ubuntu: Qu'est-ce que gcc à utiliser lors de la crosscompilation pour le STM32 (Cortex-M3)?

StackOverflow https://stackoverflow.com/questions/1502623

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.

Était-ce utile?

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.

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 ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top