USBaspのファームをUSBaspで書き込む

Spread the love

USBaspのファームウェアをUSBaspで書き込んでみました。以前、USBaspを購入したときには、USBaspへのファームウェア書き込みに苦労しました。しかし、今回は違います。すでに、ファームウェア書き込みに特化したUSBaspを持っています。簡単にいくだろうと思っていました。しかし、今回も苦労しました。

今回は、買い増したUSBaspに、どうやってファームウェアを書き込むか、その方法を備忘録として残します。

なぜUSBaspを買い増したのか?

USBaspを買い増ししたのは、以前購入したUSBaspに、不安を感じたからです。基板むき出しのUSBaspは、機械的に弱そうで、取り扱いに気を使います。また、SMART PLAYERの様に、USB/UART経由でのスケッチ書き込みができないことが増えたので、追加しました。。お値段が、安かったこともあり、思い切って購入しました。

しかし、今回も、まともに使えるようになるまで、結構な苦労がありました。最終的に、ファームウェアの修正を行うことになるとは、思ってもいませんでした。

購入したUSBaspはArduinoIDEでは使えなかった

基板むき出しでないUSBaspが安く販売されていた
基板むき出しでないUSBaspが安く販売されていた

前回購入した基板むき出しのUSBaspには、ファームウェアが入っていました。しかし、ファームウエアのバージョンが古かったため、ファームウェアの更新が必要でした。

今回購入したUSBaspも、Arduino IDE(正確にはavrdude)では使用できませんでした。しかし、avrispというアプリでは使用できます。

avrispというアプリで使用することは可能でした
avrispというアプリで使用することは可能でした

しかし、avrispを使用するには、arduino IDEでスケッチを一旦エクスポートする必要があります。そのため、使い勝手は悪くなります。やはり、ファームウェアの入れ替えは必要です。

幸い、USBaspを使用する環境は整っていますので、簡単に終わると思っていました。

ちなみに、PC用ドライバの入手方法および、ファームウェアの入手方法は、以前の記事に残してあります

使用されているMCUを調べる

ファームウェアを書き込むには、USBaspに使用されているMCUの型番を調べなければなりません。購入したUSBaspは中国製です。当然as isです。説明書はついていません。分解して、調べるしかありません。

購入したUSBasp 10ピンコネクタ付きフラットケーブルが付属していました
購入したUSBasp 10ピンコネクタ付きフラットケーブルが付属していました

しかし、分解は簡単で、キャップを外して、スリーブを引き抜くだけです。接着はされておらず、工具無しで分解できます。

分解したUSBasp
分解したUSBasp

基板中央にあるMCUの型番を調べます。

USBaspの基板拡大
USBaspの基板拡大

MCU表面の型番が不鮮明で、読み取りに苦労しました。ATMEL MEGA 86Vと書いてあるように見えました。しかし、そんな型番はありませんので、おそらくMEGA88Vだと思います。

ファームウェアの編集

今回購入したUSBasp(MX-USBISP-V5.00)では、Thomas Fischl氏作成のファームウェアは動作しません。その理由はここで詳しく説明されています。簡単に言ってしまうと、port Dが出力モードに設定されると、USB入出力(port B)に干渉してしまいます。これにより、USBaspが、PCで認識されなくなるという不具合が出ます。

これを修正するために、ファームウェアの一部を書き換え、port Dのbit0~3を入力モードに設定します。幸い、port Dは、USBaspでは使用されていませんので、副作用はありません。

対象のファームウェア「usbasp.atmega88.2011-05-28.hex」を書き換えます。ファームウェアをメモ帳等で開き、185行目を以下のように変更します。

変更前
:100B8000D9F77A9589F708951BB815B88BEF8AB90C
変更後
:100B8000D9F77A9589F708951BB815B880EF8AB917

変更したら、ファイルを保存し、ファームウェアの修正は完了です。

USBaspのファームウェア書き換え:結線

先ず、書き込まれる側のUSBaspで、回路の一か所、「UP」と書かれた部分をショートさせます。これにより、コネクタのリセットピンとMCUのリセットピンを接続します。これは、ファームウェアを書き換え可能にするために行います。もちろん、書き換えが終わったら、この配線は撤去しなければいけません。

「UP」と記載された二か所をショートさせます
「UP」と記載された二か所をショートさせます

該当箇所のスルーホールが小さく、手持ちのジャンパー線は入りませんでした。そのため、はんだ付けしました。

今回は、すでに持っているUSBaspを使って、ファームウエア書き換えを行います。しかし、Arduinoで書き換えを行うこともできます。その際の結線は、以前の記事を参照してください

USBaspを使用して、USBaspのファームウエア書き換えを行う場合、結線は簡単です。付属の10芯フラットケーブルで、双方をつなぐだけです。

付属のフラットケーブルで、二つのUSBaspを接続する
付属のフラットケーブルで、二つのUSBaspを接続する

結線が終わったら、書き込む側のUSBaspをPCのUSB端子に挿入します。なお、書き込まれる側への電力供給は、書き込む側のUSBaspから行われます。したがって、書き込まれる側のUSB端子には何も接続しません。

ファームウエア書き込み

ファームウェアの書き込みには、avrdudeというソフトウェアを使用します。avrdudeはarduino IEDと一緒にインストールされます。OSとインストール方法によってインストール先が異なる可能性が有ります。

私の場合は、「%LOCALAPPDATA%\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin」にインストールされていました。

ここから先は、CUIでの操作となりますので、コマンドプロンプト上で操作します。

まず、avrdudeのあるフォルダにカレントを移します。

cd %LOCALAPPDATA%\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17\bin

次に書き込みを行います。なお、事前に書き込む側のUSBaspがアタッチされているポート番号を調べておいてください。ポート番号は、デバイスマネージャー等で確認できます。私の場合は、com4でした。また、書き込むファームウェアは、事前にavrdude.exeと同じフォルダーにコピーしておくと作業がしやすくなります。

以下のコマンドで書き換えを開始します。

avrdude.exe -C ..\etc\avrdude.conf -p m88 -c avrisp -P com4 -b 19200 -U flash:w:usbasp.atmega88.2011-05-28.hex:i

書き換え中、画面には進行状況が表示されます。

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.09s

avrdude.exe: Device signature = 0x1e930a (probably m88)
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "usbasp.atmega88.2011-05-28.hex"
avrdude.exe: writing flash (4716 bytes):

Writing | ################################################## | 100% 3.74s

avrdude.exe: 4716 bytes of flash written
avrdude.exe: verifying flash memory against usbasp.atmega88.2011-05-28.hex:
avrdude.exe: load data flash data from input file usbasp.atmega88.2011-05-28.hex:
avrdude.exe: input file usbasp.atmega88.2011-05-28.hex contains 4716 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 3.83s

avrdude.exe: verifying ...
avrdude.exe: 4716 bytes of flash verified

avrdude.exe: safemode: Fuses OK (E:F9, H:DD, L:FF)

avrdude.exe done.  Thank you.

エラーが表示されなければ、書き換えは終了です。なお、ファームウエア書き込み時のボーレートは、19200bpsに設定しておいてください。これ以外のボーレートでは、書き込みできません。

ファームウェアの書き込みが終わったら

書き込みが終わったら、「UP」と記された部分に取り付けたジャンパー線を取り外してください。そして、書き込みが終わったUSBaspをPCに接続し、デバイスマネージャーでUSBデバイスを開きましょう。USBaspというデバイスが表示されたら、作業は終了です。

デバイスマネージャーでUSBaspが認識されていることを確認
デバイスマネージャーでUSBaspが認識されていることを確認

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.