Top Page Index About Link Mail Form

純正ツール(AVR Studio 4 + AVRISPmkII)でとりあえず HEXファイルを書き込む方法

 既に PICなど他のマイクロコントローラを扱い慣れた人ならともかく、全くの初心者が AVRを使う際に純正ツールの使い方で悩むことが多いようです。AVR Studio 4は開発用ツールなので多機能なのですが、それ故に「とりあえず出来合いの Intel HEXファイルを書く」場合にはどう操作したらいいか悩むでしょう。入口でつまづいてもなんなのでその方法を書いておきます。

2007.7.10

純正ツール(AVR Studio 4 + AVRISPmkII)でとりあえず HEXファイルを書き込む方法・Version 4.18 SP3編 New!

AVR Studio 4 のインストール
サービスパックのインストール
AVR Studio 4 の起動と書き込み
Stk500.exe + WSH で楽々書き込み
USBで使える、もっと安いのは無いの?
AVR-Doperの場合←安定して動作しないのでお薦めしません。
avrdudeを GUIで使う

AVR Studio 4 のインストール

 AVRISP mkIIは Atmel純正の AVRプログラマ(書き込みツール)です。多くのデバイスに対応しており、価格も 6,000円程度で比較的安価です。最近はシリアルポートの無いパソコンも多いのですが、これは USBに対応しています。純正ツールは Windows専用ですが、Linuxなどからも使うことができます。 Compass Labマルツパーツ館などで扱っています。

付属CDのスタート画面  まずは付属CDから AVR Studio 4をインストールします。オートスタートが ONになっている(セキュリティ上からはお薦めできませんが……)場合は左のような画面が開くと思います。開かない場合は CD-ROMの index.htmlを開きます。なお、AVRISP mkIIはまだ USBにつながないでください。

 この画面の右上の「Install AVR Studio」をクリックします。

AVR Studio 4のダウンロード(?)画面  その次の画面の下の「AVR Studio 4.12 b460」をクリックします。ブラウザの設定では直接実行されるかもしれませんが、されない場合は適当なフォルダにダウンロードしてから実行します。うちの場合はファイル名は「aStudio4.exe」でした。

AVR Studio 4 インストール開始画面  インストーラが起動した画面です。なんのことはない、普通のインストーラです。

AVR Studio 4 License Agreement画面  使用許諾画面です。念のためよく読んでおきましょう(と書いておく)。OKなら I accept…を選択。

USBドライバインストール選択画面  以降はデフォルトでインストールしていいと思いますが、途中、左のような画面が出ます。AVRISP mkIIは USBで使いますので必ずチェックを入れて有効にしてから「Next >」を押します。

AVR Studio 4 インストール完了  インストール完了です。

サービスパックのインストール

 2007年2月現在、AVR Studio 4 には SP4が出ていますので適用しておきましょう。公式サイトからダウンロードします。ひょっとしたらアドレスとか変わっているかもしれませんが、その時は適当に探して下さい。以前は普通にダウンロードできたような気もしますが、現在はユーザー登録が必要なようですね。たぶん無料だと思いますので個人情報を入力して aStudio4SPb498.exe を入手して下さい。

AVR Studio 4 Service Pack インストール画面  というわけでインストール画面です。

USBドライバの確認画面  やはり USBドライバをインストールするか聴かれます。もちろん、チェックを入れて有効にしてから「Next >」を押します。

サービスパックインストール完了  いろいろあって完了ー。

AVR Studio 4 の起動と書き込み

 の前に AVRISP mkIIをパソコンの USBに接続します。ドライバのインストールでいろいろ聴かれると思いますが、適当に対処して下さい。また、AVRISP mkIIのファームウェアをアップグレードするかとか聴かれますのでやはり適当に対処して下さい。なお、ファームウェアのアップグレードに失敗してもあわてずに、AVR Studio 4のメニューの「Tools」→「AVRISP mkII upgrade」でアップグレードできると思います。

 Windowsのスタートメニューの「プログラム」→「Atmel AVR Tools」→「AVR Studio 4」をクリックして起動します。

 ↓このボタンを押します。あるいは、メニューの「Tools」→「Program AVR」→「Connect...」。 Connボタン

AVRプログラマ選択画面  AVRプログラマ(ライタ・書き込み機)を選択します。今回は AVRISP mkII(USB)ということで。

AVRISP mkIIの操作ダイアログ  するとこのようなダイアログが出ます。なお、まだターゲット基板とつないでいないので「ターゲット基板の電源が入っていない」というエラーが出ますが、今の所は気にしないで進めて下さい。

