micropythonをSTM32F4DISCOVERYにインストール
はじめに
micropythonはarmマイコンのSTM32F4チップ用に作られたファームウェアです.
今日はSTM32F4DISCOVERYというマイコンボードにmicropythonをインストールして,Lチカするところまで紹介します.インストール作業に使うマシンはMacOSXで行ないます.
なお,この内容は先月開かれたPyConJP2014の開発スプリント中に行なった内容をメモしたものです.micropythonの良さや簡単な使い方についてはスプリントリーダであり,今年のpyconjpで面白い発表をしてくれた@hktechnoさんあたりの動画やスライドを見てください.
CR04 Micro Python で組み込み Python (ja) - YouTube
ボード購入
秋月から
STM32F4DISCOVERY: マイコン関連 秋月電子通商 電子部品 ネット通販
STM32F4DISCOVERYを購入しましょう
ビルド環境の設定
まずは,micropythonをビルドするときに使うgcc-arm-embeddedを導入しましょう. Linuxの方はaptやyumを叩けば入ると思いますが,osxの場合はbrewでなぜかコケたのでこちらからバイナリ
https://launchpad.net/gcc-arm-embedded/+download
をダウンロードしましょう.そのあとは解凍してテキトーなディレクトリにコピーまたは移動して,そこにpathを追加してください.
次にmicropythonに書き込むためのライタ(ソフトウェア)を用意します. dfu-utilというのがありまして,homebrewからインストール可能です
brew install dfu-util
やってみる
とりあえず,まずはここまでの流れをやってみます.
マシンのシステム環境は以下の通りです
gcc-arm-none-eabiのバイナリはhome以下に置くとします.
/opt以下に置きたい場合は適宜読み替えて行なってください.
なお,curlでダウンロードするものはこの記事が出てから時間が経つと落とせなくなる可能性があります.もしリンクが切れていたら適宜修正してください.
では以下作業内容
brew install dfu-util cd ~/ curl -L -O https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-4_8-2014q3-20140805-mac.tar.bz2 tar xvf gcc-arm-none-eabi-4_8-2014q3-20140805-mac.tar.bz2 cp -r gcc-arm-none-eabi-4_8-2014q3 ~/gcc-arm-none-eabi echo 'PATH=$PATH:$HOME/gcc-arm-none-eabi/bin' >> ~/.zshrc exec $SHELL -l
これだけです.
micropythonをビルド
micoropython本体はgithubに上がってますので,ダウンロードしてビルドすればOKです. ビルドの際には今回使うマイコンをオプションで指定する必要があるので注意です. micropython/micropython · GitHub
ビルドしたらdfu-utilを使って購入したボードにインストール作業に移ります.インストール前に,まずはボードの裏側にあるジャンパピン二つのうちどちらかを取って,p2側の21pin-22pin(BOOT0とVDDのところ)に刺します.そのあとボードをパソコンに繋ぎましょう.繋ぐときにはmicrousbとminiusbの2ポートがボードから出ていると思うので.二つともパソコンに繋ぎます.
やってみる
今の内容を実際にやってみます. なお,ボードは予めパソコンと繋いでおいてください.
git clone https://github.com/micropython/micropython.git cd micropython/stmhal make BOARD=STM32F4DISC dfu-util -a 0 -D ./build-STM32F4DISC/firmware.dfu
これだけです. ここまで済んだらp2の21pin-22pin(BOOT0-VDDのところ)に刺してあるジャンパピンを元の場所に戻しておきましょう.
Lチカで遊ぶ
無事に済めば
/dev/tty.usbmodemなんとか
というデバイスを検出すると思います.
シリアルターミナルソフトウェアでそのポートに接続すればOKです. ここではpyserialに付属してくるminiterm.pyを使って接続します.
やってみる
pip install pyserial exec $SHELL -l miniterm.py /dev/tty.usbmodemなんとか
これだけでインタラクティブシェルが立ち上がると思います. このインタラクティブシェルはマイコンボードで動いております(すごい時代だ).
ではLチカしますね.
led = pyb.LED(1) while True: led.on() pyb.delay(1000) led.off() pyb.delay(1000)
これだけです.
なお,気づいたかもしれませんが,USBフラッシュメモリのように,ボードがマシンにマウントされます.このなかにmain.pyというのがありまして,そこにコードを書いても動かすことができます.
まとめ
micropythonをSTM32F4DISCOVERYにインストールする手順をざっくり紹介しました.