RAM7中断重映射

地址重映射及中断向量表的转移

  ARM7处理器在复位后从地址0读取第一条指令并执行,因此系统上电后地址0必须是非易失的 ROM/FLASH,这样才能保证处理器有正确可用的指令。为了加快对中断的处理以及实现在不同操作系统模式下对中断的处理,这就需要重新映射中断向量表、Bootblock和SRAM空间的一小部分。ARM具有非常灵活的存储器地址分配特性。ARM处理器的地址重映射机制有两种情况:

  ①由专门的寄存器完成重映射(Remap),只需对相应的Remap寄存器相应位设置即可。

以LPC2368为例:

MEMMAP          EQU     0xE01FC040      ; Memory Mapping Control
                IF      :DEF:REMAP
                LDR     R0, =MEMMAP
                IF      :DEF:RAM_MODE
                MOV     R1, #2                  ;映射到RAM
                ELSE
                MOV     R1, #0                  ;映射到Boot ROM
                ENDIF
                STR     R1, [R0]
                ENDIF

  ②没有专门的Remap控制寄存器需要重新改写用于控制存储器起始地址的块(Bank)寄存器来实现Remap。实现REMAP操作的程序实现如下:

MOV     R0, #0x40000000    ;RAM区首地址
LDR     R1, =Vectors    ;向量表首地址#下面一段程序是把从0x00000000开始的64个字节(FLASH中的中断向量表和

                               ;地址表)搬移到以#0x40000000为首地址的RAM区中
  LDMIA   R1!, {R2-R9}    ;把以[R1]为首地址的32个字节数据装载到R2-R9中
  STMIA   R0!, {R2-R9}    ;把R2-R9中的数据存入以[R0]为首地址的单元中
  LDMIA   R1!, {R2-R9}    ;把以[R1]为首地址的32个字节数据装载到R2-R9中
  STMIA   R0!, {R2-R9}

  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值