Board画面  まず、「Board」タブをクリックして左のような画面を出します。ここで、真ん中ほどの所の「Oscillator and ISP Clock」の「ISP Freq」を設定します。これは書き込む際の書き込み機側のデータ転送クロックを調整するもので、ターゲットとなる AVRのクロックの 1/4以下にします。最近の AVRは工場出荷時は 1MHzの内蔵 CR発振になっているので、最初は念のため 125kHzにしておくのがいいと思います。

 クロックを選んだらその右の「Write」ボタンを押します。これを押さないとクロックが設定されません。また、これを押した場合、AVRISP mkIIの電源を切っても(というか、USBから抜いても)クロックは保存されています。以後は 128kHzとかの特に低いクロックで使わない限りは変更する必要はないでしょう。

AVRISP mkII  AVRISP mkIIは赤い線の方が 1ピン側になっています。向きを間違えないように注意してください。なお、手前にある変なコネクタはわたしが作ったもので、ISPコネクタの周囲が狭くてコネクタが挿入できない場合に使います。

AVRISP mkIIをターゲット基板に接続した図  コネクタを挿してターゲット基板の電源を入れます。すると、AVRISP mkIIの LEDが赤から緑色に変わり、プログラム可能なことを示します。なんらかのエラーがあると点滅したりします。点滅した場合はヘルプでも見て下さい。こちらのページには有志が日本語訳したものもありますので。(利用規程などを読んでからご利用下さい)

Program画面でデバイスを選択  「Program」タブをクリックします。ここの「Device」で使用する AVRの名前を選択します。まだ他のボタンは押さないで下さい

ヒューズ設定画面  AVRのヒューズを設定します。ヒューズは AVRの動作クロックや起動条件など、ハードウェア的かつ、基本的な動作の条件を設定するものです。

 「Fuses」タブをクリックします。タブをクリックするとその時点でのターゲット基板の実際のヒューズの値が読み込まれます。これを確認して、希望する値と違っていたら設定を変更します。ちょっと面倒。

 なお、間違えると ISP書き込みができなくなるヒューズ設定も存在します。特に以下は注意してください。

 →Engbedded AVR® Fuse Calculator

□Reset Disabled[RSTDISBL]
リセットピンを禁止して I/Oポートとして使う。これを設定すると ISPが実行できなくなる。
□Serial program Downloading (SPI) enabled [SPIEN=0]
ISP書き込みを禁止する。AVRISP mkIIでは通常は設定不可能になっている。
□Ext. 〜
外部クロック入力や水晶やセラミック発振子等を使う。実際の回路と異なっている場合は AVRが動作しなくなるので ISP書き込みもできなくなる。

 設定を確認して、変更するなら「Program」ボタンを押します。下の所の設定値を確認して、万が一「Reading fuses …」の所の値が指定と違う場合は設定値を確認して下さい。

再び Program画面  再度「Program」タブをクリックします。「Device」を念のため確認し、「Flash」の「Input HEX File」に書き込みたい Intel HEXファイルを入力します。もちろん、右側の「...」ボタンを押せばファイル選択ダイアログが出ます。

 ファイルを選択したらお待ちかね、「Program」ボタンを押します。あっけないほど簡単に書き込んでしまうと思います。下の欄に「OK!」が並べば完了!

 なお、「EEPROM」の方はデータ用 EEPROMの設定値のデフォルトファイル(*.eep)を書き込む場合のものです。プログラムの方は上記の「Flash」ですのでお間違えなく。

Stk500.exe + WSH で楽々書き込み

 上記のように HEXファイルを書くだけの場合、 AVR Studio 4の GUIよりもコマンドラインツールを使ったほうが楽な場合もあります。AVR Studio 4をデフォルトでインストールすると C:\Program Files\Atmel\AVR Tools\STK500Stk500.exe というコマンドラインから書き込めるソフトが入っています。

 これを使うには、コマンドライン(cmd.exe)を起動して呼び出すのですが、それはそれで面倒なので WSH(WindowsXP用)を書きました。下のファイルをダウンロード(名前をつけてリンク先を保存 / 対象をファイルに保存)してダブルクリックするだけで書き込みができます。

