Pergunta

Eu estou tentando começar com o STM32 (Cortex-M3) e meu plano é começar este trabalho a partir do Ubuntu (9.04 / AMD64).

Para começar eu tenho a bordo Olimex stm32-H103 cabeçalho e o Olimex ARM-USB-OCD jtag, e para isso eu provavelmente usará OpenOCD, gcc e Eclipse.

Mas agora eu estou olhando para a versão do gcc para uso e como configurar que para ser capaz para cross o código.

Parece haver alguns projetos braço para fora lá, mas eu não sei o que, para começar, Alguém pode me empurrar na direção certa?

Graças Johan


Atualizar : Não parece quase a ser o que eu quero de CodeSourcery , mas eles parecem se concentrar em IA32 e não AMD64.

No entanto, os dispositivos suportados I encontrar o Cortex-M3

  • ARM EABI, BRAÇO H-perfil Simulador -mcpu = córtex-m3 -mthumb

Atualizar : Existe a possibilidade de instalar IA32 em AMD64, então talvez a resposta marcada é obsoleto já.

Atualizar : Encontrei este link sobre cross-compilar para o Cortex-M3.

Foi útil?

Solução

Uma vez que esta resposta tornou-se um pouco "ilegível", Eu criei uma página com esta informação.



Esta é uma livre interpretação com base nesses dois guias, mas eu tive que mudar versões e aplicar alguns patches para obtê-lo para o trabalho.

Primeiro algumas coisas básicas

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

Então eu criei um lugar para armazenar o conjunto de ferramentas (cj.users mudar o que é bom para você).

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

Aplicar patch para tc-arm.c de acordo com esta informação 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

Então eu gostaria de aplicar o patch com algo parecido com isso (mas não fez trabalho)

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

Então abri-lo manualmente e linha 6651 editada de acordo com o adesivo.

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

Mais 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

Soma-se

Agora eu só adicionei alguns caminhos para o meu ~ / .bashrc

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

E eu deveria estar pronto para o próximo passo ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top