GBA:ブートケーブルUSBの使い方

2004/06/10 作成
2004/06/16 更新

デバイスドライバのインストール
1)まずは、ブートケーブルUSBでPCとGBA SPを接続します。


2)ハードウェア検出ウィザードが開始されます。一覧または特定の場所からインストールするを選び次へを選択します。


3)ドライバを保存してある場所を選択し、次へを選択します。


4)ドライバのインストール作業が開始されます。


5)インストールが完了すると下記メッセージが表示されます。


GBAにドットを打つ!
西田亙さんがUNIX USERで特別連載したことで有名なサンプルプログラムを試してみました。
1)アセンブラソースファイルとリンカファイルを作成します。

2)アセンブリします。
リンクします。
elfファイルからバイナリファイルに変換します。


3)生成したファイルをGBAに転送して動作確認します。カセットを本体からはずして、ブートケーブルでGBAとPCを接続し電源をいれます。
起動メッセージ表示後、オプティマイズのサイトからダウンロードしたプログラム転送ツールphost_usb.exeを起動します。
起動後、uploadするファイルを選択します。


4)ファイルを選択すると下記ウィンドウが表示されます。


5)写真のようにGBAにドットが打たれたことがわかります。


UNIX USERの連載を試してみました。
xport shell(cygwin)でビルドして動作するか確認してみました。

第1回連載
Makefileを修正する必要があります。
dots.bin

dots_cpp.bin

rgb.bin

viewer.bin

色の使い方がいいですね、クールです。

第2回連載
第2回の連載も同じようにMakefileを修正すれば楽勝だと思ったのですが。。。
ただいろいろ問題があり、決着がついてません。
オリジナルのMakefileでは、2つのアーキテクチャ(x86とArm)向けのプログラムを一度に生成しているため、それを分けました。(分けなくてもいいのかもしれませんが。。。)
C:\cygwin\cygwin.batを起動するとx86用のプログラムがC:\cygwin\xpshell.batを起動するとArm用のプログラムが生成されるようです。

そんな調子でMakeをかけるとErrorが発生しました。


interworking とはなんのことでしょうか?とりあえず-mthumb-interworkのオプションをつけて再ビルドしてみます。


__gccmainとはなんだ?nmコマンドって便利だな。

なぜか勝手に__gccmainができてます。その後、C:\xport\lib\libgcc.aをライブラリパスに入れたりメーリングリストを参考にしましたが動作させることができませんでした。とりあえず保留します。
その後、仕事に使用しているcygwin環境に移してビルド&動作確認したら、うまく動きました。

こんな感じのプログラムです。
まずは、crt.S



西田さんのcrt.Sと同じです。crtファイルってこんな簡単でもいいんですね。はじめてみたとき衝撃を受けました。

つづいてmain.c


これも西田さんのプログラムを参考にして作ったものです。C言語でハードウェアをいじっているって感じがでてます。

つづいてMakefileとgcc.ls




これらはコマンド体系以外は修正してません。なんてシンプルなんだ〜、感動。

シンボルも確認してみます。


見事に__gccmainがありません。逆アセンブルもしてみます。

まずはcrt.o


続いて無駄が多いmain.o。


そして最後にtest.out。アドレスもちゃんと追加されてます。