设为首页
收藏本免费论文网
老版首页
老版首页2
经济学论文 财政税收论文 证券金融论文 管理学论文 会计审计论文 工商管理论文 财务管理论文 公共管理论文 法学论文
理学论文 医药学论文 政治论文 社会学论文 教育类论文 工学论文 计算机论文 艺术类论文 哲学论文
文化论文 英语论文 应用文论文 论文指导论文 文学论文 老版免费论文 老版2免费论文 本站导航
本站已收录十余万免费论文,并不断增加中,想要什么论文资料,轻松一搜便得! 关键词:
免费理学论文免费论文网首页 --> 理学论文 --> 微电子学论文 -->地址重映射在s3c4510b系统中的实现

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

 摘要:介绍基于S3C4510B系统的启动流程;详细介绍Remap(重映射)的实现过程及部分关键代码,给出启动代码中异常中断向量的处理。 关键词:Remap 地址重映射 S3C4510B 异常中断近年来,随着32位芯片制造技术的不断完善,制造成本不断降低,国内的32位MCU市场也开始火爆起来。越来越多的工程师开始将开发目光从8位转移到32位微处理器上,基于32位MCU的产品如雨后春笋般层出不穷,应用领域涵盖了掌上设备、家用电器、网络设备、无线通信、工业控制等。在32位微控制芯片领域,ARM架构的芯片占了近70%的市场。本文中所用到的处理器正是Samsung公司生产的基于ARM架构的S3C4510B。1 S3C4510B简介S3C4510B是一款基于以太网系统的高性价比、高性能的16/32位RISC微处理器。芯片部集成了8KB的Cache/SRAM和Ethernet控制器,减少了整个系统的成本。片外可扩展ROM、Flash、SDRAM等存储芯片,可以移植μClinux等复杂的操作系统。利用操作系统完善的TCP/IP协议栈充分发挥芯片的网络功能。S3C4510B芯片内部没有程序存储器,所有程序都被存储在片外扩展的ROM和Flash中。开始启动时,存有启动代码的ROM或Flash将被映射为0x00地址,系统从此开始运行。但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM中,因为RAM的存取速度要比ROM快得多,这样大大提升系统的性能。由于S3C4510B芯片中的异常中断入口地址被固定在0x00开始的8个字中,系统只能将地址空间重新分配,把RAM映射到0x00地址处,这正是Remap的原因所在。S3C4510B内部有几个特殊寄存器,用于实现地址空间和芯片内外存储介质的映射。这几个寄存器的简介如下:SYSCFG:设置特殊寄存器的起始地址和片内SRAM的起始地址。EXTDBWTH:设置各Bank寄存器所映射芯片的数据线宽度。ROMCON0~ROMCON5:设置系统内片扩展ROM和Flash的起始和终止地址。DRAMCON0~DRAMCON3:设置系统内片外扩展RAM的起始和终止地址。S3C4510B芯片内特殊寄存器段的物理地址为0x3ff0000,各特殊寄存器的偏移地址详见S3C4510B的技术手册。2 S3C4510B系统中Remap的实现地址空间的重新分配,与处理器的硬件结构紧密相关。总体来说,32位系统中的地址重映射机制可以分为两种情况:一类是处理器内部专门的寄存器可以完成Remap,这样只需将Remap寄存器的相应位置1,由硬件逻辑来完成地址的重新映射,如Atmel AT91xx系列;另一类没有专门的Remap控制寄存器,需要重新改写处理器内部用于控制Memory起止地址的Bank寄存器,来实现Remap过程。S3C4510B属于第二种情况。2.1 硬件系统结构及地址分配为例于对地址重映射的过程进行分析,图1给出了本人用于测试的基本S3C4510B的系统硬件结构。文中给出的所有流程及代码都经过了测试。此系统是以Samsung公司给出的测试板为参考建立的,其中ROM的容量为512KB,8位数据总线,Remap前的地址范围为0x0000000~0x0100000,Remap后的地址范围为0x1000000~0x1100000;RAM的容量为16MB,32位数据总线,Remap前的地址范围为0x0100000~0x100000,Remap后的地址范围为0x0000000~0x1000000;Flash的容量为2MB,16位数据总线,Remap前后地址不变,均为0x1100000~0x1300000。Remap前后的地址映射关系如图2所示。2.2 系统启动过程及Remap实现系统的地址重映射应该在系统的启动中完成,以下是S3C4510B的Remap启动过程。①系统特殊寄存器的设置。主要是配置如上所述的用于实现地址空间和芯片内外存储介质映射的寄存器,在本系统中配置如下:SYSCFG=0x87ffff90EXTDBWTH=0x3001ROMCON0=0x01000060ROMCON1=0x13044060DRAMCON0=0x11004060②初始化系统堆栈。在ARM7的体系结构中共有七种工作模式,不同的模式有不贩堆栈指针,互不干扰。各模式对应于不贩异常中断,至于哪些模式的堆栈需要初始化取决于用户使用了哪些中断,以及系统需要处理些异常类型。一般来说,管理者(SVC)堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。有一点需要注意的是,为保证Remap后程序运行正常,所有堆栈应设置在RAM的高端地址中。③初始化I/O口、UART、定时器、中断控制器以及系统中所用到的其它资源。在初始化异常向量表或修改异常向量表中的入口地址前,要关掉所有中断。

   
