寝台急行はまなす

札幌駅 22:00発 増結12両編成 青森行き

micropythonをはじめよう(STM32F401編)

qiita.com

 

MicroPython Advent Calender 2日目です。

 

昨日はオライリーで出版されたProgramming with MicroPythonの第1章を紹介しました。

今日は購入して長らく放置していたSTM32マイコンでmicropythonを動かしてみたいと思います。

 

akizukidenshi.com

ターゲットとなるのは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チカができました。

 

f:id:ken5owata:20171202114537p:plain

 

というわけで秋月電子で売っているSTM32マイコンボードでmicropythonを実行してみました。