動機
Wio Terminalにデフォルトで入っていたゲーム「jumper」が公開されました。
jumper source code on GitHub
自作スケッチをWio Terminalに転送してゲームが出来なくなった人も、ここからスケッチをダウンロードしてArduino IDEでコンパイル、Wio Terminalへ書き込みすれば、またあの激ムズゲームを楽しむことができますw
ただ、、、
この「jumper」スケッチ、コンパイルするのにアレとかソレとか、Arduino IDEにいくつかのライブラリを入れないとコンパイルが通ってくれない、少し手のかかるスケッチでして、、、
もっと手軽にWio Terminalのソフトを入れ替えできないかなーと思い、調べました。
Arduino IDEってどうやって書き込んでいるの?
スケッチ(ここではsimple.ino)をコンパイルすると、arm-none-eabi-g++などが、.binや.hexを生成します。
ざっくりとした流れはこちら。
arm-none-eabi-g++
-> simple.ino.map
-> simple.ino.elf
arm-none-eabi-objcopy
simple.ino.elf -> simple.ino.bin
arm-none-eabi-objcopy
simple.ino.elf -> simple.ino.hex
Arduino IDE
-> simple.ino.with_bootloader.hex
bossac
simple.ino.bin --offset=0x4000 -> Wio Terminal
ポイントは最後のところ。
bossacというツールで、.binをオフセット0x4000でWio Terminalへ書き込んでいます。
もう一つの書き込み手段
Wio TerminalのブートローダーはUF2 Bootloaderというのを使っていて、ブートローダーモード(リセットを素早く2回やるやつね)にすると、USB接続しているPCにドライブが表示されるんです。
中を見ると、ファイルが3つ。
なんと、このドライブに.uf2というファイルをコピーすることで、Wio Terminalへソフトを入れ込むことができるんです!!
.uf2ファイルの作り方
.binを.uf2に変換するWebサイトを立ち上げました。
https://seeedjp.github.io/uf2/
使い方は、こちらをご参照ください。→ https://lab.seeed.co.jp/entry/2021/03/29/120000
ここにあるuf2conv.pyを使うと、.binから.uf2を作ることができます。
具体的なコマンドはこちら。
>python uf2conv.py -c -b 0x4000 -o jumper.ino.uf2 jumper.ino.bin
Converting to uf2, output size: 201216, start address: 0x4000
Wrote 201216 bytes to jumper.ino.uf2
>
-c
と-b 0x4000
のオプションを忘れずに。
まとめ
- Wio Terminalをブートローダーモードにすると、ドライブが出現
- ドライブに.uf2を放り込むと書き込まれる
- .uf2は、.binからuf2conv.pyを使って生成
おまけ
むずかしすぎ。