学习PSP软件自制编程入门教程



掌叔
2008-06-30 16:36:17

摘自:[url]http://liuyingxianglan.blog.163.com/[/url]

首先说下,PSP下的软件开发是见比较辛苦的事,需要对这个爱好的一种热情和对简单的软件编程思想和技能的掌握,希望大家在看完这贴后有所收获.

先来讲下目前对于PSP自制软件的开发的要求和环境的需求:
开发的要求
首先是对软件工程设计的一个大概的了解:
1> 系统分析和系统设计阶段: 主要是进行可行性分析和系统开发设计,这个阶段是最重要的,它把握着开发软件的走向和命脉.
2> 系统开发和代码调试阶段: 主要是进行在设计基础上的系统开发,对编写的代码进行调试,就是
DEBUG的过程.
3> 系统测试和功能调试阶段 : 主要是在系统完成后对系统整体容错处理和协调性方面的测试,以及对各种功能的调试.
4>完成生成可执行文件和交付使用.
环境的需求
这里最主要的是就PSPSDK这个非官方的环境,其中包括了多种支持:
1> Cywin+pspsdk 和Devkitpro+pspsdk 2种环境.
2>有关如何建立2种环境,我在这里先不做过多的介绍,需要的朋友请参看:
[url]http://bbs.verypsp.com/viewthread.php?tid=5611&extra=page%3D1[/url]和
[url]http://bbs.verypsp.com/viewthread.php?tid=11507&extra=page%3D1[/url]

简述建立Cygwin环境下的PSP开发环境
#安装Cygwin
1.下载Cygwin的安装程序([url]http://www.cygwin.com/setup.exe[/url])到本地.
2.双击安装,选Next,跳过第一页.
3.选Install from Internet(downloaded files will be kept for future re-use).
4.然后就是选择下载服务器了.等待读取下载列表.
5.读取完下载列表之后会让你选择要下载哪些类别的文件.每种类别都有4种安装类型(Install安装,Reinstall重新安装,Uninstall卸载,Default默认).用鼠标点类别名称后面的那个图标就能切换.至少要装gcc,gdb,make,patch,svn,wget,automake,autoconf,m4,perl什么的,Games,GNOME,KDE,Mail,X11什么的就不用装了.选Uninstall(不安装)就行了.
6.然后就是静静的等待下载和安装,时间视网络情况而定.

#安装PSPSDK
1.到[url]http://www.oopo.net/consoledev/[/url]找psptoolchain的安装配置脚本.如果网页没有变动的话,应该在最下面Playstation Portable - Toolchain Files里.下载之后放到Cygwin/home/[username]([username]指代的是用户名,一般就是Cygwin/home里唯一的那个目录)下.
2.打开一个Cygwin Bash Shell.
3.输入cd /home/[username]([username]指代的是用户名)
4.输入tar xfvz psptoolchain-200*****.tgz.等待解压缩.(*****代替的是日期数值,如果你下的是psptoolchain-20060120.tgz,那就是照这个文件名打,可千万别打成psptoolchain-200*****.tgz)
5.输入cd psptoolchain
6.输入chmod a+x ./toolchain.sh
7.输入./toolchain.sh
8.然后就是漫长的下载与编译.这个过程无需手动.如果中途没发生什么异常的话(Error 1之类的),出现.如果当中出现什么异常,请参考FAQs解决,也可回帖提问.

#设置环境变量
1.可以用记事本以文本文件的形式打开Cygwin/home/[username]/.bashrc([username]指代的是用户名),添加:
export PSPDEV="/usr/local/pspdev"
export PSPSDK="/psp/sdk"
export PATH=":/bin:/psp/bin"
并保存修改.
2.也可以直接在shell里用ed改:
/home/[username]/.bashrc ([username]指代的是用户名)
输入a,回车
输入上面给出的那三行环境变量设置.
输入w,回车,q,回车.

#检查
1.输入psp-gcc -v
得到:
Using built-in specs
Target: psp
Configured with: ../configure --prefix=/usr/local/pspdev --target=psp --enable-languages=c,c++ --with-newlib --enable-cxx-flags=-G0
Thread model: single
gcc version 4.0.2 (PSPDEV 20051022)
就算可以了(随着今后新的PSPSDK,可能会有些出入,版本号不同什么的).

#测试
1.打开控制台,输入cd /samples/kernel/cwd
2.输入make
3.如果输出:
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -c -o main.o main.c
psp-gcc -I. -I/usr/local/pspdev/psp/sdk/include -O2 -G0 -Wall -L. -L/usr/local/pspdev/psp/sdk/lib main.o -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspuser -lpspkernel -o cwd.elf
mksfo 'Working Directory example' PARAM.SFO
psp-strip cwd.elf -o cwd_strip.elf
pack-pbp EBOOT.PBP PARAM.SFO NULL
NULL NULL NULL
NULL cwd_strip.elf NULL
rm -f cwd_strip.elf
那就证明psptoolchain已经安装成功了.你可以开发你的PSP自制程序了.


FAQs:
1. 我输入"./toolchain.sh"之后出现"ERROR: Please make sure you have GNU 'make' installed.","...'patch'...","...'wget'...","...'subversion (svn)'..."之类的,然后就安装就停止了,这是怎么回事?
->这是因为你并没有安装这些东西,你可能安装Cygwin时,这些选的是Default,它们默认是不安装的,最好是完全安装.安装时将All设为Install,完全安装.
感谢senzung热心提供的中文用户名解决方案:因为我发现如果windows用户名设置成中文,home资料夹里会是中文档,就会出现svn not found错误。可以在windows里新建一个英文名用户,用那个登陆windows再打开cygwin来解决。

2.编译时突然停止了,输出了这个"aclocal: configure.ac: 11: macro 'AM_PROG_AS' not found in library",怎么办?
->请确定automake的版本是最新的.

3.如果Home/[username]目录里没有.bashrc怎么办?
->可以通过修改Cygwin根目录下的cygwin.bat文件来解决.在bash --login -i上面加入:
set PSPDEV=X:/cygwin/usr/local/pspdev
set PSPSDK=X:/cygwin/usr/local/pspdev/psp/sdk
set PATH=%PATH%;%PSPDEV%/bin;%PSPSDK%/bin
4.如果连接不上服务器怎么办?
->有人反映过一直都连接不上服务器,这个我也碰到过一次,这时就可以用FTP工具下载(我使用的是FileZilla),在Cygwin Mirrors里找个服务器,就可以把release目录下的东西,需要什么就下载到本地,然后用本地安装即可.

有关Devkitpro的安装请到这里看:
[url]http://bbs.pspchina.net/viewthread.php?tid=32263&extra=page%3D1[/url]

前言:

很多朋友都会和我有相同的愿望,希望小P除了运行游戏或者播放视听文件之外还能跑一些自治的小程序,哪怕是以一个小小的Hello World作为开始。

对于用什么样的平台开发PSP的程序,我首先选择了devkitPro,因为它涉及的东西比较少,安装比较简单,比较适合初学者掌握。一旦我们了解了其中的奥妙,使用其他的开发工具也就能举一反三了。更何况我想大家希望尽早看到自己努力的作品,而不是花费太多的时间和精力在系统环境的配置上。

另外,有些点比较重要的我会单独提出来,这样便于以后的举一反三和深入浅出。

先决条件:

说明一下我写这篇文章时候涉及到软件安装的情况

o

Windows XP SP2
o devkitProUpdater 1.3.5

devkitPro下载和安装

devkitPro工具的官方首页[url]http://www.devkitpro.org/[/url]。下载地址是[url]http://www.devkitpro.org/downloads.shtml[/url](也可以直接前往Source Forge的相关下载页面[url]http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=160396[/url])。
[attach]391[/attach]
注意:这里下载的不是devkitPro的完整安装包,而是一个叫做devkitProUpdater的客户端软件,下载并且执行devkitProUpdater,就可以开始进行devkitPro的安装了。

建议:新建一个目录放置devkitProUpdater,因为在devkitProUpdater安装的过程中会下载很多的文件。如果你想保存这些文件的话,最好的办法是建立一个单独的文件夹。
[attach]392[/attach]
第一步,选择安装模式(“下载并且安装”或者“只是下载”)
[attach]393[/attach]
第二步,选择是否需要保存下载的文件(可以保留,这些文件可以在需要再次安装的时候继续使用)
[attach]394[/attach]
第三步,因为devkitProUpdater不仅仅面向PSP所以会有一些其它的工具包包含在其中,如果你不需要可以选择安装一些组件,这里我采用了完全安装的模式。请注意devkitPSP下的“PSP sdk documentation”选项。这个建议选中,因为在以后的开发过程中可以提供参考。
[attach]395[/attach]
第四步
[attach]396[/attach]
第五步
[attach]397[/attach]
检查和配置

好了,安装完毕后,我们不着急写代码,其中有些目录我们还是要过问一下的。所谓得知其所以然。

在此之前必须要说明一下系统变量PATH(使用过JDK的朋友对这个应该很熟悉),所谓的系统变量PATH简单的说是系统搜索相应应用程序的一组路径的设定值。安装完毕以后的系统我们可以看到如下的值:
[attach]398[/attach]
可以看到绿色的方框中的值是由于安装了devkit以后所新添加的值。在我所安装的系统中路径是“D:devkitPromsysin”我们不妨可以去看看这个目录到底有些什么样的东西。
[attach]399[/attach]
这里存放了一些可执行的应用程序,大部分程序都是需要在DOS命令行窗口中进行运行的,其中rxvt.exe(一个类似于Linux的Shell)可以直接双击打开。这里有些什么我们可以暂时忽略。
[attach]400[/attach]
接下来需要做的是写一个批处理文件StartPSPDev.BAT(名称可以按自己的想法取),可以存放在你想要保存的目录下,比如在我的机器上我就保存在项目文件夹中。具体BATCH文件内容:
set path=%path%;D:devkitProdevkitPSPin;
cmd
先解释一下上面两句话的意思。第一句话是用来设置环境变量PATH的,在这里我们新添加了新路径“D:devkitProdevkitPSPin”(各人安装的devkitPro路径不同,所以对应的bin的位置也不一样,请注意用你具体的路径取代这里的值)。然后调用Windows的Dos Command Shell。我们可以看到设置的新的路径已经添加在PATH的末尾了。
[attach]401[/attach]
为了验证编译环境是否能够真正工作,我们采用一个简单的HelloPSP的代码进行编译。如果能够正常生成我们需要的EBOOT.PBP那就算成功了。正常的我们需要涉及到的文件只有代码文件和Makefile文件。其余的都是由编译器自动生成。

样例程序源代码以及makefile:
[attach]402[/attach]
[attach]403[/attach]
请注意,使用我们刚才创建的批处理文件StartPSPDev.BAT启动DOS命令窗口。否则使用普通的窗口会出现如下的错误:
D:DevFieldPSPDevHelloPSP>make
make: Stop.
请注意出错信息第一行,“psp-config:)

好了就先写到这里,下次我们可以一起讨论一如何调试以及编写PSP小程序。




再来就是说说对大家基本功的要求了,其实也不是多么的严格,因为是SDK环境的开发,所以你大可以用你自己所熟悉的语言去做开发,比如JAVA/C/C++等,但是因为大多数人都使用C/C++作为SDK的开发工具,所以以下的所有内容我都会以C/C++来做为主线,对大家入门开发领域做出点不到位的讲解.