Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
bluepillにArduino Bootloaderを書き込む

用意するもの

1. Homebrew をupdate

$ brew update

2. st-linkをインストール

$ brew install stlink

3. binをダウンロード

https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/STM32F1/binaries

generic_boot20_pc13.bin

4. st-linkとbluepillを接続

SWD端子とSTLINKを繋ぐ。

https://wiki.stm32duino.com/index.php?title=Blue_Pill

を見ながら間違えないように繋ぐ(間違えたw)

5. 繋がってる? を確認

$ st-info --probe

みつかったらOK

6. 書き込み

ダウンロードしたeneric_boot20_pc13.binを、~直下に置く (めんどくさいので)
そのうえで、

$ st-flash write ./generic_boot20_pc13.bin 0x8000000

これで書き込める

7. Ardino IDEに STM32入れる

Arduino IDEを起動して、Board ManagerからArduino SAM Boards (32-bits ARM Coretex-M3) by Arduinoを選んで入れる。

これだけでは入らない! dueがはいるだけ! (依存あるから入れる?謎)

つづけて、

https://github.com/rogerclarkmelbourne/Arduino_STM32

をダウンロードして、解凍して、

Arduino IDEの中の hardware フォルダ下にコピー。 (Arduino_Arduino_STM32というフォルダ名にする)

Arduino IDEを再起動すると、STM32用のボード一覧が表示されるようになります。

8. Lチカ試してみる

blinkを開いて、ボードからGeneric STM32F103C Seriesを選んで書き込みます。
ここで注意。

一番最初、何も書き込まれていないときは、DFUモードから抜けないからそのまま書き込めるけど、2回目以降はDFUからすぐに抜けてしまいます。
リセットを押した直後1-2秒だけ書き込める感じです。

Arduinoの書き込み後、ビルドが走るので、「Arduinoの書き込みを押した後0.5秒後くらいにボードのリセットを押す」と、書き込み成功します。 むずかしい。。。w

Lチカは動きました。(このボードでLED_PINはPC13になってる) リセット押すタイミングも慣れればOK。

参考

https://qiita.com/nanbuwks/items/ba37f049f45378da0e2b
https://ht-deko.com/arduino/stm32f103c8t6.html
http://morecatlab.akiba.coocan.jp/lab/index.php/2016/02/arduino_stm32-bpb/

ぐぬぬ

まだ Wire Libraryに Slaveが実装されていないようだ。。。

が、

https://github.com/rogerclarkmelbourne/Arduino_STM32/pull/408

WireSlave.h だと...?

明日試してみよう...

@tadfmac

This comment has been minimized.

Copy link
Owner Author

@tadfmac tadfmac commented Aug 2, 2020

追記。

MacOS新しいので、やとうろしたら、下記のようなエラーが。

Failed to open serial device.
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!

環境は MacOS Mojave 10.14.6 : Catarinaじゃない

libusbを新しくすればOK

brew install libusb
brew link libusb

上記実施後、Arduino IDEから書き込めた。

以前と違う (?) と思うところ。

書いたのが2年前なので記憶の方が怪しい?という説もあるけど。

  • RESETとか押さなくても何度も書き込めるようになった。
  • 書き込んだBootloaderは generic_boot20_pc13_fastboot.bin

Arduino の device 設定は下記の通り。

setting

@tadfmac

This comment has been minimized.

Copy link
Owner Author

@tadfmac tadfmac commented Aug 2, 2020

@tadfmac

This comment has been minimized.

Copy link
Owner Author

@tadfmac tadfmac commented Aug 3, 2020

さらに追記。(来年またわからなくなってる自分が居そうなので)

Bootloader書き込み済みのDeviceへのBootloaderアップロード方法

買ったままの状態のbluepillはファームが何も書き込まれていないため、ジャンパの設定に関わらずDFUで起動する。
このため、st-info --probe でデバイスを見つけることができる。

一度 (bootloader含め) ファームをFlashに書き込むと、Flashからの起動が優先になるので、
ジャンパーを切り替えないとDFUで起動しなくなる。

Bootloaderを書き込み直したい、などの時は、ジャンパーを下記のように設定してからデバイスをST-Linkに接続すると、st-info --probe で認識できるようになる。

stm32

@tadfmac

This comment has been minimized.

Copy link
Owner Author

@tadfmac tadfmac commented Aug 3, 2020

@tadfmac

This comment has been minimized.

Copy link
Owner Author

@tadfmac tadfmac commented Sep 13, 2020

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.