查看: 2383|回复: 0

【转】存储器映射归纳

[复制链接]
发表于 2009-7-3 22:12:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
首先说明一点:只要是基于ARM7内核的处理器,其中断都是从0x00-0x1c(8个中断向量)处开始执行。
处理器的存储器映射可以归结为三种情况:
1         没有存储器的映射这样的处理器有:三星的S3C44BX处理器。没有存储器映射的处理器,其BANK地址是固定的,而且第一级中断向量的都是放到规定好的BANK0处(即地址0x00处)。可以归纳为:BANK地址固定且第一级中断向量位置固定(0x00)。
2         有存储器的映射地址空间的重新分配,与处理器的硬件结构紧密相关。总体来说,32位系统中的地址重映射机制可以分为两种情况:一类是处理器内部专门的寄存器可以完成Remap,这样只需将Remap寄存器的相应位置1,由硬件逻辑来完成地址的重新映射,如Atmel AT91xx系列;另一类没有专门的Remap控制寄存器,需要重新改写处理器内部用于控制Memory起止地址的Bank寄存器,来实现Remap过程。如S3C4510B。
2.1       BANK地址固定,但是第一级中断向量位置不固定(即复位后不一定从0x00执行)这样的处理器有:LPC2200系列(以LPC2214为例)。
LPC2214中有存储器映射控制,用于改变从地址0x00000000开始的中断向量的映射,这就允许了在不同存储器空间的代码对中断进行控制。
要重新映射的部分包括:中断向量区(32个字节)和额外的32个字节。具体代码如下所示。
;中断向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr
ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr            DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler
下面是存储器映射控制的示意图(一)(参考文献[1])。
[img]/qzone/newblog/v5/editor/css/loading.gif[/img]
示意图(一)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|维修人员 ( 鲁ICP备17033090号 )

GMT+8, 2024-4-25 15:10 , Processed in 0.200211 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表