2010年7月19日月曜日

【AVR】USBasp again !

【USBasp 】
 これはUSBaspが再び注目されると言うお話である。BASCOM-AVRがUSBaspを正式なプロフラム・ライタとして対応するようになったからだ。

 写真はUSBaspと言うAVRマイコン用のプログラム・ライタだ。 AVR仲間ではポピュラーな存在だろう。 しかしパソコン側の専用書込みソフト:avrspxは最新のAVRマイコンに対応していなかったことから、先日作った【HIDaspx】ライタに押され気味である。

 その新しく作った【HIDaspx】はUSBaspより後発のライタで、Windowsの標準ドライバで動作しUSBに刺すだけですぐ使える優れモノだ。その特徴から組込み系ソフトウエアの教育現場でも効果を発揮しているそうだ。 しかしBASCOM-AVRユーザーにとって【HIDaspx】が十分使い易いかと言えば、必ずしもそうではないと思う。

 BASCOM-AVRから【HIDaspx】専用の書込みソフト:hidspx を経由して書込みとベリファイはできるので実用可能ではある。しかし「外部プログラマ」の扱いなのでヒューズ・ビットやロック・ビットの操作がBASCOM-AVRからは直接出来ない。 それらの操作はBASCOMを一旦離れてコマンド・プロンプトからhidspxを別に起動して行なうか、GUI操作の独立した専用ソフトを起動する必要があった。このあたりのことは、写真のUSBaspでも同じような状況であった。だから新作の【HIDaspx】に固有の欠点と言う訳ではなかったのだが・・・。

 出来ない訳ではないとしても、別途行なうと言う面倒さが常に感じられるのだ。 アセンブラやCの人は感じないだろうが、BASCOM-AVRと言う統合開発環境のユーザーには大いに気になる(不満のある)部分だった。 結局その環境からシームレスに作業が出来る旧来のSTKライタ(LPTポート用)を今でも愛用する人も多いのだ。(実は私も・笑)

【USBasp again !】
 USBaspは、もともと海外で開発されプログラム・ライタだった。 それをモディファイしたバージョンとPC側書込みプログラムが改良されて行った経緯がある。鶏とたまごの関係を打ち破るための考案など日本人が貢献した素晴らしい成果だろう。

 先日、たまたまUSBaspオリジナルのサイト(左の写真)を見ていたら下の方の一行で目が止まった。 USBaspがBASCOM-AVR公認の標準的なプログラム・ライタとしてサポートされたようなのだ!

 正式サポートされればBASCOM-AVRがサポートするAVRマイコンのすべての開発に使える筈だ。 最近問題になったATmega328Pへもプログラム可能だろう。 さらに将来登場するであろう新チップももちろん自動的に対応するだろう。 そしてヒューズ・ビットやロック・ビットの操作も一体の機能としてBASCOM-AVRのGUI環境からシームレスに可能になるに違いない。これが何と言っても一番のポイントではないだろうか。

 私が今なおUSBaspライタに拘るには相応の理由があった。 それは書込みやベリファイ(読出し比較参照)が非常に高速なのだ。 プログラム開発も佳境に入れば試行と修正・書込みの繰り返しになる。 少しでも早いライタは実に嬉しい存在なのだ。 【HIDaspx】より10倍も早そうなUSBaspの高速性は捨てるに惜しい魅力だった。

思い立ったなら、さっそくUSBaspをリバイバルしよう!
BASCOM-AVRのアップデートだけでごく簡単に済みそうだったのだが・・・しかし。

【ファームウエアの書替え】
 上の写真によれば、BASCOM-AVRのバージョン1.11.9.6以降でUSBaspがサポートされるようだ。 まずは、MCS Electronicsに行って最新のBASCOM-AVRにアップデートした。 2010年7月19日現在のバージョンは、正規版が1.12.0.0、デモ版は1.11.9.8である。

 さっそく試したところが私のUSBaspは約3年前のもの。 搭載しているATmega48のファーム・ウエアもパソコン側のデバイス・ドライバも古過ぎたようだ。BASCOM-AVRから適切なバージョンではないと言うようなエラーが出た。

ここでやるべきことは二つある。まずは、USBaspに搭載されたATmaga48のプログラム(ファームウエア)書き換え。もう一つは、WindowsパソコンのUSBasp用デバイス・ドライバ更新(書き換え)である。それが済んだらBASCOM-AVRのセットアップを行なって完了だ。

 そこで、上記のサイトから作業で必要となる「最新のファームウエア」と「Windows用ドライバ・ソフト」をダウンロードした。 写真はダウンロードしたファームウエアを取込んでATmega48を書き換える準備を始めたところだ。

 図ではファイルからATmega48用のHEXファイルを読み込んでいる。 もちろんアップデート対象のUSBaspとは別の書込み器が必要で、ここではSTKライタ(同等の自作品)とBASCOM-AVRを使って作業している。
 BASCOM-AVRのProgramメニューを開き、写真左上の「Load file into Buffer」(=バッファ・メモリへファイルからデータを読み込む)をクリックする。

