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周りですね。続けると長くなるので次の記事で。