フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« プログラマ XGecu TL866II Plus USB を入手しました | トップページ | 入手したボード用 Arduino STM32用ブートローダの作成 »

2019年2月15日 (金)

Arduino STM32のBluePill用ブートローダについて

Arduino STM32のBlue Pill用のブートローダ、
いつの間にか、いくつか修正があるようです。私も把握していませんでした。


Blue Pill用の3種類のブートローダ
1)bootloader_only_binaries/generic_boot20_pc13.bin
2)bootloader_only_binaries/generic_boot20_pc13_fastboot.bin
3)binaries/generic_boot20_pc13.bin

1)は従来のものですが、永続モードの設定ピンがPC14から、
PB2(=BOOT1のピン、ボードの黄色いピンです)に変更されています。

ここで、永続モードとはリセット直後にスケッチ書き込みを待ち続けるモードです。
初回のスケッチ書き込み時に利用します。

2)は、リセット直後0.5秒間のスケッチ書き込み待ちを省略したバージョンのようです。
まだ試していないため、挙動は不明です。

3)は1)にLチカスケッチを結合したバージョンです。
スケッチが結合されているため、永続モードに設定して
最初のスケッチを書き込む作業が省略できます。

永続モードからみで少々考察し、まとめてみました。
もしかしたら正しくないかもしれません。

USB経由でのスケッチ書き込みについて
Arduino STM32では、
Arduino IDEからUSB経由(Upload methodにSTM32duino bootloader指定)での
スケッチの書き込みは、次の手順で行われます。

1)USBシリアルポート経由でBluePillボードをリセットさせる
2)リセット後、ブートローダが0.5秒間書き込み待ちを行い、スケッチを書き込む

02

この手順では、スケッチに組み込まれているUSBシリアル通信ドライバも必要です。
ですので、初回のスケッチ書き込みが重要となります。
スケッチが書き込まれていないと、自動でのスケッチ書き込みが出来ません。

ブートローダだけ書き込んだ際の状態は...
・ブートローダには、USBシリアル通信ドライバは組み込まれていません。
・DFUはリセット直後時のみ有効、パソコンに接続してもデバイス認識されません。
・BluePillをパソコンに接続しても、COMポートへの接続は見えません。
・BluePillにブートローダだけでは、Arduino IDEからはリセットがかけられません。


ですので、初回のスケッチ書き込みは重要です。

初回スケッチ書き込み対策
・書き込みのタイミングで、手動でリセットボタンを押す
・または、永続モードに設定してスケッチの書き込み待ちを行った上で、
  スケッチの書き込みを行い、その後、永続モードの設定を解除する。

Arduino IDEのシリアルポートの設定を行っていない場合や、
ことなるシリアルポートを設定している場合でも、リセットボタンを押す、
永続モードに設定することでスケッチの書き込みを行うことが出来ます。

また、スケッチプログラムが暴走している場合、シリアルポートを経由での
リセットが機能しない場合があります。この場合も、リセットボタンを押す、
永続モードに設定することでスケッチの書き込みを行うことが出来ます。


USB経由の書き込みはトラブルも多いので、
上手くいかない場合は、ST-LINNK経由での書き込みを推奨します。

関連記事
・FASTBOOT option has been added to the maple bootloader

・BluePill bootloader updated to use boot1 as the button

« プログラマ XGecu TL866II Plus USB を入手しました | トップページ | 入手したボード用 Arduino STM32用ブートローダの作成 »

arduino」カテゴリの記事

STM32」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Arduino STM32のBluePill用ブートローダについて:

« プログラマ XGecu TL866II Plus USB を入手しました | トップページ | 入手したボード用 Arduino STM32用ブートローダの作成 »