STM32F4 DiscoveryをOS Xで使う
最近久しぶりにマイコンボードを買いました。STM32F4 Discoveryです。 数年前に発売されたものなので既にそれなりに情報があると思うのですが、自分が使いたい方法などあるので記事にしておきます。
開発環境の用意
Linux環境でSTM32F4を使う カーネル/VM advent calendar 2012 - Fadisのノート を参考にしてOS Xに開発環境を用意します。 Linuxは適宜読みかえれば大体同じだと思います。Windowsはどうでもいいです。
GNU Toolchain
summon-arm-toolchainは現在ではメンテされていないので代わりに GCC ARM Embedded を使います。これ一つでGCC, Binutils, Newlib, GDBがインストールされます。 ビルド済みとはいえ手作業のインストールは嫌だったので、GitHubで適当に検索して見つけたFormulaを使ってHomebrewでインストールします。
$ brew install https://github.com/Eownis/homebrew-brewfor/raw/master/arm-none-eabi-gcc.rb
OpenOCD
Homebrewでインストールできます。
$ brew install open-ocd
サンプルの実行
やはり Linux環境でSTM32F4を使う カーネル/VM advent calendar 2012 - Fadisのノート を参考に進めていきます。
ビルド
libopencm3/libopencm3-examples をダウンロードしてビルドします。
$ git clone --recursive https://github.com/libopencm3/libopencm3-examples.git $ cd libopencm3-examples $ make
OpenOCDの説明を読んでいるとelfイメージでも書き込みできるようなのですが、自分の環境ではできなかったので自分でバイナリ形式に変換します。
$ cd libopencm3-examples/examples/stm32/f4/stm32f4-discovery $ arm-none-eabi-objcopy -Obinary button/button.elf button/button.bin
書き込み・実行
STM32F4 DiscoveryのUSB mini-Bを接続し、OpenOCDを起動します。
$ cd libopencm3-examples/examples/stm32/f4/stm32f4-discovery $ openocd -f /usr/local/share/openocd/scripts/board/stm32f4discovery.cfg
別の端末を開き、telnetでポート4444に接続します。
$ telnet localhost 4444
あとはマイコンを停止させ、Flashに書き込んでリセットするとサンプルが実行されます。
> reset halt > flash erase_sector 0 0 11 > flash write_image button/button.bin 0x8000000 > reset
ここまで来たら次は標準出力やIDE周りですね。続けると長くなるので次の記事で。