AVRISP mkIIを使用してAT90USB162にプログラムを書き込む方法として、Atmel Studio 6.2で使用できるAVRISP mkII cloneの製作で示した方法以外に、avrdude環境を利用する方法があります。avrdudeは、AVRマイコンにプログラムを書き込むための、オープンソースのソフトです。これを使えば、各種ライタを使って、AVRマイコンにプログラムを書き込めます。Arduinoの開発環境も、スケッチの書き込みにはavrdudeを使っています。avrdudeはGUIを持っておらず、パソコンのコマンドプロンプトからコマンドによりオプションを打ち込んで使います。
avrdude用ファームウェアをAVRISP mkII cloneへ書き込み
USBTiny-MkII SLIMのページの下の方にある最新版、1.1 version; compiled HEX file with toggle function and full C source code –130303 versionを使います。mkii_slim_130303.rarを展開するとcompiled-130303フォルダ配下にコンパイル済みファームのHEXファイル「AVRISP-MKII_130303_toggle_driver.hex」が適合しますのでこちらを書込みます。書き込みはFlipを使用しました。
AVRISP パソコン上にavrdude環境の構築
avrdudeを入手するにはWinAVRをダウンロードすると、その中にavrdudeが付いてきます(インストールすることでPathも設定されます)。WinAVRは、avr-gcc(AVRマイコン用のCおよびC++のGNU GCCコンパイラ)を中心とした、AVRマイコンの開発ツール群をパッケージにしたものです。
avrdude.exeはavrdudeの実行ファイルで、avrdude.confはavrdudeの設定ファイルです。インストール完了後、コマンドプロンプトから「avrdude」を入力すると、avrdudeのオプション一覧が表示されます。
AVRISP mkII cloneとTarget AVRの接続
Target AVR はAT90USB162とし、AVRISP mkII cloneから出る信号線を次の表に従って接続します。
AVRISP mkII | Target AVR |
---|---|
PB4 (18) (RESET ) | RESET (24) |
PB2 (17) (MOSI) | MOSI(17) |
PB3 (16) (MISO) | MISO(16) |
PB1 (15) (SCK) | SCK(15) |
GND | GND |
Vcc | Vcc |
- 今回使用したAVRISP mkIIは、AT90USB162を使用したcloneのため、AT90USB162のビン番号を()内に記述しました。
- Target AVRもAT90USB162で、AVRISP mkIIのRESET 信号は、Target AVRのRESETピン(24)に接続します。
- Target AVRには16MHzのクリスタル発信器を接続します。
AVRISP mkII は実行時にRESET信号をTarget AVRに出力してTarget AVRをリセットしてブートプログラムを起動します。その後、SPIインタフェースによりデータの送受信を行って、AVRISP mkII cloneとTarget AVR間でデータ交換を行います。
avrdudeコマンドによる AT90USB162への書き込み
AVRISP mkII cloneとTarget AVRの接続を行い、avrdude環境を構築したパソコンで、コマンドプロンプトから次のコマンドを入力します。
avrdude -v -p AT90usb162 -c avrispmkII -P usb -F
下記の内容が表示され、接続されているTarget AVR「AT90USB162」の情報が確認できます。
C:\Users\ne>avrdude -v -p AT90usb162 -c avrispmkII -P usb -F avrdude: Version 5.10, compiled on May 9 2012 at 09:23:48 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "C:\Program Files\Atmel\AVR Tools\AVR Toolchain\bin\avrdude.conf" Using Port : usb Using Programmer : avrispmkII avrdude: usbdev_open(): Found LUFA AVRISP MkII Clone, serno: 0000A00128255 AVR Part : AT90USB162 Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC6 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 512 4 128 9000 9000 0x00 0x00 flash 65 6 128 0 yes 16384 128 128 4500 4500 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 Description : Atmel AVR ISP mkII Programmer Model: AVRISP mkII Hardware Version: 0 Firmware Version Master : 1.13 Vtarget : 5.0 V SCK period : 8.00 us avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9482 avrdude: safemode: lfuse reads as 5E avrdude: safemode: hfuse reads as D9 avrdude: safemode: efuse reads as F4 avrdude: safemode: lfuse reads as 5E avrdude: safemode: hfuse reads as D9 avrdude: safemode: efuse reads as F4 avrdude: safemode: Fuses OK avrdude done. Thank you.
デバイスIDを確認したい場合は、次のコマンドを入力します。
avrdude -c avrispmkII -P usb -p AT90usb162
次に示す内容が表示されます。
C:\Users\ne>avrdude -c avrispmkII -P usb -p AT90usb162 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9482 avrdude: safemode: Fuses OK avrdude done. Thank you.
HEXファイルを書き込むのは、次のコマンドを入力します。書き込むHEXファイル名は、-Uパラメータに指定します。例で指定しているファイル「lat90usb162-bl-usb-1_0_5.hex」は、AT90USB162の工場出荷時時に書き込まれる USB DFU bootloader hex filesです。
avrdude -c avrispmkII -p AT90usb162 -U flash:w:lat90usb162-bl-usb-1_0_5.hex
なお、AVRISP mkII cloneとTarget AVR間の接続が正しく接続されていないと次のメッセージが表示されます。
... ... SCK period : 8.00 us avrdude: stk500v2_command(): command failed avrdude: stk500v2_command(): unknown status 0xc9 avrdude: stk500v2_program_enable(): cannot get connection status avrdude: initialization failed, rc=-1 avrdude: AVR device initialized and ready to accept instructions avrdude: Device signature = 0x000000 avrdude: Yikes! Invalid device signature. avrdude: Expected signature for AT90USB162 is 1E 94 82 avrdude done. Thank you.