Ubuntu : STM32 (Cortex-M3)에 대해 크로스 컴퓨팅 할 때 어떤 GCC를 사용할 수 있습니까?

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

문제

나는 STM32 (Cortex-M3)를 시작하려고 노력하고 있으며 내 계획은 Ubuntu (9.04 / AMD64)에서이를 작동시키는 것입니다.

처음부터 나는 그것을 얻었다 Olimex STM32-H103 헤더 보드와 Olimex ARM-USB-OCD JTAG, 그리고 그로 인해 나는 아마 OpenOCD, GCC 및 Eclipse를 사용할 것입니다.

그러나 지금은 사용할 GCC의 버전과 코드를 크로스 컴 파일로 설정하는 방법을 조사하고 있습니다.

팔 프로젝트가있는 것 같지만 무엇을 시작 해야할지 모르겠습니다. 누군가 나를 올바른 방향으로 밀어 넣을 수 있습니까?

감사합니다. Johan


업데이트: 내가 원하는 것이 거의없는 것 같습니다. Codesourcery, 그러나 그들은 AMD64가 아닌 IA32에 초점을 맞추는 것 같습니다.

그러나 지원되는 장치에서는 Cortex-M3을 찾습니다

  • 팔 eabi, 팔 m- 프로필 시뮬레이터 -mcpu = cortex -m3 -mthumb

업데이트: AMD64에 IA32를 설치할 가능성이 있으므로 이미 표시된 대답은 이미 쓸모 없을 것입니다.

업데이트: Cortex-M3의 CrossCompile에 대한이 링크를 찾았습니다.

도움이 되었습니까?

해결책

이 답변은 약간 "읽을 수 없음"이 되었으므로이 정보가 포함 된 페이지를 만들었습니다.



이것은이 두 가이드를 기반으로 한 무료 해석이지만 버전을 변경하고 패치를 적용하여 작동하도록해야했습니다.

먼저 몇 가지 기본적인 것들

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

그런 다음 툴체인을 저장할 장소를 만들었습니다 (CJ.users를 당신에게 좋은 것으로 변경).

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

이 정보에 따라 TC-Arm.c에 패치를 적용하십시오 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

그런 다음 이런 식으로 패치를 적용하고 싶습니다 (그러나 작동하지 않았습니다)

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

그래서 패치에 따라 수동으로 열리고 줄 6651을 편집했습니다.

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

더 많은 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

요약하면

이제 방금 내 ~/.bashrc에 몇 가지 경로를 추가했습니다.

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

그리고 나는 다음 단계를 준비해야합니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top