MacでSTM32F4-Discoveryの開発環境を構築してChibiOS/RTを動かす

現在の私のSTM32F4-Discovery開発環境の構築手順とSTM32F4-Discovery上でChibiOS/RTを動作させてGDBデバッグできるようにするまでをまとめてみました。
OSはMountainLion 10.8.4 MacPorts導入済の状態です。
まず以下のSTM32F4-Discoveryの開発に必要なソフトをインストールしていきます。

  • arm-none-eabi-gcc
  • arm-none-eabi-gdb
  • openocd

/opt/localはMacportsが使用しており、 /usr/localはHomebrewが使用しています。これらのディレクトリには余計なファイルを入れたくないので~/localを自前で用意した実行ファイル置き場として、~/local以下にARM開発環境をインストールしていきます。

arm-none-eabi-gccのインストール

arm-none-eabi-gccはlaunchpadから入手します。
GCC ARM Embedded in Launchpad
上のリンクからMac用のarm-none-eabi-gccであるgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tarを落としてきて適当なディレクトリに保存します。
まず ~/localを作成

cd ~
mkdir local

ダウンロードしたgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2を~/に展開

tar -xvf ~/Downloads/gcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2

展開されたgcc-arm-none-eabi-4_7-2013q2内のファイルを~/localに移動

cd gcc-arm-none-eabi-4_7-2013q2
mv * ~/local

これでarm-none-eabi-gccのインストールは完了です。

arm-none-eabi-gdbのインストール

次にarm-none-eabi-gdbのインストールですが、Macportsにarm-none-eabi-gdbがあったのでそれをそのまま使用します。

sudo port install arm-none-eabi-gdb

簡単ですね、はい次

openocdのインストール

openocdのソースをgit cloneする

git clone git://git.code.sf.net/p/openocd/code openocd-code

次にopenocdのビルド。今回はSTM32F4-Discoveryの開発にフォーカスしたconfigureになっています。Versaloon等の他のデバッガハードに対応させる場合はconfigureの変更やopenocdへのパッチが必要になる場合が有ります。

cd openocd-code
./bootstrap
./configure --enable-maintainer-mode --enable-stlink --prefix=~/local/ --datadir=~/local/share/

make -j3でビルドするとMacportsでインストールされているはずのlibusbが見つからないと怒られたのでLDFLAGSを追加して対処した。

make LDFLAGS=-L/opt/local/lib/ -j3
make install

これで~/local/binにopenocdがインストールされる。

最後に$PATHに~/local/binを追加して必要なソフトのインストールは完了です。

ChibiOS/RTのビルド

開発環境の準備ができたのでChibiOS/RTをSTM32F4-Discovery上で動作させてみます。
ChiboOS/RTは軽量で高速な扱いやすいRTOSで。STM32F4だけでなくLCP11xx, LPC13xxのNXP系のARMやAVRにも対応しています。詳細はChibiOS/RTの公式サイトを参照してください。

まずChibiOS/RTのソースコードをダウンロードします。
ChibiOS/RT free embedded RTOS download | SourceForge.net

ダウンロードしたzipを展開し、展開したディレクトリからdemosの中のARMCM4-STM32F407-DISCOVERYに入ります。

unzip ChibiOS_2.6.0.zip
cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY

あとはmakeでビルドします

make

makeが完了すると、buildディレクトリが生成されその中にch.elfがあればビルド成功です。

書き込みとデバッグ

いよいよ実機への書き込みです。まずSTM32F4-DiscoveryのSTLink-v2側のmini-BなUSBポートとMacを接続します。
次にopenocdを起動します。

openocd -s ~/local/share/openocd/scripts/ -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg

次に別のターミナルを開いて、そこでGDBを実行します。

cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY
arm-none-eabi-gdb build/ch.elf

GDBが起動するとGDBのプロンプトが表示されます。ここでopenocdと接続してch.elfをロードさせます。

target remote localhost:3333
monitor reset halt
load
monitor reset halt

最後にcontinueで実行。ここでSTM32F4-DiscoveryのLEDが点滅すればChibiOS/RTの動作は成功です。

continue

まとめ

STM32F4-Discoveryの開発環境の構築からChibiOS/RTのビルド、書き込み、デバッグまで一気にまとめました。
ブレークポイントの設定などのデバッグ方法はGDBと同じなので、詳しくはGDBのマニュアルを見てください。ここでの説明は省略します。
ChibiOS/RTはサンプルソースコードが分かりやすいので読むだけで基本的な使い方が分かるはずです。

最後に、ChibiOS/RTもっと流行れ