履歴
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.