WeAct STM32F411CEU6 Core Board で遊ぶ - Bootloaderについて


公式 github

この記事の目的

このボードで遊ぶときに,Bootloaderの挙動を知るのが大切だと考えました。
その調査等の作業記録です。

作業環境

  • ボード 上記の STM32F11CEU6 で,SPI Flashが実装されていないタイプです。
  • 主に以下の環境で確認しました。
    • macOS 10.14.6 Mojave
    • Windows10
    • Arduino 1.8.16

以下,とくに記載がない時は,USB-Cコネクターにパソコンを接続した状態です。

HID Bootloader - 出荷時のBootloader -

最初にMacに接続したらこれが見えました。

  • このBootloaderが動いている時は,PC13(青)のLEDが「シュワンシュワン」と点滅します。

  • Arduino IDEでスケッチ書き込みに使えます。(ちょっとクセあり? 別途記事にする予定)

    • スケッチを書き込んだあとは,スケッチの実行が優先され,一時的に見えなくなります。
    • 以下の手順でこのBootloaderを再起動できます。再起動して2回め以降のスケッチを書き込みます。
      • [KEY]を押しながら[RESET]
      • [RESET]を離したあとに[KEY]を離す
  • このBootloaderが動いている時に[KEY]を長押しして離すと,STM32 Bootloaderになります。(下記参照)

  • なにかの拍子にこのBootloaderを消してしまったら,以下からダウンロードします。

STM32 Bootloader

DFUモードなどとも書かれるアレです。

Method 1: When the power is on, press the BOOT0 key and the reset key, then release the reset key, and release the BOOT0 key after 0.5 seconds
Method 2: When the power is off, hold down the BOOT0 key, and release the BOOT0 at 0.5s after the power is on
DFU Mode: Use the data line to connect to the computer. If there is an unrecognized problem, you can heat the chip appropriately (25°C) and then re-enter the ISP mode
Serial Port Mode: Connect PA9 and PA10 of core board with USB serial port

このBootloaderを起動すると,STM32CubeProgrammerで認識され,書き込みが出来ます。
以下画面右上,いつもは [STLINK] になっている水色ボタンを [USB] にして,Connectします。

こんな感じでファームの書き換えが出来ます。(個人的に重要)

STM32内蔵のBootloaderです。DFUやシリアルで書き込みできます。STLINKを使えばもっと手軽にこのモードに入ることができるはずです。

Micropython

HID Bootloaderを消してMicropythonのファームを入れることになります。でもSTM32 Bootloader経由で戻ることもできます。

以下から .hex をダウンロードして,STM32 Bootloader等にして書き込みます。私の場合はSPI Flash無しですので firmware_internal_rom_stm32f411_v1.14-7.hex になります。

Micropythonで遊んだら,REPLで以下を実行すればSTM32 Bootloaderを起動できます!

import machine
machine.bootloader() 

おしまい

ここまでの情報で,

HID Bootloader
 <->
STM Bootloader
 <->
Micropython

がある程度自由に行き来でき,思いついた時に手軽に作業環境を変えることができますね!