以下基于S3C4510B嵌入式系统
S3C4510B嵌入式系统中,系统复位后存储器的地址空间为0x000 0000至0x3FF FFFF的范围,其中0x000 0000至0x010 0000共4MB的空间为可直接访问区域(对应ROM的Bank0),即初始化代码可以烧写在这个范围内。0x200 0000~0x3FF 0000为未定义区域,需要初始化代码来定义。0x3FF 0000~0x3FF FFFF的空间为特殊功能寄存器的地址范围,特殊功能寄存器包括系统管理器、以太网控制器、HDLC通道控制器、I/O口控制器、中断控制器等等。
图1 系统复位时的存储器映射
下一步的任务就是在初始化代码中,通过配置系统管理寄存器的值来激活整个存储器空间。
特殊功能寄存器地址范围的起点,即0x3FF 0000地址处为SYSCFG寄存器,该寄存器的值在系统加电或复位时被初使化为0x3FF0000,我们也可通过配置寄存器的值,将特殊功能寄存器组的起始地址设定在64MB地址空间的任意位置。其它特殊功能寄存器的实际物理地址为特殊功能寄存器组的起始地址加上该寄存器的偏移地址。例如,系统复位时特殊功能寄存器组的起始地址初始化为0x3FF0000,特殊功能寄存器ROMCON的偏移地址为0x3014,因此,ROMCON的物理地址是:
0x3FF0000+0x3014=0x3FF3014
如果用户重新设定特殊功能寄存器组的起始地址为0x3000000,则ROMCON新的物理地址是0x3003014。在大多数情况下,并不需要去重新设置特殊功能寄存器组的起始地址,而直接使用其初始化值0x3FF0000。设置ROM或DRAM组的起始地址可以通过相应的寄存器加以配置。配置后如下图所示
图2 S3C4510B系统存储器映射
其中需要注意的是内部SRAM作为cache用。