地址重映射在s3c4510b系统中的实现 来自: 免费论文网www.paper800.com  

④异常向量表的初始化。将民常中煌怛处理程序的入口地址写入RAM中相应的异常向量。必须保证的是,异常向量表绝对不会被从ROM搬移到RAM中的代码和数据所覆盖,为此,异常向量表一般被定义在RAM中的高端地址中。⑤程序代码及数据的搬移。Remap后,RAM被映射到0x0000的地址空间,ROM则被移到高端地址上。为保证Remap后程序能够瞠运行,ROM中的代码和数据必须地址不变地被移到RAM中。这是Remap成功的关键。两种途径可以实现搬移。一种是不管实际的代码空间有多大,直接将ROM地址空间整个搬移到RAM中。当然,这种方法并不适合在真正的启动代码中使用,但在做初步的Remap测试时,可以用来检验堆栈及异常中断的设置是否合理。另一种方法较复杂,它使用了SDT链接器ARMLink产生的定位信息,仅把RO风吹草动的有效代码和数据段到RAM中。ARMLink将编译后的程序链接成ELF文件。映像文件内部共有三种输出段:RO段、RW段和ZI段。这三种输出段分别包含了只读代码及包含在代码段中的少量数据、可读写的数据、初始化为0的数据,ARMLink同时还产生了这三种输出段的起始和终止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$$Limit、Image$$Linit和Image$$ZI$$Limit。可以在程序中使用这些定位信息。将ROM中的代码和数据搬移到RAM中,其实现代码如下:数据定义:BaseOfROM DCD |Image$$RO$$Base|TopOfROM DCD |Image$$RO$$Limit|BaseOfBSS DCD |Image$$RW$$Base|BaseOfZero DCD |Image$$ZI$$Base|EndOfBSS DCD |Image$$ZI$$Limit|源程序:;将ROM中的程序搬移到RAM中,重映射后的地址不变adr r0,ResetEntry ;ROM中程序起始地址mov r3,#(RamBaseAddr<<16) ;RamBaseAddr=0x100Idr r1,BaseOfROMIdr r2,TopOfROMAdd r1,r1,r3Add r2,r2,r30Idmia r0!,{r4-r11}Stmia r1!,{r4-r11}Cmp r1,r2Bcc%B0;将RW段中预初始化的变量搬移到RAM中sub r1,r1,r2sub r0,r0,r1 ;将r0指向RO段的结束,即RW段的开始ldr r1,BaseOfBSSIdr r2,BaseOfZeroAdd r1,r1,3Add r2,r2,r31 ;基于局部标号的相对跳转,PC+偏移地址,产生与位置无关的代码cmp r1,r2ldrcc r4,[r0],#4strcc r4,[r1],#4bcc %B1;接着把ZI段搬移到RAM中,并其将初始化为0mov r0,#0Idr r2,EndOfBSSAdd r2,r2,r32cmp r1,2strcc r0,[r1],#4bcc%B2⑥地址的重新映射。S3C4510B中的Remap过程其实很简单,只需重新设置ROMCON0~ROMCON5和DRAMCON0~DRAMCON3。在本系统中只需重新设置ROMCON0和DRAMCON0。源代码:;/*内存控制寄存器重新设置-存储空间重新映射地址空间*/EXPORT RemapMemoryRemapMemorymov r12,r14adr r0,RemapMemldmia r0,{r1-r11}ldr r0,=ROMCON0 ;ROMCON0为Bank寄存器的起始地址stmia r0,{r1-r11}bl ExceptionTalbeInit ;中断向量表重新初始化mov pc,r12RemapMemDCD &11040060 ;/*ROMCON0 0x1000000~0x1100000*/…DCD &10000398 ;/*DRACON0 0x0~0x1000000*/…⑦进入C代码空间,开始主程序的运行。此时代码应该运行于RAM中。
论文地址重映射在S3C4510B系统中的实现来自



   
地址重映射在s3c4510b系统中的实现 来自: 免费论文网www.paper800.com  
上面的步骤可以根据实际需要进行适当的添加或删节。值得注意的是:汇编生成的代码应该是与位置无关的代码,即代码在运行期间可以被映射到不同的地址空间,其中的跳转指令都是基于PC寄存器的相对跳转指令。基于PC的标号是位于目标指令前或者程序中数据定义伪操作前的标号,这种符号在汇编时将被处理成PC值加上或减去一个数字常量。3 异常中断的处理在Remap的启动代码中,需要特别注意的是异常中断的处理。在S3C4510B中,异常中断的入口地址是固定的,按表1次序排列。
表1 异常类型工作模式正常地址复位管理0x00000000未定义指令未定义0x00000004软件中断(SWI)管理0x00000008预取中止中止0x0000000数据中止中止0x00000010预留-0x00000014IRQ(中断)IRQ0x00000018FIQ(快速中断)FIQ0x0000001地址重新映射之后,入口地址被映射到RAM中,中断处理代码也被搬移到RAM地址空是。此时,中断响应和中断处理的速度都将大大加快,这将有利于提高整个系统的实时性。异常中断向量表的设计结构如图3所示。下面是各部分的源代码(以IRQ异常中断为例)。异常向量表的定义:(系统初始化时,将异常处理代码入口地址写入异常中的向量表)_RAM_END_ADDR EQU 0x01000000 ;重映射后RAM的终止地址MAP (_RAM_END_ADDR-0x100)SYS_RST_VECTOR # 4UDF_INS_VECTOR # 4SWI_SVC_VECTOR # 4INS_ABT_VECTOR # 4DAT_ABT_VECTOR # 4RESERVED_VECTOR # 4IRQ_SVC_VECTOR # 4FIQ_SVC_VECTOR # 4异常初始化代码:…b IRQ_SVC_HANDLER ;0x18…IRQ_SVC_HANDLERSUB sp,sp,#4 ;满递减堆栈STMFD sp!,{r0}LDR r0,=IRQ_SVC_VECTOR ;读取中断向量,;IRQ_SVC_VECTOR=SystemrqHandleLDR r0,[r0]STR r0,[sp,#4]LDMFD sp!,{r0,pc};跳转到异常中断处理代码入口异常处理入口代码:…SystemIrqHandlerIMPORT ISR_IrqHandlerSTMFD sp!,{r0-r12,lr}BL ISR_IrqHandler ;跳转到C代码中异常中断处理程序ISR_IrqHandlerLDMFD sp!,{r0-r12,lr}SUBS pc,lr,#4…在如上的结构中,不管系统是否进行了地址的重映射,异常中断向量都可以在运行时动态改变,大大提高了中断处理中的灵活性。中断向量可以在运行时指向不同的异常处理代码入口。结语面对实时性要求越来越高的各种应用,不管应用中有没有嵌入式操作系统,Remap都已经成为启动代码中必不可少的一部分。Remap的实现对于操作系统的移植也有重要的意义。Remap决定了系统启动的效率,并对整个系统的实时性和稳定性产生很大影响。因而,对Remap过程的理解和设计,对于那些嵌入式系统的开发人员来说是非常重要的,它从一开始就决定了整个开发过程的最终成败。

   
地址重映射在s3c4510b系统中的实现 来自: 免费论文网www.paper800.com

 如果觉得本篇论文可以,添加到收藏夹! [返回顶部↑
搜 索 其 它
相 关 论 文
浅谈亲子关系与心理健康
佳木斯市图书馆加强地方文献工作的新探索
浅谈社会心理学
苏格拉底与孔子的成人艺术比较
中小教师心理健康的调查研究
焙烧炉燃烧不正常的原因分析及解决方法
意识形态分歧与中苏关系的恶化
基于nios软核的嵌入式internet系统设计
相 关 类 别
物理学论文
统计学论文
数学论文
农林学类论文
地理地质论文
理学其它论文
微电子学论文
生物技术论文
应用化学论文
电子信息科学与技术论文
环境科学论文
生态学论文
材料物理论文
材料化学论文
心理学论文
生物科学论文
资源环境与城市规划管理论文
地理科学论文
应用心理学论文
海洋科学论文

免费论文网包含:各类免费毕业论文下载、免费法律论文、免费计算机论文、免费会计论文、免费英语论文、免费经济论文、免费管理论文、免费金融论文、大学生社会实践论文、三个代表论文、三农问题论文等所有论文均来源于网上的共享资源以及一些期刊杂志,所有论文仅供网友间相互学习交流之用,请特别注意勿做其他非法用途!如果我们有侵犯你的版权或其他有损您利益的行为,请联系我们指出,我们会立即进行改正或删除有关内容!
广告服务 | 关于我们 | 加盟合作 | 免责条款 | 人才招聘 | 联系我们