12
6

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 3 years have passed since last update.

Wio Terminalの実行ファイルを配布するなら.UF2を

Last updated at Posted at 2020-05-23

動機

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にドライブが表示されるんです。

image.png

中を見ると、ファイルが3つ。

image.png

なんと、このドライブに.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を使って生成

おまけ

むずかしすぎ。

image.png

12
6
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
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?