結局、ブートローダとか関係なくArduinoのスケッチを書き込む方法が一番簡単そうです。この方法ならブートローダの書き込みも要らないはずです。
1.環境準備
Arduino IDEを起動したら、ボードマネージャで「Arduino SAM Boards (32-bits ARM Cortex-M3) bu Arduino」をインストールします。その後、以下の手順で ~/Arduino/hartdware の下にライブラリを追加します。
~$ sudo apt install stm32flash ~$ cd Arduino/hardware ~/Arduino/hardware$ git clone https://github.com/rogerclarkmelbourne/Arduino_STM32
追加したら、 ~/Arduino/hardware/Arduino_STM32/tools/linux/serial_upload を修正します。
#!/bin/bash #$(dirname $0)/stm32flash/stm32flash -g 0x8000000 -b 115200 -w "$4" /dev/"$1" stm32flash -g 0x8000000 -b 115200 -w "$4" /dev/"$1"
2行目がもとの行で、3行目が修正した行です。要は、aptでインストールしたstm32flashを使うように修正します。(注:パラメータ -g の後の値は7桁です。うっかり、0x80000000とか8桁書いてしまうと動かなくて悩むことになりますorz)
完了したら、スケッチ例で Blink を開きます。Blinkを開いたら、使用するポートをPC13に書き換えます。また、ボードマネージャではボードに合わせてGeneric STM32F103C Seriesを選択します。
- ボード : STM32F103C8またはSTM32F103CBを選択
- Upload method : Serial
- シリアルポート : /dev/ttyUSB0
に設定します。
2.ボード側の準備
ボード側はUSBシリアルケーブルと接続します。
- USBシリアルのVcc ⇔ STM32F103ボードの+5V
- USBシリアルのGND ⇔ STM32F103ボードのGND
- USBシリアルのTX ⇔ STM32F103ボードのA10
- USBシリアルのRX ⇔ STM32F103ボードのA9
接続したら、BOOT0のジャンパを1側にセットして、PCに接続します。電源もUSBシリアルから供給します。
3.ビルドと書き込み
ボード上のリセットスイッチを押してブートローダを待機させます。その状態で Arduino IDE の書き込みボタンをクリックします。
しばらくすると書き込みに成功してプログラムが動作を始めるはず・・・・です。
2回目以降の書き込みはリセットボタンを押してブートローダを待機させて、Arduino側で書き込み操作をすれば行けるようです。