Tomu USBへ転送したプログラムを固定する
極小サイズのマイコン「Tomu USB」を『ゲリラ豪雨警報器(仮)』へ組み込む際に出会った問題とその解決法についての記録です。
Tomu USBとの出会い
『ゲリラ豪雨警報器(仮)』の電源を安全にOFFにするために、これまではキーボードやマウスを都度接続してシャットダウン操作を実行していたのですが、それは不便だと感じていました。
できれば本体のどこかへ直接触れるだけで電源OFFできないものかと、新たな電子部品を調べていたなかで『ゲリラ豪雨警報器(仮)』と相性のよいサイズ・機能を備えていたもののひとつが、Tomu USB(I’m Tomu)でした。
開発中に一番困ったところ
転送したプログラムが消えてしまう(?)問題
Tomu USBをパソコンのUSB端子へ挿入すると、赤と緑のLEDが交互に光る「プログラム転送待ち状態」が自動的に始まります。
この状態で自作プログラムをTomu USBへ転送すれば、その場ですぐ動作確認できるのでプログラム開発はとてもスムースに進みます。
しかし、Tomu USBをパソコンから抜いて『ゲリラ豪雨警報器(仮)』へ挿しこむと転送したはずの自作プログラムが動くのではなく、また「プログラム転送待ち状態」が始まってしまう問題がありました。
自作プログラムのまま固定する方法
この問題の解決方法について調査を進めてゆくと、この問題が生じるのはTomu USBに内蔵されたソフトウェアToboot V2.0の仕様が原因であることがわかりました。
(TobootのGitHubリポジトリにあるReadmeの記載が一番参考になりました。)
解決方法にだけ触れると、C言語で自作プログラムを開発するときに、
toboot.h へ定義されているTOBOOT_CONFIGURATIONマクロへ、TOBOOT_CONFIG_FLAG_AUTORUNを渡しておけば、電源を入れ直しても自作プログラムが動作するようになります。
//TOBOOT_CONFIGURATION(0);
TOBOOT_CONFIGURATION(TOBOOT_CONFIG_FLAG_AUTORUN);
再度プログラム転送待ちにするには
こうして転送された自作プログラムをさらに上書きするためには、何らかの手段で「プログラム転送待ち状態」へ戻さなければなりません。
戻す方法は、下記CAP1AとCAP0Bの2箇所へ同時に触れたままで電源を入れる(=Tomu USBをUSB端子へ挿入する)ことです。
Tomu USBの小さな端子2箇所に指で触れながらUSB端子へ挿し込むのは少し難しいので、Readmeにて写真で紹介されてるようにピンセットなどの道具を使う方法が便利です。
(私は、折り曲げたゼムクリップを使っていましたが特に問題ありませんでした。)
まとめ
Tomu USB向けのプログラムを開発するうえで出会った問題の一つと、その解決方法について簡単にご紹介しました。これからTomu USBに触れられる方のお役に立てば幸いです。
このTomu USBが組み込まれた『ゲリラ豪雨警報器(仮)』は「Maker Faire Kyoto 2019」にて展示予定です。
材料
参考資料
- im-tomu.github.io(公式サイト)
- tomu-bootloader(Tobootのリポジトリ)
- tomu-hardware(Tomu USBのハードウェアのリポジトリ)
- USBポートサイズマイコン「Tomu」の開発環境構築 – Qiita
- I’m Tomuを動かしてみる(USBメモリにしてみる) – Qiita