MakeCode for micro:bit のベータ版で、WebUSBが使えるようになったので、試してみました。詳細はこちら。
この記事の内容確認は、全てMac上のGoogle Chromeで行いました。Windows 10環境で動作しない場合は、以下の情報を参考にしてください
DAPLinkバイナリのダウンロード
まず、micro:bitのDAPLinkファームウェアを最新版に更新します。WebUSBに対応したファームウェアバージョンは、v0249以降になります。
DAPLinkファームウェアの書き込み
続いて、このDAPLinkファームウェアをmicro:bitに書き込みます。
- micro:bit 背面のリセットボタンを押しながら、USBケーブルでPCと接続する
-
MAINTENACE
という名前のドライブがマウントされるので、0253_kl26z_microbit_0x8000.hex
ファイルをコピーする
書き込みが終わるとUSBドライブはアンマウントられ、再びマウントされます。MICROBIT
という名前のドライブがマウントされれば成功です。
MakeCode for micro:bit から使ってみる
これで準備が出来たので、MakeCodeからWebUSBの機能を使ってみます。
-
MakeCodeを開く
https://makecode.microbit.org/ -
設定(画面右上の歯車のアイコン)から、Pair deviceまたは「デバイスを接続する」を選択する
- 表示されたデバイスを選び、接続ボタンを押す
これでデバイスが設定されます。ダウンロードボタンを押すと、プログラムがファイルとしてダウンロードされるのではなく、デバイス側に直接書き込まれます。
以上!!
これだけだと、「デバイスに直接書き込めるので、ホストパソコン側にファイルが増えなくて便利」だけなのですが、WebUSBの機能を使ったNode.jsパッケージがArmから公開されています。
DAP.js を使う
DAP.jsは、CMSIS-DAP のJavaScriptインタフェースです。CMSIS-DAPを通じてArmマイコンをNode.jsや、WebUSBを使ってブラウザから制御することが出来ます。詳細は、DAP.jsリポジトリの説明をご覧下さい。
以下は、WebUSBが有効なDAPLinkファームウェアが載ったmicro:bitを繋いで、examples/read-registers/
のサンプルコードを動作させた例です。
$ node webusb.js
Select a device to read registers:
1: BBC micro:bit CMSIS-DAP
R0: 00000000
R1: 200021e4
R2: 00000000
R3: 00000000
R4: 00000018
R5: 20002ce4
R6: 200024d4
R7: 0002f10f
R8: 00000000
R9: 00000000
R10: 00000000
R11: 00000000
R12: 0002f299
R13: 20003fec
R14: 0002f2a7
R15: 0001a832
いかがでしょうか?Armマイコン(Cortex-M0)の汎用レジスタの内容が表示されています。
今までは、専用デバッガだったり、OpenOCD/pyOCDとGDB等のデバッグソフトウェアを組み合わせて使ったりしなければ、マイコンのデバッグ制御が出来ませんでした。WebUSBなDAPLinkファームウェアとDAP.jsの組み合わせで、一気に可能性が広がりそうです。
コアレジスタやメモリを操作するためのDAPにアクセスする機能は全て実装されているので、そのうちウェブブラウザ上でマイコンのデバッグが出来るようになるのかも知れませんね。