Domanda

Sto cercando di iniziare con lo STM32 (Cortex-M3) e il mio piano è ottenere questo lavoro da Ubuntu (9.04 / AMD64).

Per cominciare ho avuto il Olimex STM32-H103 intestazione bordo e il Olimex ARM-USB-OCD jTAG, e per di che io probabilmente usare OpenOCD, gcc e Eclipse.

Ma in questo momento sto cercando in quale versione di gcc da utilizzare e come impostare che per essere in grado di crosscompile il codice.

Sembra che ci siano alcuni progetti braccio là fuori, ma io non so cosa per cominciare, qualcuno può spingere nella direzione giusta?

Grazie Johan


Aggiorna : Ci sembra quasi di essere quello che voglio da CodeSourcery , ma sembrano concentrarsi su IA32 e non AMD64.

Tuttavia nei dispositivi supportati trovo il Cortex-M3

  • ARM EABI, ARM M-profilo simulatore -mcpu = cortex-m3 -mthumb

Aggiorna : C'è la possibilità di installare IA32 su AMD64, così forse la risposta marcata è obsoleto già.

Aggiorna : Trovato questo link su crosscompile per il Cortex-M3.

È stato utile?

Soluzione

Dal momento che questa risposta è diventato un po ' "illeggibile", Ho creato una pagina con queste informazioni.



Questa è una libera interpretazione sulla base di queste due guide, ma ho dovuto cambiare le versioni e applicare alcune patch per farlo funzionare.

In primo luogo alcune cose di base

sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential

Poi ho creato uno spazio per riporre la toolchain (cj.users cambiamento per tutto ciò che è buono per voi).

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

Applica patch per tc-arm.c secondo queste informazioni 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

Poi vorrei applicare la patch con qualcosa di simile (ma non ha funzionato)

patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch

Così ho aperto manualmente e la linea 6651 modificato in base alla 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 ../..

Più 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

Riassumendo

Ora ho solo aggiunto alcuni percorsi alla mia ~ / .bashrc

#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH

E dovrei essere pronto per il prossimo passo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top