Rinrin 的个人资料永远的羁绊照片日志列表更多 工具 帮助

日志


7月25日

The (New) PSP Technical Docs

Author: SilverSpring
E-mail: silverspringpsp [at] gmail [dot] com
 
翻译: Rinrin
 
2. 介绍
当PSP处于完全关断状态时,只有SYSCON芯片是通电运行的,SYSCON控制绝大部分PSP硬件。包括外接电源接口及电池。
给SYSCON提供电源的是主板上的纽扣电池,所以即使PSP电池没有接入SYSCON仍在运行。
SYSCON会监控电源开关,当你打开电源开关时,SYSCON会控制硬件向主CPU上电。
主CPU是索尼定制的MIPS32核并且内嵌一块4KB掩膜ROM(像大多数嵌入式系统那样)。
ROM中储存"preipl"(它可以将PSP启动至工厂模式、加载和解密nand或记忆棒中的IPL)。
这块ROM被映射到物理地址0x1FC00000处(MIPS处理器的复位中断向量),这是CPU冷启动之后执行第一条指令的地址。
3. Pre-IPL启动顺序
3.1. Pre-IPL第一部分(加载器)
Pre-IPL分成两个部分:加载器和主体
因为preipl存储在非挥发只读内存中,所以程序中不能使用变量。
这样,第一部分的preipl(加载器)会将第二部分的preipl(主体)复制到CPU的暂存RAM中(启动时可用的RAM之一,另外还有一块4KB的RAM,2MB EDRAM和主内存DDR SDRAM这时并没有初始化)
暂存RAM映射到物理地址0x00010000处,当第一部分的preipl结束复制后,就跳转到新地址0x00010000。

3.2. Pre-IPL第二部分(主体)
现在CPU在暂存RAM中执行(即preipl主体),preipl主体初始化闪存并读入闪存块表(包含了已加密的IPL存放的块号)。
这张表起始于闪存中第四个块(即偏移0x10000),并且之后的七个块都是它的镜像。这就是为什么即时这些块中出现坏块,闪存块表仍然能被读取。不过如果8个块都损坏了,preipl无法找到IPL,PSP也就变砖了(唯一的解决方法是从记忆棒启动
或使用定制的IPL修补preipl使得它重定位这张表,这两种办法都需要潘多拉)。
闪存上的所有IPL块是加密的,preipl主体使用4KB的RAM(这个RAM映射到物理地址0x1FD00000处,但之后就会映射到0x1FC00000,作为媒体处理器的复位中断向量)作为加载和解密IPL块的临时存储,因为这块RAM只有4KB大小,所以加密的IPL块以4KB大小组织存放在闪存上。
preipl完成一块IPL的解密后,就将其加载到物理地址0x040F0000处并累积追加,这个物理地址位于2MB EDRAM(本来被用作显存)中,主内存DDR SDRAM这时还是没有被初始化。当preipl完成所有IPL块的解密和加载后就跳转到新地址。
------------------------------------------------------------------------
4. IPL启动顺序
解密后的IPL分为三部分:
第一部分  加载器
第二部分  main.bin
第三部分  主体
第一部分是一段MIPS代码,第二部分使用gzip压缩,第三部分是加密的(从2.60版本开始,第二部分和第三部分都被加密了)。
4.1. IPL第一部分(加载器)
加载器做的第一件事就是重置主CPU,重置后内嵌的掩膜ROM就不再映射到内存区域(0x1FC00000被重新映射到上面提到的RAM)。
这就是为什么IPL启动后preipl就不可访问了,加载器执行一些非常基本的硬件初始化并将第二部分main.bin解压缩到0x04000000(仍然是EDRAM)。随后加载器跳转到这个地址开始初始化硬件。
4.2. IPL第二部分(main.bin)
main.bin负责初始化PSP硬件,它有自己的驱动模块(类似于固件中的驱动模块,包括sceNAND_Driver,sceDDR_Driver, sceIdStorage_Service,sceSYSREG_Driver,sceSYSCON_Driver,sceGPIO_Driver,sceClockgen_Driver,sceI2C_Driver等等)
有些初始化依赖idstorage key(例如key 4,5,6),这就是1.50核心刷到TA082/086主板的PSP上变砖的原因:
一部分是因为TA082/086主板改变了时钟硬件,1.50核心不能识别它;另一部分是因为某些初始化步骤依赖key 5,当破坏key 5时,初始化就会终止,固件不会继续运行。
硬件初始化(包括主内存DDR SDRAM)完成后,main.bin就将IPL第三部分(主体)加载到物理地址0x08400000(这是DDR SDRAM)处并跳转到新地址启动系统。

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://rinrin9.spaces.live.com/blog/cns!21F4129E393B54B9!170.trak
引用此项的网络日志