はじめに
(2017/08/31 追記) 手順がわかりにくいので新記事として書き直しました。こちらのページをご覧ください。
DigiSpark は ATTiny85 を使った Arduino 互換の小型ボード。下記のようにいろいろとすごい。
- 小さくて安い。USB コネクタに直挿しできる。正規品でも 1000円以下。クローン品だと200円以下。
- AVR マイコンのソフトウェア(V-USB) だけで USB を実現していて、HID デバイスとして認識され、ツール(micronucleus) を使ってファームウェアを書き込める。
- USB 通信機能は書き込み用だけでなくファームウェアからも呼び出せて、しかるべき通信をするファームウェアを書き込めば、USB 経由で PC と通信できる。
専用の書き込みツールはもともと Windows, Mac, Linux,OpenBSD に対応しているようだが、試してみたところ FreeBSD からも書き込みができたので報告する。通信用のファームウェアを書き込んで FreeBSD と USB で通信する方法も別稿で紹介する。
コマンドライン版書き込みツール micronucleus (Windows 版)
DigiSpark に対応した Arduino の統合開発環境https://sourceforge.net/projects/digistump/files/DigisparkArduino-Win32-1.0.4-May19.zip/download
(または https://www.arduino.cc/en/Main/Software/ )
をダウンロードする。Windows 用の書き込みツール Digispark-Arduino-1.0.4\hardware\tools\avr\bin\micronucleus.exe がこの統合開発環境に含まれている(Windows では書き込み前にドライバのインストールが必要。ドライバが古いと書き込みソフトが応答しなくなる。 こちらの手順を参照して Digistump.Drivers.zip をインストールする)。
Windows での使い方は
C:\> micronucleus.exe --run FILENAME.hex実行後、一度 DigiSpark を USB コネクタから抜いて挿しなおすと FILENAME.hex が DigiSpark に書き込まれる。
FreeBSD 用 micronucleus のコンパイル
この書き込みツール micronucleus の FreeBSD 版をコンパイルする。開発元のページ http://digistump.com/wiki/digispark/tutorials/connecting/ から、書き込みツール micronucleus の github にリンクがある。ここから micronucleus-master.zip をダウンロードして展開する。書き込みツールのソースファイル micronucleus-master/commandline/ を FreeBSD に置く。コンパイル時に Makefile の修正が必要。OS 判定部分の
else ifeq ($(shell uname), OpenBSD)を
else ifeq ($(shell uname), FreeBSD)に修正する。make を実行すると micronucleus が生成する(FreeBSD6.4 で確認。libusb-0.1.12_2 を ports でインストールしてある)。
micronucleus の実行には root 権限が必要。
# micronucleus --run FILENAME.hexで FILENAME.hex が書き込める。
備考
ATTiny85 には他の高機能のマイコンと異なり、専用のブートローダ領域がなく、割り込みベクタも移動できない。どうやってブートローダを実現しているのかと思ったら、下記のような工夫をしているそうだ(フラッシュメモリの先頭にある割り込みベクタをブートローダから書き換える。ブートローダはフラッシュの末尾に置く)。http://digistump.com/board/index.php?topic=168.5;wap2
C言語(avr-gcc) で開発したファームウェアを書き込んだところちゃんと動いたが、ウォッチドッグリセットがうまくいかない(ウォッチドッグリセットの発生後フリーズしてしまう。ファームウェアの書き込みモードに移行せず、書き込んだファームウェアも再始動しない)。リセットせずウォッチドッグ割り込みを発生するだけなら正常に動作する。
参考
DigiSpark 国内販売店http://www.elefine.jp/SHOP/Digispark.html/
DigiSpark 回路図
https://s3.amazonaws.com/digispark/DigisparkSchematicFinal.pdf
ArduinoのHEXファイルを残す方法
http://d.hatena.ne.jp/licheng/20130826/p1
参考にさせていただきました。どうもありがとうございます。
Digispark のヒューズ
hfuse=5FH, lfuse=F1H, efuse=FEH (RESET 無効, 低電圧プログラミング不可, BOD なし)
このコメントは投稿者によって削除されました。
返信削除書き込めない場合 (1) USB ハブを経由して接続する (2) root 権限があるか確認する で解決したことがありました。別の USB ポートに変えるだけで解決することもあります。
返信削除