保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

地址重映射在S3C4510B系统中的实现


⑦进入C代码空间,开始主程序的运行。此时代码应该运行于RAM中。

    上面的步骤可以根据实际需要进行适当的添加或删节。值得注意的是:汇编生成的代码应该是与位置无关的代码,即代码在运行期间可以被映射到不同的地址空间,其中的跳转指令都是基于PC寄存器的相对跳转指令。基于PC的标号是位于目标指令前或者程序中数据定义伪操作前的标号,这种符号在汇编时将被处理成PC值加上或减去一个数字常量。

3 异常中断的处理

在Remap的启动代码中,需要特别注意的是异常中断的处理。在S3C4510B中,异常中断的入口地址是固定的,按表1次序排列。

表1 

异常类型 工作模式 正常地址 复位 管理 0x00000000 未定义指令 未定义 0x00000004 软件中断(SWI) 管理 0x00000008 预取中止 中止 0x0000000 数据中止 中止 0x00000010 预留 - 0x00000014 IRQ(中断) IRQ 0x00000018 FIQ(快速中断) FIQ 0x0000001

地址重新映射之后,入口地址被映射到RAM中,中断处理代码也被搬移到RAM地址空是。此时,中断响应和中断处理的速度都将大大加快,这将有利于提高整个系统的实时性。异常中断向量表的设计结构如图3所示。

下面是各部分的源代码(以IRQ异常中断为例)。

异常向量表的定义:(系统初始化时,将异常处理代码入口地址写入异常中的向量表)

_RAM_END_ADDR EQU 0x01000000 ;重映射后RAM的终止地址

MAP (_RAM_END_ADDR-0x100)

SYS_RST_VECTOR # 4

UDF_INS_VECTOR # 4

SWI_SVC_VECTOR # 4

INS_ABT_VECTOR # 4

DAT_ABT_VECTOR # 4

RESERVED_VECTOR # 4

IRQ_SVC_VECTOR # 4

FIQ_SVC_VECTOR # 4

异常初始化代码:

b IRQ_SVC_HANDLER ;0x18

IRQ_SVC_HANDLER

SUB sp,sp,#4 ;满递减堆栈

STMFD sp!,{r0}

LDR r0,=IRQ_SVC_VECTOR ;读取中断向量,

;IRQ_SVC_VECTOR=Systemrq

《地址重映射在S3C4510B系统中的实现(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140548.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。