注意:WSHはウイルスもよく利用するしくみですので、実行する際は注意してください。ウイルスチェッカーなどであらかじめ調べてから実行するのがいいでしょう。もちろん、ウイルスパターンなどは常に最新の状態にして下さい。

 上のファイルでは MMCboot用の設定をします。MMCboot-writeProgram.vbsでは同じフォルダに MMCboot.hexが無いとエラーになります。また、MMCboot以外のヒューズ / HEXファイルを書き込む場合は、それぞれをテキストエディタで開いて最初の所の設定を書き換えてください。

SetClock.vbs
ispClock = "250kHz"

stk500 = "c:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"


if (MsgBox("ISPクロックを " & ispClock & " に設定します。よろしいですか?", vbYesNo Or vbQuestion, "AVRISPmkII ISPクロック設定") <> vbYes) then
	WScript.Quit
end if

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

objShell.Run "%comspec% /k " & """" & stk500 & """" & " -cUSB -I" & ispClock

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

stk500 = "c:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"


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

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

objShell.Run "%comspec% /k " & """" & stk500 & """" & " -cUSB -d" & device & " -f" & hfuse & lfuse & " -E" & efuse

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

stk500 = "c:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"


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

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

objShell.Run "%comspec% /k " & """" & stk500 & """" & " -cUSB -d" & device & " -e -pf -if" & hexFile

USBで使える、もっと安いのは無いの?

 なんとなく調べたらこんなのがありました。

どうやら共立オリジナルのもののようです。わたしは使ったことはありませんが、操作説明書(PDF)によると WindowsXPで GUIで操作できるようです。メジャーなチップなら対応しているようですし、いいかもしれません。

AVR-Doperの場合

 2007.6.17追記。AVR-Doperでは、以下の方法は安定して動作しないのでお薦めしません。avrdudeを使って下さい。→AVR-Doperを avrdudeで使う

 AVR-Doperは AVR標準の開発ツールである STK500(Ver.2)コンパチブル(サブセット)のプログラマです。その為、基本的には STK500と同じ操作法となります。

 インストール(WindowsXP)

  1. AVR-Doperの公式サイトから AVR-Doper-20xx-xx-xx.zip をダウンロードして解凍します。中に avrdoper.inf というファイルがあるはずですので、それを適当なフォルダに置いておきます。
  2. AVR Studioから使う場合、AVR-Doperは CDC-ACMモードで動かします。HIDモード指定ジャンパは外しておいてください。
  3. AVR-Doperを USBにつなぎます。自動認識されてドライバのインストールが始まりますが、ここでは Windows Updateは行わず、「一覧または特定の場所からインストールする」→「次の場所で最適のドライバを検索する」にして「次の場所を含める」の所で先程 avrdoper.inf を置いたフォルダを指定して下さい。なお、Windowsロゴテストには合格してない旨が出ますが無視して続行して下さい。これでドライバのインストールが完了するはずです。
  4. COMポート番号を確認します。スタートメニューの設定の「コントロールパネル」を開きます。その中の「システム」を実行し、「ハードウェア」のタブをクリックし、その中の「デバイスマネージャ」ボタンを押します。デバイスマネージャの中の「ポート(COMとLPT)」の直前の+マークをクリックして中身を見てみます。その中に「Communications Port(COMx)」というのがあると思います。この COMx がCOMポート番号です。これを憶えておきます。

 なお、上記で COMポート番号が 10以上の場合、AVR Studio 4.12からは使えなくなるようです。

 AVR Studio 4から使う

 基本的に AVRISP mkIIと同じです。connectボタンを押すとやはり最初にファームウェアのアップグレードするように言われますが、AVR-Doperの場合は別物ですので AVR Studioからはアップグレードできません。キャンセルしてください。(OKを押してもアップグレードは失敗します。)

 「Platform」は「STK500 or AVRISP」を指定して下さい。「Port」はインストールした時のポート番号を指定します。「Auto」ではうまくいきませんでした。以降は AVRISP mkIIと同じです。ISP Freqのクロックはデフォルト値は 02h(115.2kHz)になっています。電源が切れるとデフォルト値に戻ります。

 Stk500.exeから使う

 ispClockが異なるのと -cUSB オプションを -cCOMx (←COMポート番号を指定する)に変更すればこちらのスクリプトが使えます。ispClockは以下から選ぶようにして下さい。

ispClock = "1.845MHz" 実際は 600kHz
ispClock = "460.8kHz"  〃  429kHz
ispClock = "115.2kHz"  〃  333kHz
ispClock = "57.6kHz"   〃  273kHz
ispClock = "4.00kHz"  実際は 429kHzらしいので使わない方が無難
ispClock = "1.21kHz"                  〃