fc2ブログ

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 はもっと評価されるべき
スポンサーサイト



コメント

非公開コメント

プロフィール

軟弱

Author:軟弱
趣味で電子工作やってます。パーツ収集癖がたたって、不良在庫に囲まれた生活です。ディジタルもアナログも興味あり。

当サイトの内容は再現性および安全性を保証するものではなく、内容の利用により生じたいかなる損害等についても責任を負いません。自己責任でよろしく。趣味ですから。



twitterやってます。
最新記事
最新コメント
月別アーカイブ
カテゴリ
RSSリンクの表示
リンク
QRコード
QR