背景
feather-nrf52832とはadafruitが作った開発ボードです。技適マークが付いたMTBT42が載っており、それにはBLE通信可能なnrf52832が内蔵されています。
featherはadafruitが開発したブートローダーを搭載しているためUSB経由でプログラムをアップロード可能になっていますが、n-ableなど他の仕組みを使いたい場合はjtagなどを通してブートローダーの更新が必要です。
調べたところstm32用のプログラム書き込み装置であるstlink2がnrf52系のプログラム書き込みにも使えると分かったので、それでの書き込み方法を把握しました。
備忘録として実施内容を記事に残します。
使ったもの
- feather-nrf52832
今回プログラムを書き込む対象です。
スイッチサイエンスで購入しました。
Adafruit Feather nRF52 Bluefruit LE - ブレッドボード
信号線を仲介させます。 - 耐熱電線
パッドの信号線を引き出します。 - はんだごて
基板のパッドに電線をはんだ付けします。 - stlink2
stlink3系はstm32以外のマイコン非対応になったらしいので、stlink2が要るようです。
自分はaliexpressで購入したコピー品を利用しました。
amazonで売られているコピー品でも動くと思います。
stlink2 - amazon - ジャンパワイヤ
stlinkとブレッドボードを繋ぎます。 - PC
stlink2を繋いでプログラムの書き込みを行います。
ubuntu24.04が載ったPCを利用しました。
ブートローダー書き込み用の線を引き出してstlink2に接続
feather-nrf52832のブートローダー書き込みピンはピンヘッダには引き出されておらず、基板の裏か表のパッドから引き出す必要があります。feather-nrf52系の資料ページの回路図で表面のパットの各ピンの役割を把握しました。
SWDIOとSWCLKに電線をはんだ付けして引き出しました。
図の赤線がSWDIO、白線がSWCLKです。
SWDIO、SWCLK、GND、3.3Vをstlink2に繋ぎました。
featherにUSB給電する場合は3.3V接続は無くても良いです。
stlinkを利用した書き込みの配線は準備完了です。
openocdをインストール
jtagを利用するためのオープンソースのプログラムopenocdをインストールします。ubuntu OSの場合はaptコマンドでインストールできます。
sudo apt install openocd
ブートローダーをダウンロード
featherのブートローダーはgithubで公開されており、ntf52832向けは下記の場所にあります。https://github.com/adafruit/Adafruit_nRF52_Arduino/tree/master/bootloader/feather_nrf52832
記事を書いている時点で最新のhexファイルfeather_nrf52832_bootloader-0.9.1_s132_6.1.1.hexをダウンロードしました。
openocdで書き込み
stlinkをPCに接続し、インストールしたopenocdでダウンロードしたファームウェアを下記のコマンドで書き込めます。openocd \
-f interface/stlink.cfg \
-f target/nrf52.cfg \
-c init \
-c "reset init" \
-c halt -c \
"nrf5 mass_erase" \
-c "program feather_nrf52832_bootloader-0.9.1_s132_6.1.1.hex verify" \
-c "reset run" \
-c exit
コマンド実行画面でprograming fnishedと表示され、featherの赤いLEDが初期プログラムのぼんやり赤いLEDが光る動作になっていれば書き込み成功です。
参考: OpenOCD flashing nrf52840 (supermini) via st-link v2 issue
余談: adafruit公式の書き込み手順はnrfjprog推奨
adafruit公式のブートローダー書き込み手順ではntfjprogを利用するコマンドが紹介されています。しかしながら、自分のubuntuでは「JLinkARM.dll reported error」が解消できなかったのでopenocdを使いました。
x86用をインストールしたのにARM関係のファイルを呼ぼうとしているのが解せません。
おわり
stlinkとopenocdを利用してnrf52832にプログラム featherのブートローダーを書き込めました。これによりfetherを利用して他のプラットフォーム n-ableなどのプログラムを試したり、fetherの元の仕様に戻したりが可能になりました。
参考
feather-nrf52832OpenOCD flashing nrf52840 (supermini) via st-link v2 issue






0 件のコメント :
コメントを投稿