1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Moddable SDK 4.0.0のnRF52のBootloaderをSeeed XIAO BLE (nRF52840)へ書き込む

Last updated at Posted at 2023-09-06

はじめに

Seeed XIAO BLE (nRF52840)は購入状態でDFUモードにした時に、PC(macOS)で認識されるドライブ名が「XIAO-SENSE」です。

Moddable SDK 4.0.0でサポートされたnRF52のデバイス定義ファイルでは、ドライブ名が「MODDABLEnRF」となっています。

$MODDABLE/build/devices/nrf52/targets/xiao/manifest.json

(抜粋)
"UF2_VOLUME_NAME": "MODDABLEnRF"

デバイス定義ファイルの"UF2_VOLUME_NAME"の設定を修正("MODDABLEnRF" → "XIAO-SENSE")することで、問題なくModdable SDKのサンプルプログラムを動かすことができました。

その後、GitHubのDiscussionsで問い合わせたところ、Moddable用のBootloaderを書き込んで動かすことを想定している、という回答を得ました。

Moddable SDK 4.0.0のnRF52のBootloader

「Using the Moddable SDK with nRF52」のページを参照すると、Bootloaderの記載があります。

Bootloaderはビルドする必要があります。

Moddable用のBootloaderのビルド手順

$ git clone https://github.com/Moddable-OpenSource/Adafruit_nRF52_Bootloader --recurse-submodules
$ cd Adafuit_nRF52_Bootloader
$ make BOARD=moddable_xiao

正常にビルドが完了すると、_build/build-moddable_xiaoディレクトリ配下にBootloaderが作成されます。

$ cd _build/build-moddable_xiao/
$ ls -1 moddable_xiao_bootloader*
moddable_xiao_bootloader-0.6.0-nosd.hex
moddable_xiao_bootloader-0.6.0-nosd.uf2
moddable_xiao_bootloader-0.6.0.hex
moddable_xiao_bootloader-0.6.0.out
moddable_xiao_bootloader-0.6.0.out.map
moddable_xiao_bootloader-0.6.0_s140_7.2.0.hex
moddable_xiao_bootloader-0.6.0_s140_7.2.0.zip

Moddable用のBootloaderを書き込む

Seeed XIAO BLE (nRF52840)をDFUモードにした時にシリアルデバイスとして認識されます。
DFUモードにするには、小さなRESETボタンをすばやく2回押します。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f37323437392f61336434623261392d336632342d336132352d336332612d3866653665336535306239642e6a706567.jpg

$ ls -1 /dev/cu.usbmodem*
/dev/cu.usbmodem1101

adafruit-nrfutilコマンドを使用して、Moddable用のBootloaderを書き込みます。

$ pip3 install adafruit-nrfutil

$ adafruit-nrfutil --verbose dfu serial -pkg moddable_xiao_bootloader-0.6.0_s140_7.2.0.zip -p /dev/cu.usbmodem1101 -b 115200 --touch 1200

正常に書き込みが完了すると、PC(macOS)で認識されるドライブ名が「MODDABLEnRF」となります。

注意

1回書き込むと、Moddable用のBootloaderではDFUモードにしてもシリアルデバイスとして認識されなくなります。
オリジナルのBootloaderへ戻す場合や、将来Moddable用のBootloaderをアップデートする場合は、J-LinkやST-LinkなどのBootloaderを書き込むためのデバイスが必要です。

OpenOCDとST-Link V2を使ってBootloaderを書き込む

接続

Seeed XIAO BLEの基板の裏面にSWCLKとSWDIO端子があり、Bootloaderを書き込むためのデバイスと接続する必要があります。

beibupinout3.png

SWCLKとSWDIO端子にジャンパーケーブルを直接ハンダづけすることもできますが、実用上はExpansion Board Baseを使用した方が便利です。

Bootloaderを書き込むためのデバイスとしてST-Link V2 (USBドングル)を使用し、Expansion Board Base経由でXIAO BLEと接続します。

IMG_2230.jpg

Bootloaderを書き込む

OpenOCDをインストールし、openocdコマンドを使用してBootloaderを書き込みます。

$ brew install openocd

Moddable用のBootloaderを書き込む場合

$ openocd -f interface/stlink-v2.cfg -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program /Users/kitazaki/tmp/20230828_1/Adafruit_nRF52_Bootloader/_build/build-moddable_xiao/moddable_xiao_bootloader-0.6.0_s140_7.2.0.hex verify" -c reset -c exit

BootloaderをオリジナルのBootloaderに戻す場合

Arduino IDEをインストールし、ボードマネージャーでSeeed XIAO BLEを追加すると、Bootloaderもダウンロードされるので、そのファイルを使用します。

$ openocd -f interface/stlink-v2.cfg -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program /Users/kitazaki/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.4/bootloader/Seeed_XIAO_nRF52840_Sense/Seeed_XIAO_nRF52840_Sense_bootloader-0.6.2_s140_7.3.0.hex verify" -c reset -c exit

OpenOCDとJ-Linkを使ってBootloaderを書き込む

接続

Bootloaderを書き込むためのデバイスとしてJ-Linkを使用し、Expansion Board Base経由でXIAO BLEと接続します。

IMG_2417.jpg

Moddable用のBootloaderを書き込む場合

$ openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program /Users/kitazaki/tmp/20230828_1/Adafruit_nRF52_Bootloader/_build/build-moddable_xiao/moddable_xiao_bootloader-0.6.0_s140_7.2.0.hex verify" -c reset -c exit

BootloaderをオリジナルのBootloaderに戻す場合

$ openocd -f interface/jlink.cfg -c "transport select swd" -f target/nrf52.cfg -c init -c "reset init" -c halt -c "nrf5 mass_erase" -c "program /Users/kitazaki/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.4/bootloader/Seeed_XIAO_nRF52840_Sense/Seeed_XIAO_nRF52840_Sense_bootloader-0.6.2_s140_7.3.0.hex verify" -c reset -c exit
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?