原文地址: http://gxcooo.spaces.live.com/blog/cns!5C98D9EBE201B94C!232.entry?_c=BlogPart
7个月前PSP在日本发售,4个月前在美国发售,2个月内即将在欧洲发售。然而, 在家里开发PSP程序已经成为现实.在这篇文章里我会介绍在这个小巧平台上进行编程的基本知识。
和其他console游戏平台一样,Sony从未想过让最终用户拥有在PSP平台上开发程序的能力。但是,通过逆向工程专家们的努力,几乎每个平台诞生的同时便可以在家里进行这个平台上的开发了。就PSP平台而言,两件事使这变为现实。第一件事是第一个发布版的PSP firmware中存在一个bug,这个bug只存在于最初几个月在日本售出的PSP中,利用这个bug可以执行未经签名的程序代码.第二件事是 nemnem写的'hello world'程序的发布.nemnem拆开了PSP,取下保存着firmware的闪存芯片并反汇编fireware.通过反汇编出的信息,nemnem 写出了他的'hello world'程序.在此基础上,ps2dev社区反向工程了剩下的fireware,终于制作出了一个可用的toolchain(译者注: toolchain 是 指一连串的编译工具,因为在编译源代码的过程中,会以序的被执行到,因此被称为toolchain)和sdk.
PSP内核基于 MIPS R4000.它包含CPU、FPU、和一个向量处理单元(vector unit : 进行向量和矩阵操作的协处理器)。这些单元组成一个Allegrex CPU核心。CPU的时钟频率可以在1Mhz和333Mhz之间任意调节。Sony为了保证PSP的使用时间将CPU频率限制在222Mhz。和CPU搭配使用的还有一个专用媒体处理CPU,它具有MP3、ATRAC3和h.264硬件解码能力。图形方面,PSP有一颗专用GPU,其具有光照、贴图、细分、像素操作和其他一些功能。PSP的主内存容量为32mb(译者注:原文是'mb',疑为MB,下同),其中8mb为内核使用,另外24mb供运行中的游戏使用。视频存储器容量为2mb。整个硬件配置和PS2非常相似,PS2有一个MIPS R5900内核,2个向量处理单元,32mb主内存和4mb视频存储器。任何熟悉PS2编程的人都会很适应PSP开发。
在家里进行PSP开发的前提条件是:1)熟悉c编程,2)toolchain,3)SDK,4)测试代码的平台。图形开发方面如果熟悉 framebuffer和OpenGL将会有很大帮助。现在PSP模拟器还处在初期阶段,离让人满意还差很大距离。可以用一个运行firmware1.0 或1.5版本的PSP作为测试平台。现在还没有办法在更高的firmware版本上运行未签名的程序。toolchain可以从 http://www.oopo.net/consoledev或使用subversion在svn://svn.pspdev.org/psp/trunk/psptoolchain取得。toolchain包含 binutils、newlib和一个用来使gcc4支持Allegrex CPU的补丁。直接在linux或Cygwin的命令行下执行toolchain.sh就可以安装toolchain了。安装和配置Cygwin的细节并不属于本文所讨论的范畴,你可以在其他地方找到相关资料。toolchain.sh会从subversion服务器上下载并安装SDK。PSP SDK在开发时的一个目标就是完全合法化。这意味着没有一行代码是从泄露的商业SDK中拿来的。PSP SDK中的任何内容都是通过反向工程firmware和已经发布的游戏得来的。pspdev论坛上有如何将SDK集成到几种IDE中的介绍。
当安装完上述的工具并其可以工作时,你就可以开始在PSP上写代码了。看一下SDK带的例子是一个很好的开端。在linux上例子安装在 /usr/local/pspdev/psp/sdk/samples目录下。我们从sdktest这里例子开始。首先需要包含一些头文件:
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
接下来是设置二进制文件的一些属性:
PSP_MODULE_INFO("SDKTEST", 0, 1, 1);
这些参数按顺序依次是:名称,标记,主版本号,次版本号。现在将标记设置为0。
接下来是一些相当标准的事情。下面几个函数用来设置相应home按键的退出回调函数。这些代码基本上是可以表达其含义的-大多数情况下你可以直接在程序中使用例子中的这些代码。在那些代码之后是通常的main()函数。这些对于书写可以编译并执行的代码来说已经足够了。(编译并允许一次sdktest还是值得的,这可以检验SDK是否配置正确)。在运行firmware1.0的PSP上,只需要复制make出的EBOOT.PBP到$ PSP/psp/game/sdktest就可以了($PSP代表你的PSP记忆棒在你的OS上的路径)。在运行firmware1.5的PSP上,使用 'make kxploit'代替'make'命令,这样会生成两个目录,将其全部复制到$PSP/psp/game/目录下。最后在PSP里选择UMD图标下面的 Memory Stick图标后,程序就会出现在PSP屏幕上了。
自此,你可以开始写一些代码了。你可以查看剩下的例子和SDK文档学会如何使用SDK。第二篇介绍图形和输入硬件细节的文章即将发布。
推荐资源:
http://wiki.pspdev.org, the ps[2,p] wiki
http://forums.ps2dev.org, the ps2dev 论坛。在发帖前请先搜索一下已有资源
http://www.pspwiki.org, 一个关于PSP信息的wiki.虽然 有些信息不太可靠,但是还是有一些有用的信息。
注意:不论何时提到ps2dev或pspdev,它们是可以互换的,代表同样的含义 : http://www.pspdev.org 和 http://www.ps2dev.org 是可以互换的。但是psp-dev并不是ps2dev或pspdev,他们发布了1.5版的firmware exploit.

