Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

posted at

updated at

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

動機

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?