2021年2月6日土曜日

nRF52840にブートローダーを書き込んでみた

 というわけで先月購入したnRF52840モジュールにこの前作ったBlack Magic ProbeでArduinoで使用するためのブートローダーを書き込んでみた。

今回はnRF52をArduinoで使用するためのAdafruit_nRF52_Bootloaderをした。このブートローダを書き込むとnRF52をUSBに接続するとUSB CDCのCOMポートとマスストレージデバイス(UF2)として認識されるので色々便利。

まずはnRF52840モジュールに直接ケーブルをはんだ付けしてUSBに接続できるようにした。

とりあえずUSBにつながればいいので、VBUS、D+、D-、GND、VDDにケーブルをはんだ付け。VBUSはUSBの5Vに直結してるけど、VDDはレギュレータ(ADP151AUJZ-3.3)を介して3.3Vを供給してる。

ちなみにこのままUSBにつないでもUSBデバイスとしてちゃんと認識されない。
ブートローダーを書き込むためにさらにBlack Magic ProbeをSWCとSWDに接続する。とりあえずブートローダ書き込んだらデバッグ端子は使わないだろうということで今回はグラバークリップで接続した。

そんでもってnRF52モジュールに電源を入れつつBlack Magic ProbeをUSBに接続。
GNU Arm Embedded Toolchainをインストールしてコマンドプロンプトでインストールしたディレクトリまで移動してarm-none-eabi-gdb.exeを起動。
Black Magic ProbeはCDCのCOMポートとして2ポート認識してるはずなのでどちらか片方がGDPでもう片方がデバッグ用のUARTのはずなんだけど、この環境では若いCOM番号がGDPでCOM11だった。環境によって変わるはず。
target extended-remote \\.\COM11
でCOM11に接続。\\.\はCOMポート番号が2桁以上に対応するために必要…
monitor swdp_scan
でSWDに接続されたマイコン一覧が出るはず。ここで一覧に出なかったら接続が間違ってるかも?
とりあえずNordic nRF52 M4が出ていたので
attach 1
で接続する。
あとはファームウェアを書き込むだけなので、パス入れるのが面倒なのでarm-none-eabi-gdb.exeと同じディレクトリにAdafruit_nRF52_BootloaderからAdafruit Feather nRF52840 Express用のファームウェアをダウンロードして入れてロードしてみた。
load feather_nrf52840_express_bootloader-0.4.0_s140_6.1.1.hex
のように指定するとファームを書き込める。
あとはquitでyを押して終了してUSBに指し直すとCOMポートとUSBマスストレージデバイスとして認識するはず。USBマスストレージデバイスとして認識したらINFO_UF2.TXTの中身を見ればブートローダーのバージョンとかが見れる。

とりあえずこれでArduinoで開発する準備ができた。
ちなみにVBUSをちゃんと繋がないとUSBデバイスとしてちゃんと認識しないのね…(ちょっとはまった。)
ブートローダ書き込むだけならやっぱりBlack Magic Probe安く作れていいな。


0 件のコメント:

コメントを投稿