micropythonをはじめよう(STM32F401編)
MicroPython Advent Calender 2日目です。
昨日はオライリーで出版されたProgramming with MicroPythonの第1章を紹介しました。
今日は購入して長らく放置していたSTM32マイコンでmicropythonを動かしてみたいと思います。
ターゲットとなるのはSTM32F401のNUCLEO-F401REボードです。
秋月電子で手頃な価格で入手できます。
本家のpyboardはSTM32F405ですが、STM32F401は以下のように公式にサポートされているわけではないのですが、micropythonの実行が可能です。
wikiにも記載されています。
Board NUCLEO F401RE · micropython/micropython Wiki · GitHub
These boards are not officially supported but should be fully functional
ソースをコンパイルして書き込みが必要となりますが、pyboardはいい値段がするので気軽に試したいなら、こちらの方がよいかもしれません。
・ビルド&書き込み
それでは実際に試してみたいと思います。
以下の手順はUbuntu 16.04で行いました。他の環境では試すことが出来ていないのですみません。
・必要なパッケージのインストール
$ sudo apt-get install libffi-dev
$ sudo apt-et install gcc-arm-none-eabi
・書き込みツール(Stlink Tools)のインストール
$ sudo apt-get install cmake
$ sudo apt-get install libusb-1.0.0-dev
$ git clone https://github.com/texane/stlink.git
$ cd stlink
$ make release
$ make debug
$ cd build/Release
$ sudo make install
$ sudo ldconfig
・micropythonのビルドと書き込み
$ git clone https://github.com/micropython/micropython
$ cd micropython/ports/stm32/
$ make BOARD=NUCLEO_F401RE deploy-stlink
こんな感じで書き込めました。
$ make BOARD=NUCLEO_F401RE deploy-stlink
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Writing build-NUCLEO_F401RE/firmware0.bin to the board via ST-LINK
st-flash 1.4.0-13-g1969148
2017-12-02T10:49:40 INFO common.c: Loading device parameters....
2017-12-02T10:49:40 INFO common.c: Device connected is: F4 device (Dynamic Efficency), id 0x10016433
2017-12-02T10:49:40 INFO common.c: SRAM size: 0x18000 bytes (96 KiB), Flash: 0x80000 bytes (512 KiB) in pages of 16384 bytes
2017-12-02T10:49:40 INFO common.c: Attempting to write 14984 (0x3a88) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08000000 erased
2017-12-02T10:49:40 INFO common.c: Finished erasing 1 pages of 16384 (0x4000) bytes
2017-12-02T10:49:40 INFO common.c: Starting Flash write for F2/F4/L4
2017-12-02T10:49:40 INFO flash_loader.c: Successfully loaded flash loader in sram
enabling 32-bit flash writes
size: 14984
2017-12-02T10:49:40 INFO common.c: Starting verification of write complete
2017-12-02T10:49:41 INFO common.c: Flash written and verified! jolly good!
Writing build-NUCLEO_F401RE/firmware1.bin to the board via ST-LINK
st-flash 1.4.0-13-g1969148
2017-12-02T10:49:41 INFO common.c: Loading device parameters....
2017-12-02T10:49:41 INFO common.c: Device connected is: F4 device (Dynamic Efficency), id 0x10016433
2017-12-02T10:49:41 INFO common.c: SRAM size: 0x18000 bytes (96 KiB), Flash: 0x80000 bytes (512 KiB) in pages of 16384 bytes
2017-12-02T10:49:41 INFO common.c: Attempting to write 287256 (0x46218) bytes to stm32 address: 134348800 (0x8020000)
Flash page at addr: 0x08060000 erasedEraseFlash - Sector:0x7 Size:0x20000
2017-12-02T10:49:46 INFO common.c: Finished erasing 3 pages of 131072 (0x20000) bytes
2017-12-02T10:49:46 INFO common.c: Starting Flash write for F2/F4/L4
2017-12-02T10:49:46 INFO flash_loader.c: Successfully loaded flash loader in sram
enabling 32-bit flash writes
size: 32768
size: 32768
size: 32768
size: 32768
size: 32768
size: 32768
size: 32768
size: 32768
size: 25112
2017-12-02T10:49:52 INFO common.c: Starting verification of write complete
2017-12-02T10:49:56 INFO common.c: Flash written and verified! jolly good!
書き込みに成功したらシリアルコンソールを開きボードのリセットスイッチを押します。
$ sudo screen /dev/ttyACM0 115200
おなじみのREPL画面が開いてボード上のLEDでLチカができました。
というわけで秋月電子で売っているSTM32マイコンボードでmicropythonを実行してみました。