【HEXファイルの読み込み】
 既に上記サイトからダウンロードし、解凍しておいたフォルダの中から「usbasp_atmega48_2009-02-28.hex」と言うファイルを選択する。 写真では「usbasp_2009-02-28」フォルダから、ファイルをデスクトップに取り出して示してある。 直接該当のフォルダの中から選んでも良い。

 必ず「ファイルの種類」をIntel HEXにしておかないとファイルが見えないので注意を。 Intel HEX形式は機械語ファイルの配布用として一般的(古典的?)だが、詳しく知りたければWikipediaでも。

 書替え対象のチップ:ATmega48はUSBaspから一旦取り外し、読み書きができる何か別のAVRマイコンボードに挿入しておく。(28pinのATmega8シリーズ対応で、外部水晶発振になっているボードが必要。たとえばこれ。)そのボードにSTKライタを接続してISPで書き換える。 USBaspに接続するのではないので注意を。(最初からファームウエアの書き換えができるようにUSBaspを作ってあれば別だ)
 ATmega48のプログラムメモリを一度消去し、ブランクチェックしてから書込む方が良いようだ。 さっそくバッファに読み込んだデータをATmega48に書込んだらファーム・ウエアのアップデートは完了だ。 ヒューズビットは元のままが温存されているから書き換えなくても良い。もし新品のチップに書込んだのならヒーズビットのセットも忘れずに。 さっそくUSBaspにATmega48を戻して完了だ。 なお、ATmega8用のファーム・ウエアもあるので、mega8でUSBaspを作っているならそちら用を選ぶこと。(:秋月電子通商はATmega48を扱っていないので新規製作ならATmega8-16PU/単価200円がお薦め)

 続いて、USBaspのデバイス・ドライバを更新する。 出来上がった「新USBasp」をパソコンのUSBに挿入すると「新しいハードウエアが見つかった・・・」と言うアラートが出る。  そこで早速デバイス・ドライバをインストールする。 上記のサイトからダウンロードし、解凍しておいたWindows用デバイス・ドライバの入ったフォルダを選択し、指示に従ってインスートルすればOKだ。 その後一旦パソコンを再起動するとアップデート済みのUSBaspが認識される。(一般的な作業なので、かなりを省略した。わからないようなら検索で)

【BASCOM-AVRの設定】
 さっそく、BASCOM-AVRの設定を行なってみよう。メニューから、「Option→Programmer」の順に開いて行く。 この操作は既に十分お馴染みのことだろう。
 新しいBASCOM-AVRではUSBasp(=USBASP)を含めて数種のUSBライタがサポートされているようだ。 但し純国産らしい【HIDaspx】は未だサポートされていないのが残念だ。

 いつもの様にメニューのリストから「USBASP」を選んで、下の方の「OK」ボタンをクリックすれば終了である。 これでUSBaspはBASCOM-AVRから正規にサポートされたライタとして直接使えるようになった。  従来のUSBaspとパソコン側の書込みソフト「avrspx」と言う組み合わせとは縁が切れたわけだ。「avrspx」は間に入らないからBASCOM-AVRがサポートしているAVRマイコンならどれにでも読み書きできる訳だ。

【さっそく使ってみる】
 BASCOM-AVRのProgramメニューを開くと、このようにUSBaspが正常に起動していることがわかる。
 もちろん、USBaspをUSBインターフェースに接続し何らかのAVRマイコン基板を接続しておく。 この例ではATtiny2313が搭載された基板を接続してあるが、写真のようにフラッシュ・メモリの内容を読み込んだり、もちろんフューズ・ビットの操作も従来通りにBASCOM-AVRの画面から可能だ。 こうした簡単なことも「外部プログラマ」では出来なかった。

 USBライタには幾つかの機能制限もあるが、大きなものとしてはBASCOM-AVRの画面から対象基板のリセットボタンが押せないことくらいだった。 少しSTKライタとは様子が異なる部分もあるが概ね同じように使える。 試した範囲では特に問題はなさそうだった。 書込みも試したが、その高速性は如何なく発揮され素晴らしいスピードは健在である。

【BASCOM-AVRのアップデートも】
 ここまで来る過程でBASCOM-AVRのアップデートも済んでいるだろう。 正規版はVer.1.12.0.0であるが、バグが気になるなら一つ前のバージョンも良いかもしれない。 しかし、このバージョンも登場から時間が経過しているようなので現行の最新版で大丈夫だろう。

 無償デモ版もVer.1.11.9.8になっていたからUSBaspはサポートされているはず。 デモ版は容量制限があるのでATmega328Pを使うことはないかもしれないが、USBaspライタでシームレスな開発を楽しみたいならアップデートはお薦めだ。

 せっかくプログラム・ライタをアップデートしても、製作,etcのアクティビティが最低ではあまり意味はないかも知れない。 しかし、気が向いた時に道具を磨いておけば、いざと言う時にはきっと役立つに違いない・・・と思いたい。(笑)

(おわり)