Skip to content

Commit 10d3162

Browse files
committed
Update PA
1 parent 9bd55ee commit 10d3162

1 file changed

Lines changed: 30 additions & 3 deletions

File tree

docs/plugin/memspace.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,43 @@
11
# 虚拟内存
22

3-
> 参考资料:《操作系统:原理与实践》
3+
> 参考资料:《操作系统:原理与实现》
4+
> https://uofw.github.io/upspd/docs/hardware/PSPTEK.htm#memmap
5+
> https://uofw.github.io/upspd/docs/hardware/psp_doc.pdf
46
57
本章讨论PSP的虚拟地址的使用情况以及同物理地址以及设备寄存器等的映射关系。
68

79
PSP物理内存到虚拟内存的映射方式为*直接映射*
810

911
其 CPU 中没有`MMU`,虚拟地址翻译不经过页表,而是使用`MPU`(Memory Protection Unit)进行较为简单的转换和权限控制。
1012

13+
14+
# 物理地址空间
15+
16+
物理地址空间也并非连续,中间存在空隙……
17+
18+
## 物理内存
19+
1120
PSP 1000 的物理内存为 32MB. PSP 2000/3000 的物理内存为 64MB。
1221

13-
32MB 即 $2^{25}$ B,物理内存地址范围为 0x00000000~0x02000000.
22+
32MB 即 $2^{25}$ B,物理内存地址范围为 0x08000000~0x0A000000.
1423

15-
64MB范围为 0x00000000~0x04000000
24+
64MB范围为 0x08000000~0x0C000000
25+
```
26+
SC CPU Physical Memory
27+
00010000 Scratchpad (16KB)
28+
04000000 VRAM (8MB)
29+
08000000 Main RAM (32MB, 64MB)
30+
1C000000 I/O Ports
31+
1FC00000 Shared RAM (2MB) [Contains exception vectors]
32+
1FE00000 I/O Ports
33+
```
34+
## 设备寄存器和内存映射 I/O
35+
36+
I/O设备的设计者和制造商约定俗成地将设备的外部接口设计为一组寄存器,称为**设备寄存器**,作为设备操作的统一编程接口。程序通过读写设备寄存器对设备进行配置和交互。
37+
38+
硬件设计者往往在**物理地址空间**上给 I/O 设备分配了一段专门的物理区域,用于映射**设备寄存器**
39+
40+
物理内存和设备寄存器占用不同的物理地址。
1641

1742
# 虚拟地址空间概览
1843

@@ -47,6 +72,8 @@ CPU 的异常向量表基地址寄存器储存的地址
4772
| ---------- | ---------- | ---- | ---------------- | ------------------------------------------ |
4873
| 0xbfc00000 | 0xbfcfffff | 1MB | 内核态(未缓存) | 异常向量表(Exception Vector Table) |
4974

75+
其实际物理地址应位于内核态可访问的 8MB 物理内存中。
76+
5077
# 游戏的默认加载地址
5178

5279
`0x08804000`,属于用户态可访问缓存区域。

0 commit comments

Comments
 (0)