您的位置:首页 > 其它

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

2016-05-03 12:59 295 查看
要实现中断向量重映射,我们需至少将地址0开始的1MB地址映射到0x3000
0000开始的地址上.因为我们现在只使用段描述符.我们现在要实现的虚拟地址与物理地址的对应关系为
VA                                      PA
0x0000 0000-0x000f ffff          0x3000 0000 -0x300f ffff
0x3000 0000-0x31ff ffff                    0x3000 0000--0x31ff ffff
其它地址则都不可访问.
我们让可以访问的内存分为域0 不可访问的内存空间为其他(如域1),并在CP15 Reg3中设置的相应的域控制属性。
同样,我们设定TTB为0x3000 0000,可访问的段的属性为 0x01e 不可访问的段的属性为0x03e
这样我们的转换表初始化如下:
0x3000 0000 上的数据为 0x3000 001e                          1
0x3000 0004 -0x3000 0BFC  0x0010 003e -0x2ff0 003e  767
0x3000 0C00 0x3000 0C7C   0x3000 001e-0x31f0 001e  32
0x3000 0C80-0x3000 3ffc    0x3200 003e-0xfff0 003e   3296个入口  总共4096个入口
 
假设中断向量地址为 0x0000 0014 则该对就的物理地下由以下方法算出:
虚拟地址展开为
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
0
0
0
0
0
0
1
0
1
0
0
 
它转换时先取得虚拟地的 31:20位,在此为:0x000
然后根据TTB+(0x000<<2)=0x3000 0000 取得转换入口的内存地址,
然后得到这个地址上的数据:0x3000 001e 因此这个段基址为 0x300
最后,段基址<<20位,再并上虚拟地址的19:0得出物理地址:0x3000
0014
于是得出物理地址:0x3000 0014
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: