ARM920T及其MMU,Cache学习杂记 (四)

两级页表怎么用?

 

来个假设先:我们需要将 0x0000 0000 开始的4KB映射到YA开始的4KB,显然仅用段映射无法实现,我们这里采用映射大小为4KB的小页操作。YA我们还不知道是多少,我们先假设转换表的基址为:0x1000 0000 因此,0x0000 0000 的虚拟地址所对就的转换表地址为0x1000 0000

我们假设先知道 0x1000 0000地址上的数据如下:

31

30

 

 

 

 

 

 

 

 

 

20

19

 

 

 

 

 

 

12

11

10

9

8

 

 

5

4

3

2

1

0

0

1

0

0

1

1

0

0

1

0

0

0

1

0

0

0

1

1

0

1

0

0

0

0

0

0

0

1

0

0

0

1

4

C

8

8

D

0

1

1

 

如位[1:0]可知,这是一个Coarse页表,

[31:10]Coarse页表的基址,这里为:0x132234

 

我们要转换的虚拟地址为 VA 0x0000 05A8

31

30

 

 

 

 

 

 

 

 

 

20

19

 

 

 

 

 

 

12

11

10

9

8

 

 

5

4

3

2

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

1

0

1

0

0

0

 

根据MMU中的小页转换过程,

先找出一级转换表中的地址,取得地址上的数据

TTB+VABit[31:20] <<2  =0x1000 0000  这个地址上的数据为Coarse页表描述符,数据我们已假设好,如上表。然后我们要根据这个描述符去寻找二级描述符。

 

你可能感兴趣的:(ARM920T及其MMU,Cache学习杂记 (四))