2007年11月27日

AT90USB162メモ

Atmel から USB インターフェイスが付いた AVR として AT90USB162 が出ている。32 TQFP のパッケージがあってわりと手軽に扱えて、値段も デジキーで520円と安価。

ブートローダが、最初から FLASH に載っているので Windows や Linux から ソフトだけで書き込みできる。水晶は必須で、FT232RL 並とはいえないが、わずかな外付け部品で動かせる。

AVR-CDC のようなドライバさえ充実したら、かなり使い易いものになりそう。

というわけで、こいつで少しばかり遊んでみたいと思っている。

USB のデバイスクラスのうち、CDC とか AUDIO とかを扱えるようになりたいと思っているんだが... デバイスクラスの定義は膨大で正攻法ではなかなか難しそうだ。

最初は、AVR-CDC のコードを移植することから始めれば、一応動かせるものが出来上がるに違いない。で、知識レベルが上がったところで、Atmel のコードを見ながら AUDIO に挑戦するという手順か。

配線メモ

アイテムラボ変換基板ベース


チップ入手先

デジキー520円 (09/10/19 現在 376円)

マイクロファン840円 (09/10/19 現在 577円)

評価基板

OLIMEX AVR-USB-162

サンプルコード・ドキュメント

AVR USB Software Packages


Free USB firmware for Micro-Controller

AT90USB1287用だが参考になる

USB Device Class 定義ドキュメント(www.usb.org)

HERO'S Downloadにある、AVRusb.ZIP に含まれる USB概説(USBspecs.PDF)

MAX3420Eアプリケーションノート(日本語)にある、アプリケーションノート3690 MAX3420EのUSBエニュメレーションコード(およびその他) -- USBの解説がすばらしい。

DFU (Device Firmware Update) ブートローダと対応プログラマ

USB DFU Bootloader Datasheet (pdf) -- データシートのページの下の方

AT90USB162 USB Bootloader v1.0.5 (HEX ファイル) -- Tools & Softwareのページの下の方

dfu-programmer -- Linux で使える DFU 用のプログラマ
    使い方の例
    # dfu-programmer at90usb162 erase 
    # dfu-programmer at90usb162 flash test5.hex


STK526評価キットのページ Hardware User Guide の回路図に、ブートローダを(強制?)起動するボタンがある。OLIMUX AVR-USB-162 も PD7 に ボタンが接続されてて同じ。...データシートにもちゃんと載っていた。キーワードは HWB


WinAVR-20070525 / gcc-4.2.[12] + avr-libc-1.4.7 の問題点

AT90USB162/AT90USB82 が avr5 になっている。avr5 だと AT90USB162/AT90USB82 が持っていない 乗算命令を使ってしまう。

正しくは avr3 にしなければならないが、gcc も avr-libc もバグっている。当面は、乗算を使用しないようにして、乗算命令が出ていないか avr-objdump -d でアセンブラリストを出力し、チェック(mul を grep)する必要がある。

乗算命令が出るようなコードにしてしまったら、コードをなんとか変更する。それでもダメなら 次のオプションでコンパイルしてみると良いかもしれない。


-mmcu=at90usb162

-mmcu=avr3 -D__AVR_AT90USB162__


avr-libc で乗算命令を使うものをリンクしてしまった場合、
まず リンクのオプションを次のように変更する。


-mmcu=at90usb162

-mmcu=avr3 -Tdata=0x800100 -v


これだけでは、だめで、このときの ld のオプションを調べ、avr3/crtm103.o となっているところを avr5/crtusb162.o に変更して、ld を直接実行する。

WinAVR プロジェクトには、このバグについて だいぶ前に報告されている。次のリリースでは修正されると思う。

WinAVR-20070525 の gcc のビルド方法が分かったので、ためしにat90usb162/at90usb82 のアーキクラスを avr3 に変更する avr-gcc.exe を作ってみた。→ usb162-gcckit-0.1.zip

フロントエンドの avr-gcc.exe のみなので、サイズは小さいです (270KB)。もし困っている人がいれば、使ってみてください。


カテゴリ USB162につづく。
posted by すz at 16:21| Comment(2) | TrackBack(0) | USB162
この記事へのコメント
私の掲示板にこちらのページをリンクさせていただきました。AT90USB162をマイクロファンに注文したのですが、他に製作記事がなく、こちらのページが参考になります。ありがとうございます。

http://www.style-21.jp/bbs/ekousaku/index.html
Posted by すん at 2007年11月29日 21:41
avr-gcc + avr-libc でコードを書くなら、USB_GEN_vect とか使うはずなんでググってみたんですが、まったく見つかりません。

というわけで、気長にやりましょう。
Posted by すz at 2007年11月30日 05:21
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/30760426
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック