六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 28|回复: 0

PSP开发二 终于出现了Hello PSP!

[复制链接]

升级  36%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
18
 楼主| 发表于 2013-2-4 13:30:04 | 显示全部楼层 |阅读模式
      经过一早上的折腾,我的Hello PSP!终于出现了!
      第一次在linux下写psp代码,昨天虽然编译得差不多了,但是要写还是有点无从下手的感觉。经过一晚的沉淀,今天早上开工写,当然首先还是去找下教程吧,功夫不负有心人,果然找到一篇很适合像我这样菜的人。
http://blog.csdn.net/lee576/article/details/2033754
上面这位大哥真是好人,手把手啊!我照着上面的步骤一步步弄到最后。
make
报错!找找看。
晕,居然是在Makefile中PSPSDK=$(shell psp-config -- pspsdk-path)"--"和"pspsdk-path"之间多了一个空格!
果然C程序不好写,修复,继续make
接下来的错误就让我有点……
 
      在经过多次反复查看后,发现代码已经跟上面大哥写得一模一样了,可是为什么不行呢!?
再上网搜,这回让我发现另一个地址:http://www.linuxgraphics.cn/psp/dev_guide.html
上面的内容跟第一位大哥写得差不多,不过还是让我发现了一点不一样
第一位大哥代码是这么写的:
SP_MODULE_INFO("Hello World", 0, 1, 1) 
新发现的是这么写的:
 
PSP_MODULE_INFO("Hello World", 0, 1, 1); 编译报错是指向main.c中SP_MODULE_INFO("Hello World", 0, 1, 1);的行,难道是这个问题,修改为PSP_MODULE_INFO("Hello World", 0, 1, 1);试一试。
修改后,make
成功了!!
      接下来就要把生成的EBOOT.PBP文件拷到我的PSP中看看行不行。兴奋的接上PSP把EBOOT.PBP拷进去,然后从PSP中找它,结果……,PSP里什么都没有,怎么回事!
      继续去找老师,经过无数前辈的点拨,原来要把“皮”一起拷过去。好吧,把之前新建的那个HelloPSP整个拷过去(连源文件的一起了,省事!)。
      这回进入PSP,果然在里面发现一个可执行的东东。果断执行,熟悉的启动画面进入眼前,慢慢的浮现出一个黑底的屏幕,屏幕上赫然显示白色字体的“Hello PSP!”。成功了!!看着那黑底白字,我的眼睛湿润了!
 
      哎,虽然以前在linux下写过点C代码,但是那是屈指可数,而且都是抄书。今天跟着无数前辈的指点,copy他们的代码,总算是不求甚解的把hello psp弄出来了。万事开头难既然已经成功开了头,路会越走越顺的,接下来我可以好好学习下了!
     
 
      另:昨天的009-psplinkusb.sh没有编译成功,看来国外的兄弟没有骗我,至少现在看起来,没有影响我的Hello PSP!
 
下面贴出我的代码吧,差不多都是copy前辈的,但是绝对是可以的,我的是PSP 3006 6.20的系统。
main.c
//hello PSP - My First App for the PSP/*    This program war created by(super) on (Date Here)    It is a simple "Hello World" APplication.*/#include <pspkernel.h>#include <pspdebug.h>PSP_MODULE_INFO("Hello PSP", 0, 1, 1);#define printf pspDebugScreenPrintf/* Exit callback */int exit_callback(int arg1,int arg2,void *common){    sceKernelExitGame();    return 0;}/* Callback thread */int CallbackThread(SceSize args,void *argp){    int cbid;        cbid=sceKernelCreateCallback("Exit Callback",exit_callback,NULL);    sceKernelRegisterExitCallback(cbid);    sceKernelSleepThreadCB();    return 0;}/* Sets up the callback thread and returns its thread id */int SetupCallbacks(void){    int thid=0;    thid=sceKernelCreateThread("update_thread",CallbackThread,0x11,0xFA0,0,0);    if(thid>=0)    {        sceKernelStartThread(thid,0,0);    }    return thid;}int main(){    pspDebugScreenInit();    SetupCallbacks();        printf("Hello PSP!");    sceKernelSleepThread();    return 0;}  
 Makefile
TARGET=helloOBJS=main.oCFLAGS = -O2 -G0 -WallCXXFLAGS=$(CFLAGS)-fno-exceptions-fno-rttiASFLAGS=$(CFLAGS)EXTRA_TARGETS=EBOOT.PBPPSP_EBOOT_TITLE=Hello PSPPSPSDK=$(shell psp-config --pspsdk-path)include $(PSPSDK)/lib/build.mak  
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表