Ubuntu:STM32 (Cortex-M3) のクロスコンパイル時にどの gcc を使用すればよいですか?

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

質問

私は STM32 (Cortex-M3) を使い始めようとしていますが、私の計画では、これを Ubuntu (9.04 / AMD64) から動作させることです。

まず、私が手に入れたのは、 オリメックス stm32-h103 ヘッダーボードと オリメックス ARM-USB-OCD jtag を使用し、さらに OpenOCD、gcc、Eclipse を使用することになるでしょう。

しかし現在、私はどのバージョンの gcc を使用するべきか、そしてコードをクロスコンパイルできるようにそれをセットアップする方法を検討しています。

腕のプロジェクトがいくつかあるように見えますが、何から始めればいいのかわかりません。誰かが私を正しい方向に押し込むことができますか?

ヨハンに感謝します


アップデート:欲しいものはほぼ揃っているようです コードソース, 、しかし、彼らはAMD64ではなくIA32に焦点を合わせているようです。

ただし、サポートされているデバイスでは Cortex-M3 が見つかります

  • ARM EABI、ARM M プロファイル シミュレータ -mcpu=cortex-m3 -mthumb

アップデート:AMD64にIA32をインストールする可能性があるため、マークされた答えはすでに時代遅れです。

アップデート:Cortex-M3 のクロスコンパイルに関するこのリンクを見つけました。

役に立ちましたか?

解決

この答えは少し「読めない」ようになったので、この情報を含むページを作成しました。



これはこれら 2 つのガイドに基づいた自由な解釈ですが、動作させるにはバージョンを変更し、いくつかのパッチを適用する必要がありました。

まずは基本的なこと

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

ビヌティルス

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

ニューリブ

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