入手したボード用 Arduino STM32用ブートローダの作成
AliexpressにてSTM32F103RCT6搭載miniボード(写真の上のボード)を
入手したのですが、Arduino STM32環境で使うためのブートローダが
用意されていないため、ソースからビルドして用意しました。
その時のまとめメモです。
ブートローダの作成はWindows 10環境にて行いました。
ボードの調査
ボート別にたくさんのブートローダが用意されていますが、基本的な相違は、
1) ボード上のLEDの制御用ポート番号
2) 永続モード設定用のボタン用のポート番号
です。この修正版を用意すれば良いわけです。
今回入手したボードは、2つのLEDがPC0、PC1に接続、1つのボタンがPC2に接続しています。
ボタンは、押すとLOWになるタイプです。
そこで、ブートローダで利用するLEDをPC0、ボタンをPC2として利用することにします。
ブートローダの作成には、下記の情報が大変参考になりました。
ただし、参考にした情報はLinux環境でのビルドのため若干方法が異なります。
参考サイト
・Visuariddim - STM32Duino Bootloaderの自前ビルドとか
ブートローダのビルドに必要なものの用意
1)Arduino STM32ブートローダのソースファイル
STM32duino-bootloader
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
上記からダウンロードまたは、gitコマンドでcloneを作成します。
ここでは、解凍したフォルダを D:\work\STM32duino-bootloader とします。
2)makeコマンド
Cygwinのmake.exeを利用しました。
※Cygwinのインストール時にmakeパッケージのインストール指定が必要です。
インストールしたCygwin環境のコマンドパスを調べておきます。
ここでは、C:\cygwin64\bin とします。
3)arm-none-eabi-gcc 4.8.x
Arduino IDEの環境のものを利用しました。
arm-none-eabi-gccの絶対パスの調査
Arduino IDEの環境設定画面下の赤枠部分のパスをクリックすると、
エクスプローラーが起動します。
そこから、フォルダpackagesに下記のパスがあることを確認します。
\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin\
エクスプローラーのアドレスバーの絶対パスをコピペして、
D:\work\STM32duino-bootloader\ の下に
環境設定用のバッチコマンド makeenv.bat をメモ帳で作成します。
makeコマンドへのパスが通っていない場合、
一緒にmakeコマンドのパスの設定します。
makeenv.bat の中身
PATH=%PATH%;C:\Users\Owner\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\bin;C:\cygwin64\bin;
※ アップデート等により、4.8.x以降のパス名称は異なる可能性があります。
ファイルの修正
新しいボード用のブートローダ作成にために、
D:\work\STM32duino-bootloader\にあるMakefile、config.h を修正します。
追加は面倒なので、既存のgeneric-pg15 用の定義をgeneric-pc0に変更します。
1)Makefileの修正
メモ帳で開いて、置換機能でpg15 ⇒ pc0、PG15 ⇒ PC0に置換して保存します。
2)config.hの修正
メモ帳でconfig.hを開き、PG15で検索して該当する定義を参照します。
次に、下記の修正をします。
ターゲット
PG15 ⇒ PC0
LED
GPIOG ⇒ GPIOC
15 ⇒ 0
Button
14 ⇒ 2
1 ⇒ 0
この修正は、LEDがPC0(1でON)、ボタンにPC2(0でON)を割り当てるためです。
保存してメモ帳を閉じます。
ブートローダのビルド
コマンドプロンプトを起動し、 D:\work\STM32duino-bootloader フォルダに移動し、
作成しておいた環境設定バッチコマンドを実行します。
さらに、makeコマンドを実行します。
ターゲットは generic-pc0 を指定します。
> make generic-pc0
ビルド処理が実行されて、程なく genenic_boot20_pc0.bin が
D:\work\STM32duino-bootloader\bootloader_only_binaries\ に
作成されます。
ボードへのブートローダの書き込み
ST-Linkを使って書き込みを行いました。
ボードを接続し、STM32 ST-Link Utilityにて、genenic_boot20_pc0.bin を読み込んで
書き込みを行いました。
ブートローダの書き込み後は、USB経由でのスケッチ書き込みです。
ボードを永続モード(スケッチ書き込み待ち状態)にて、最初のスケッチを書き込ます。
永続モードの設定は、ユーザーボタンを押したまま、リセットボタンを押します。
LEDが点滅して永続モードの状態を示します。
スケッチも問題なく書き込めました。
スケッチ書き込み後は、COMポートも認識出来ました。
以後、このボードはArduino IDE環境でUSB経由でスケッチが書き込めます。
ブートローダのコンパイルはLinux環境の方が楽ですね。
« Arduino STM32のBluePill用ブートローダについて | トップページ | MSXのジョイスティックポートを使ったシリアル通信 (1) »
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
« Arduino STM32のBluePill用ブートローダについて | トップページ | MSXのジョイスティックポートを使ったシリアル通信 (1) »
コメント