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

本文介绍如何在ARM架构中实现中断向量的重映射,并详细解释了虚拟地址到物理地址的转换过程,包括段描述符、转换表及具体的地址映射规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要实现中断向量重映射,我们需至少将地址0开始的1MB地址映射到0x3000 0000开始的地址上.因为我们现在只使用段描述符.我们现在要实现的虚拟地址与物理地址的对应关系为

VA                                      PA

0x0000 0000-0x000f ffff          0x3000 0000 -0x300f ffff

0x3000 0000-0x31ff ffff                    0x3000 0000--0x31ff ffff

其它地址则都不可访问.

我们让可以访问的内存分为域不可访问的内存空间为其他(如域1),并在CP15 Reg3中设置的相应的域控制属性。

同样,我们设定TTB0x3000 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值