USB版ブートケーブルによるGBAへのプログラム転送
Last updated Sat, Aug 9, 2003

履歴

Linuxカーネル再構築

まず最初に、使用しているLinuxカーネルのUSBコンフィギュレーションを確認してください。

USB Support(CONFIG_USB)を指定するのはもちろんですが、USB device filesystem機能 (CONFIG_USB_DEVICES) を組み込むことを忘れないでください。この機能を有効化すると、/proc/ ディレクトリ上に /proc/bus/usb/devices, /proc/bus/usb/drivers などのファイルが出現し、USB情報をテキスト形式で入手することが可能になります。

USB デバイスファイルシステムのマウント

システム起動時にUSB デバイスファイルシステムがマウントされるよう、/etc/fstab に次の一行を追加します。詳細は /usr/src/linux/Documentation/usb/proc_usb_info.txt に記載されていますので、こちらを参照してください。

none   /proc/bus/usb   usbfs    defaults     0     0

以上で準備は完了です。新しいカーネルをブートローダーに登録した上で、システムを再起動してください。

USB デバイス・ファイルシステム

CONFIG_USB_DEVICES を有効化したカーネルで起動し、オプティマイズUSB 版ブートケーブルを接続した上で、先ほどの /proc/bus/usb/devices ファイルの内容をチェックすると、次のように表示されるはずです(ホストの状況や接続デバイスの違いにより、異なります)。


00:57:00 root@mebius /proc/bus/usb # cat devices 
T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=fca0
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms
T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0bfe ProdID=3000 Rev= 0.00
S:  Manufacturer=OPTIMIZE PRODUCTS
S:  Product=GBA BOOT CABLE USB
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 30mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=00(>ifc ) Sub=00 Prot=00 Driver=(none)
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

画面下段のように、ブートケーブルの情報が表示されれば、カーネル側の準備は完了です。

optusb によるプログラム転送

今回、optusb の製作には libusb を利用しました。これは Linux/*BSD/Mac OS X などのマルチプラットフォームで利用可能な、USB ライブラリーです。まだαバージョンといったところですが、API が良く練られており PC-UNIX 上で簡単に USB 機器を制御することが可能になります。

その詳細は後日紹介しますが、とりあえずは私が用意した optusb-1.01.tar.gz を展開し、この中の実行ファイル optusb を利用してみてください(ソースリストも同梱しておきました)。なお、optusb の実行にはルート権限が必要です。


$ sudo optusb dungeon.bin 
      === optusb v1.01 ===

   Source file = dungeon.bin
  Program size = 4292
        Status = Successfully transferred.

パラレルポート版とは異なり、プログラム転送はコンマ数秒で完了します。それでは、GBA プログラミングの世界をお楽しみください!

Linux 環境以外での動作

小瀧さんが Mac OS X 上で optusb を動かすことに成功されています。

Your SysOp is Wataru Nishida , M.D., Ph.D.