原文地址:
http://www.osix.net/modules/article/print.php?id=713
译者:
gxcoo Ω hotmail.com

Sony PSP程序开发简介相关推荐

  1. PSP程序开发例子解析(一)HelloWorld

    今天晚上把PSP的开发环境搭建了起来 并且看了看PSP的HelloWorld 下面是介绍 开发环境搭建及Helloworld分析 具体需要下载的东西及详细配置在: http://www.itshaik ...

  2. COTS应用程序开发框架简介(二)

    COTS应用程序开发简介 应用程序设计完成后,相应的数据层结构.业务组件和大致地展现逻辑都已经被确定. 应用程序开始开发前可先拷贝框架提供的一个Web Application的模板到应用服务器的部署目 ...

  3. 《Abaqus GUI程序开发指南(Python语言)》——2.5 动态类型简介

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第2章,第2.5节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

  4. (Spring程序开发)简介程序开发步骤配置文件相关API

    1Spring简介 1.1 Spring是什么 Spring是分层的Java SE/EE应用full-stack 轻量级开源框架, 以IoC(Inverse Of Control:反转控制) 和**A ...

  5. 【微信小程序开发】第 1 节 - 小程序简介

    欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行.动静不失其时,其道光明. 目录 1.缘起 2.小程序与普通网页开发的区别 3.API 简介 4.总结 1.缘起 在日常生活中 ...

  6. 小程序开发(一)| 简介

    小程序开发(一)| 简介 1. 发展 每一款手机app的开发都有webview的部分,所以微信小程序也就是微信中的webview 代码构成所发展出来的产物.微信中的webview逐渐成为移动web的重 ...

  7. 智能卡简介、分类以及程序开发用到的协议

    目录 智能卡: 程序开发用到的协议 市面上主要的非接触卡分类(支持14443-3协议) 参考博文: 智能卡: 智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡. 接触式智能卡:有6-8 ...

  8. 黑马程序员_IOS开发简介和C语言基础

    (一)IOS开发简介: (1)IOS开发: IOS开发就是开发运行在IOS环境系统的软件.apple公司2009年推出开发包和环境,国内2010年iphone4问世,从而相 继出现开发者---> ...

  9. 基于 AVOS Cloud 的 Android 应用程序快速开发简介

    AVOS Cloud 移动开发 SDK 为 iOS.Android 和 WindowsPhone? 应用程序提供了基于云的 API 和服务,并且还提供了 JavaScript 和 REST API.使 ...

最新文章

  1. Java问题排查工具清单
  2. Gut Microbes:中科院微生物所王军组在新冠病人肠道病毒组研究取得新进展
  3. php相关扩展安装及报错总结
  4. 2017-2018互联网类脑巨系统研究报告,互联网大脑、城市云脑和AI
  5. 青龙羊毛——内容改版
  6. python中x_python中round(x,[n])的使用
  7. verilog 除法器
  8. python自动登录校园网_免费自动登录国科大校园网python脚本
  9. 远离ARP*** ARP防火墙新版发布
  10. kettle-多文件合并
  11. 数据结构第三章栈和队列(一)
  12. Linux下安装grafana
  13. C语言基础入门(经典收藏)
  14. vm12 和 centos 下载地址
  15. js 小写金额转大写
  16. Perl Learning 3 Subroutine
  17. 深度强化学习综述论文 A Brief Survey of Deep Reinforcement Learning
  18. WannaCry勒索病毒处理指南
  19. 【pycharm matlibplot中横轴与纵轴的刻度线向内如何调整】
  20. 国内外机器学习、深度学习竞赛平台

热门文章

  1. Android 开发问题请教----大神救我
  2. Android12之OpenSL ES创建引擎对象slCreateEngine(十一)
  3. endnote20 安装新style
  4. 计算S=1+22+333+4444····+n,当S超过1000时n最小值和S的值
  5. 查找企业网中非法接入的WIFI设备(转帖)
  6. maka做出好设计_MAKA:进军海报创作市场,PS小白也能做出高逼格海报
  7. 漏洞挖掘之资产收集(信息收集)
  8. 用 SharedPreferences 存储进行记住密码 和保存用户名(记住密码)
  9. 上海合合信息科技有限公司--深度学习算法实习生--面试题整理
  10. 菜鸟怎么用.Net Core 实现QQ登录