地址重映射在S3C4510B系统中的实现
发布时间:2008/5/27 0:00:00 访问次数:559
摘要:介绍基于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=0x87ffff90
extdbwth=0x3001
romcon0=0x01000060
romcon1=0x13044060
dramcon0=0x11004060
②初始化系统堆栈。在arm7
摘要:介绍基于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=0x87ffff90
extdbwth=0x3001
romcon0=0x01000060
romcon1=0x13044060
dramcon0=0x11004060
②初始化系统堆栈。在arm7