2011年04月05日


広告


SNES9X最新版をPSPに移植してみる(6) psplinkでデバッグ

■psplinkを用いたPSP実機でのデバッグ

psplinkを使うと、ホストPCとPSPをUSBで接続することで、以下の様な便利な機能が利用できるようになります。
ホストPCで作成した実行ファイルやコンフィグ、ROMファイル等をいちいちPSPのメモリに転送しなくてもプログラムを実行することができる。
stderrにfprintf()することで、ホストPCへのデバッグ出力が可能となる。
起動したプログラムがエラーで止まったときに、レジスタを参照したり、逆アセンブルしたりといったデバッグが可能。
ホストPC側でGDBを起動してリモートでソースコードデバッグができる。

ひっそりぃは、psptoolchainに含まれていたpsplinkを使用しました。詳細は付属のpdfドキュメントを参照してください。利用したホストPCはUbuntu 10.10です。

●psplinkのmake
psplinkusbディレクトリ直下でmake releaseするだけで完了です。

●psplinkのPSPへの転送
psplinkusb/release_oe/psplinkをPSP側のメモリの/PSP/GAME/psplinkにコピーします。
ちなみにひっそりぃはPSP Goで6.20 TN-Dを使っていますが、1.0とか1.5な方はpsplinkusb/release/以下の該当psplinkを使用してください。

●実際に動かしてみよう
○ホストPCでusbhostfs_pcの起動
まず、ホストPCでusbhosths_pcを起動します。USB deviceをopenするためroot権限が必要です。
起動時に、デバッグするプログラムの開発ディレクトリ(EBOOT.PBP等が作成されるディレクトリ)を指定しておきます。

hissorii@MBA:~/tmp/psplinkusb/usbhostfs_pc$ sudo ./usbhostfs_pc ~/src/snes9x-1.52.81-psp/psp/
USBHostFS (c) TyRaNiD 2k6
Built Mar 30 2011 21:57:10 - $Revision: 2368 $


○PSPでpsplinkを起動する
PSP側でpsplinkを起動します。起動すると、ホストPC側で起動しているusbhostfs_pc側に以下の出力が行われます。

Connected to device

○ホストPCでpspshを起動する
ホストPCでpspshを起動します。

hissorii@MBA:~/tmp/psplinkusb/pspsh$ ./pspsh
host0:/>

すると、host0:/>というプロンプトが出力されます。lsと打つと、ホストPC上の開発ディレクトリの内容が表示されます。
これは、ホストPCで直接表示しているのではなく、usbhostfs_pcがPC側のディレクトリをPSPのローカルディレクトリである様にPSPに見せかけており、pspshによりPSPにリモートアクセスし、PSPがPC側のディレクトリを表示しています。って理解してもらえるか不安ですが。

host0:/> ls
Listing directory host0:/
drwxr-xr-x 4096 05-04-2011 14:40 .
drwxr-xr-x 4096 05-04-2011 14:40 ..
drwxr-xr-x 4096 05-04-2011 13:47 .svn
-rw-r--r-- 3269784 05-04-2011 14:40 EBOOT.PBP
-rw-r--r-- 3591 05-04-2011 13:09 Makefile
-rw-r--r-- 408 05-04-2011 14:40 PARAM.SFO
drwxr-xr-x 4096 04-04-2011 10:40 docs
-rwxr-xr-x 5661726 05-04-2011 14:40 snes9x15281.elf
-rw-r--r-- 45402 05-04-2011 13:21 unix.cpp
-rw-r--r-- 37740 05-04-2011 14:40 unix.o
-rw-r--r-- 23083 05-04-2011 11:23 x11.cpp
-rw-r--r-- 42756 05-04-2011 14:40 x11.o
host0:/>

では実際に実行ファイルを起動してみましょう。

host0:/> ./snes9x15281.elf
Failed to Load/Start module 'host0:/snes9x15281.elf' Error: 0x80020148
host0:/>

はい、エラーになりました。どうもprxでなければいけないようです。Makefileのbuild.makの前にBUILD_PRX = 1を追加してmakeし直します。
改めて実行ファイルを起動してみましょう。

host0:/> ./snes9x15281.prx
Load/Start host0:/snes9x15281.prx UID: 0x04BA5F41 Name: "snes9x/1.52.81 for PSP"
host0:/> Snes9x: Memory allocation failure - not enough RAM/virtual memory available.
Exiting...

host0:/>

今度は起動できましたが、メモリが確保できずにすぐに終了しました。
上記Snes9x: Memory〜のエラーはsnes9x15281.prxが出力しています。プログラム側でstderrに出力したものが表示されますので、fprintf()をソースに埋め込んでデバッグすることもできます。

とりあえず今日はここまで。




タグ:SNES9X PSP
posted by ひっそりぃ at 2011/04/05 16:18 | Comment(0) | TrackBack(0) | SNES9X for PSP | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。