Ubuntuで目覚めたりするゲームボーイ(アドバンス)2
Ubuntu 13.10で、「Linuxから目覚める ぼくらのゲームボーイ!」をやってみました。
の2回目。まずは、簡単なハードウェア(ドライバ)編から。
で、本の通りでうまく動かなかったので、
いつもの通りグーグル先生に頼る。
まず、見つかったのはここ↓
USB版ブートケーブルによるGBAへのプログラム転送
著者ご本人の資料みたいですねー。すばらしい。
でも、この資料も古くて、カーネル再構築は要らなかった。
書き換えてみた /etc/fstab も、読み込み時にエラーになっっちゃったし。
ポイントは、/proc/bus/usb/devices が見えるか?ってこと。
どうやら、デフォのUbuntu 13.10では /proc/bus 以下に該当のファイルが見えない模様。
/* コマンド ************************/
$ ls /proc/bus
input pci
/***********************************/
このままだと、バイナリファイルを書き込もうとしても、optusbからケーブルが見えない。
こんな感じ↓
/* コマンド ************************/
$ sudo ./optusb rgb.bin
=== optusb v1.01 ===
Source file = rgb.bin
Program size = 100
Error: OPTIMIZE GBA-USB-bootcable is not found!
/***********************************/
でわけで、以下の細工をします。
/* コマンド ************************/
$ sudo mount --bind /dev/bus /proc/bus
[sudo] password for:(パスワード入力)
$ sudo ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices
/***********************************/
これでOK。optusbでも、ちゃんと認識するようになるよ。
ちなみに、参考にしたのはUbuntu Forumのこの記事↓
Thread: /etc/fstab...
この回答によると、どうやら「カーネルがusbfsをサポートしてないぜ」ってことらしい。
だから、著者のサポートページの方法は弾かれたのかー。たぶん。
ともかく、うまく動いてよかった。
このトラブルを追う途中で、optusbの中でprintfをデバッグに使ったのだけども、
mountとかlnする前は、そもそもプログラムからUSBデバイスの情報が全く取得できていなかった。
つまり、libusbが正しく動作していなかったっぽい。
libusb 0.1系は、/proc/bus/usb/devices から情報を持ってきているのかな?
この手順でうまく解決できたってことは、BOOTケーブルに限らず、
optusbと同じ、libusbの0.1系を使ったプログラムで、
デバイスを認識できずにはまっている人は
上記の手順で同様に解決できるかもしれない。
ともあれ、うごいてよかったわい。
(おまけ)
ブートケーブルを使わない猛者もいる模様。(俺は未検証だけども)
手軽な低レベルプログラミング環境として GBA はもっと評価されるべき
の2回目。まずは、簡単なハードウェア(ドライバ)編から。
で、本の通りでうまく動かなかったので、
いつもの通りグーグル先生に頼る。
まず、見つかったのはここ↓
USB版ブートケーブルによるGBAへのプログラム転送
著者ご本人の資料みたいですねー。すばらしい。
でも、この資料も古くて、カーネル再構築は要らなかった。
書き換えてみた /etc/fstab も、読み込み時にエラーになっっちゃったし。
ポイントは、/proc/bus/usb/devices が見えるか?ってこと。
どうやら、デフォのUbuntu 13.10では /proc/bus 以下に該当のファイルが見えない模様。
/* コマンド ************************/
$ ls /proc/bus
input pci
/***********************************/
このままだと、バイナリファイルを書き込もうとしても、optusbからケーブルが見えない。
こんな感じ↓
/* コマンド ************************/
$ sudo ./optusb rgb.bin
=== optusb v1.01 ===
Source file = rgb.bin
Program size = 100
Error: OPTIMIZE GBA-USB-bootcable is not found!
/***********************************/
でわけで、以下の細工をします。
/* コマンド ************************/
$ sudo mount --bind /dev/bus /proc/bus
[sudo] password for
$ sudo ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices
/***********************************/
これでOK。optusbでも、ちゃんと認識するようになるよ。
ちなみに、参考にしたのはUbuntu Forumのこの記事↓
Thread: /etc/fstab...
この回答によると、どうやら「カーネルがusbfsをサポートしてないぜ」ってことらしい。
だから、著者のサポートページの方法は弾かれたのかー。たぶん。
ともかく、うまく動いてよかった。
このトラブルを追う途中で、optusbの中でprintfをデバッグに使ったのだけども、
mountとかlnする前は、そもそもプログラムからUSBデバイスの情報が全く取得できていなかった。
つまり、libusbが正しく動作していなかったっぽい。
libusb 0.1系は、/proc/bus/usb/devices から情報を持ってきているのかな?
この手順でうまく解決できたってことは、BOOTケーブルに限らず、
optusbと同じ、libusbの0.1系を使ったプログラムで、
デバイスを認識できずにはまっている人は
上記の手順で同様に解決できるかもしれない。
ともあれ、うごいてよかったわい。
(おまけ)
ブートケーブルを使わない猛者もいる模様。(俺は未検証だけども)
手軽な低レベルプログラミング環境として GBA はもっと評価されるべき
スポンサーサイト