Ubuntu: Welche gcc zu verwenden, wenn für den STM32 (Cortex-M3) crosscompiling?
Frage
Ich versuche, mit dem STM32 (Cortex-M3) und mein Plan, um loszulegen ist dies bekommen Arbeit von Ubuntu (9.04 / AMD64).
Zunächst bekam ich die Olimex STM32-H103 Topschild und der Olimex ARM-USB-OCD jtag, und auf der, dass ich wahrscheinlich OpenOCD verwenden, gcc und Eclipse.
Aber jetzt suche ich in welche Version von gcc zu verwenden und wie die Einrichtung in der Lage sein, den Code crosscompile.
Es scheinen einige Arm Projekte da draußen zu sein, aber ich weiß nicht, was mit zu beginnen, in der richtigen Richtung kann mich jemand schieben?
Danke Johan
Aktualisieren : Es scheint fast zu sein, was ich will von CodeSourcery , aber sie scheinen auf IA32 und AMD64 nicht konzentrieren können.
Doch in den unterstützten Geräten Ich finde die Cortex-M3
- ARM EABI ARM M-Profil Simulator -mcpu = Cortex-M3 -mthumb
Aktualisieren : Es besteht die Möglichkeit IA32 ist auf AMD64 zu installieren, so vielleicht die deutliche Antwort ist bereits veraltet.
Aktualisieren : Gefunden dieser Verbindung, um crosscompile für den Cortex-M3.
Lösung
Da diese Antwort ein wenig „unleserlich“ wurde, Ich habe eine Seite mit dieser Info.
Dies ist eine freie Interpretation auf diesen beiden Führungen basiert, aber ich hatte Versionen zu ändern und einige Patches anwenden, um es an die Arbeit.
- 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/
Erste einige grundlegende Dinge
sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential
Dann habe ich einen Ort, um die Werkzeugkette (ändern cj.users zu, was gut für sie ist) zu speichern.
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
Wenden Sie den Patch zu tc-arm.c nach diesen Informationen 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
Dann würde Ich mag den Patch mit so etwas gelten (aber es hat nicht funktioniert)
patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch
So öffnete ich es manuell und bearbeiten Linie 6651 nach dem 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 ../..
Weitere 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
aufsummieren
Jetzt gerade habe ich ein paar Wege zu meinem ~ / .bashrc
#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH
Und ich soll für den nächsten Schritt bereit sein ...