Top Page Index About Link Mail Form

AVR-Doperを avrdudeで使う(WindowsXP)

→AVR-Doper基板の概要

avrdude-GUIを作りましたのでそちらもご利用ください。

avrdude

 AVR-Doperは STK500(Ver.2)互換なのですが、書き込むプログラムサイズが大きくなると AVR Studeo 4などから使った場合に動作が不安定になるようです(2007年6月現在)。WinAVRに含まれる avrdude.exe を使った方がいいでしょう。

avrdude(WinAVR)のインストール

 avrdudeの Windows用実行ファイルは WinAVRに含まれます。AVR-Doperを使うには avrdude バージョン 5.3.1以降が必要で、WinAVR-20070525 に入っています。インストールファイルをダウンロードして実行して下さい。

WinAVRインストール言語選択

 インストールの際の言語を選択します。Japaneseでいいでしょう。

 インストール開始〜。

 ライセンスの確認。

 インストールするフォルダを選択します。デフォルトのままでいいと思います。

 ここも通常はデフォルトでいいと思います。しかし、GCCなどの開発環境としては旧バージョン(20060421版)の方がまだ安定しているようです。avrdudeのみ最新版を使い、他のツールは旧バージョンを使う場合は下の画面のようにして下さい。


 旧バージョンを残して開発環境はそちらを使い、avrdudeの最新版だけ使いたい場合はこの画面のように「Add Directories to PATH (Recommended)」のチェックを外して下さい。

 全く新規にインストールする場合はこのチェックを外すと開発ツールが動作しません。

 インストールが始まります。終わるとブラウザに「WinAVR User Manual」が表示されます。

WSHを使って楽々書き込み

 avrdude.exeはコマンドラインツールなので cmd.exeから使うのですが、この引数の設定がけっこう面倒です。avrdude-gui というのもありますが、これは開発が止まっていて、COM8までしか使えず、AVRISPmkIIなどの USBは指定できません。バッチファイルを作ってもいいのですが、ここでは WSHを使います。

 なお、AVR-Doperは HIDモードで使いますうちの基板の場合は JP1のジャンパ(USBコネクタのすぐ脇)をショートした状態で USBに接続して下さい。ドライバは不要です。

MMCboot-writeFuse.vbs
device = "m168"
efuse = "F8"
hfuse = "D5"
lfuse = "E2"

port = "avrdoper"
avrdude = "c:\WinAVR-20070525\bin\avrdude.exe"

if (MsgBox("device : " & device & vbNewLine & "efuse : " & efuse & "  hfuse : " & hfuse & "  lfuse : " & lfuse & vbNewLine & vbNewLine & "以上の設定でヒューズを書き込みます。よろしいですか?", vbYesNo Or vbQuestion, "avrdude ヒューズ設定") <> vbYes) then
	WScript.Quit
end if

Set objShell = WScript.CreateObject("WScript.Shell")

arg = " -c stk500v2 -P " & port & " -p " & device

if (hfuse <> "") then
	arg = arg & " -u -U hfuse:w:0x" & hfuse & ":m"
end if
if (lfuse <> "") then
	arg = arg & " -u -U lfuse:w:0x" & lfuse & ":m"
end if
if (efuse <> "") then
	arg = arg & " -u -U efuse:w:0x" & efuse & ":m"
end if

objShell.Run "%comspec% /k " & """" & avrdude & """" & arg

 ↑こちらの内容をコピーペーストして *.vbsファイルを作って下さい。deviceや、各fuseの値はターゲットに応じて書き換えます。avrdude.exe を別のフォルダにインストールした場合は avrdude のパス名も書き換えてください。拡張ヒューズの無いデバイスの場合は efuse の値を "" にして下さい。デバイス名は例えば ATtiny13 は t13、ATmega88 は m88 などと省略します。

 ↓こちらはプログラム(Flash)の書き込みです。

MMCboot-writeProgram.vbs
device = "m168"
hexFile = "MMCboot.hex"

port = "avrdoper"
avrdude = "c:\WinAVR-20070525\bin\avrdude.exe"


if (MsgBox("device : " & device & vbNewLine & "HEXファイル : " & hexFile & vbNewLine & vbNewLine & "以上の設定でプログラムを書き込みます。よろしいですか?", vbYesNo Or vbQuestion, "avrdude プログラム書き込み") <> vbYes) then
	WScript.Quit
end if

Set objShell = WScript.CreateObject("WScript.Shell")

arg = " -c stk500v2 -P " & port & " -p " & device
arg = arg & " -U flash:w:" & hexFile & ":a"

objShell.Run "%comspec% /k " & """" & avrdude & """" & arg

 ヒューズの場合と同様にデバイス名と HEXファイル名を書き換えて下さい。