首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||||||||||||||||||||||||||
地址重映射在S3C4510B系统中的实现 | |||||||||||||||||||||||||||||
收集整理:佚名 来源:本站整理 时间:2009-01-11 00:02:07 点击数:[] ![]() |
|||||||||||||||||||||||||||||
上面的步骤可以根据实际需要进行适当的添加或删节。值得注意的是:汇编生成的代码应该是与位置无关的代码,即代码在运行期间可以被映射到不同的地址空间,其中的跳转指令都是基于PC寄存器的相对跳转指令。基于PC的标号是位于目标指令前或者程序中数据定义伪操作前的标号,这种符号在汇编时将被处理成PC值加上或减去一个数字常量。 3 异常中断的处理 在Remap的启动代码中,需要特别注意的是异常中断的处理。在S3C4510B中,异常中断的入口地址是固定的,按表1次序排列。
地址重新映射之后,入口地址被映射到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=SystemrqHandle LDR r0,[r0] STR r0,[sp,#4] LDMFD sp!,{r0,pc};跳转到异常中断处理代码入口 异常处理入口代码: … SystemIrqHandler IMPORT ISR_IrqHandler STMFD sp!,{r0-r12,lr} BL ISR_IrqHandler ;跳转到C代码中异常中断处理程序ISR_IrqHandler LDMFD sp!,{r0-r12,lr} SUBS pc,lr,#4 … 在如上的结构中,不管系统是否进行了地址的重映射,异常中断向量都可以在运行时动态改变,大大提高了中断处理中的灵活性。中断向量可以在运行时指向不同的异常处理代码入口。 结语 面对实时性要求越来越高的各种应用,不管应用中有没有嵌入式操作系统,Remap都已经成为启动代码中必不可少的一部分。Remap的实现对于操作系统的移植也有重要的意义。Remap决定了系统启动的效率,并对整个系统的实时性和稳定性产生很大影响。因而,对Remap过程的理解和设计,对于那些嵌入式系统的开发人员来说是非常重要的,它从一开始就决定了整个开发过程的最终成败。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |