S3C6410X supports 32-bit physical address field and that address field can be seperated into two parts, one part
is for memory, the other part is for pheriperal.
Main memory is accessed via SPINE bus, and its address range is from 0x0000_0000 to 0x6FFF_FFFF. This
main memory part is seperated into four areas, boot image area, internal memory area, static memory area, and
dynamic memory area.
Address range of boot image area is from 0x0000_0000 to 0x07FF_FFFF, but there is no real mapped-memory.
Boot image area has mirrored(映射) image which points a partial(局部) region of internal memory area or static memory area.
Start address of boot image is fixed to 0x0000_0000.
Internal memory area is used to access internal ROM and internal SRAM for boot loader, which is also called
Steppingstone. Start address for each internal memory is fixed. Address range of internal ROM is from
0x0800_0000 to 0x0BFF_FFFF, but real storage is only 32KB.This region is read-only, and can be mapped to
boot image area when internal ROM booting is selected. Address range of internal SRAM is from 0x0C00_0000 to
0x0FFF_FFFF, but real storage is only 4KB.
Address range of static memory area is from 0x1000_0000 to 0x3FFF_FFFF. SROM, SRAM, NOR Flash,
asyncronous NOR interface device, OneNAND Flash, and Steppingstone can be accessed by this address area.
Each area stands for a chip select, for example, address range from 0x1000_0000 to 0x17FF_FFFF(128M) stands for Xm0CSn[0]. Start address for each chip select is fixed.NAND Flash and CF/ATA cannot be accessed via static memory area,so if any of Xm0CSn[5:2] is mapped to NFCON or CFCON, related address region should not be accessed.One exception is that if Xm0CSn[2] is used for NAND Flash, Steppingstone is mirrored to address
region from 0x2000_0000 to 27FF_FFFF.
Address range of dynamic memory area is from 0x4000_0000 to 0x6FFF_FFFF. DMC1 has right to use address
range from 0x5000_0000 to 0x6FFF_FFFF. Start address for each chip select is configurable.
S3C6410跟S3C2440不 同,S3C6410支持32位物理地址空间并将该地址空间分为2个部分,一部分是“存储空间”,另一部分是“外设空间”。其中主存储空间通过SPINE总 线访问,其地址空间为0×0000,0000~0x6FFF,FFFF,主存储空间又分为4个区域——引导镜像区(boot image area),内部存储区(internal memory area),静态存储区(static memory area)和动态存储区(dynamic
memory area)。
引导镜像区(boot image area)的地址空间为0×0000,0000~0x07FF,FFFF,但是没有实际的内存映射,引导镜像区映射到内部存储区或者静态存储区的部分区域,并且起始地址固定为0×0000,0000。
内部存储区供boot loader访问内部ROM(internal ROM)和内部SRAM(internal SRAM),也称为Steppingstone。每个内部存储器的起始地址都是固定的。内部ROM的地址空间为 0×0800,0000~0x0BFF,FFFF,但是实际的存储空间只有32KB,这一区域是只读的,且当启动方式选择为内部ROM启动时,该区域应该 映射到引导镜像区(boot image area)。 SRAM的地址空间为0x0C00,0000~0x0FFF,FFFF,但是实际的存储空间只有4KB。
静态存储区的地址空间为0×1000,0000~0x3FFF,FFFF,通过这个区 域可以访问SROM,SRAM,NOR Flash,异步NOR接口设备,OneNand Flash和Steppingstone。每个区域对应一个片选,例如,地址空间0×1000,0000~0x17FF,FFFF对应 Xm0CSn[0]。每个片选的起始地址是确定的。Nand flash和CF/ATA不能通过静态存储区访问,所以如果Xm0CSn[5:2]对应的任意区域映射到NFCON或CFCON都导致其对应区域的地址空 间无法访问。一个特例是当Xm0CSn[2]对应的区域用于NAND Flash时Steppingstone映射到地址空间0×2000,0000~0x27FF,FFFF。
动态存储区的地址空间为0×4000,0000~0x6FFF,FFFF,DMC1有权使用0×5000,0000~0x6FFF,FFFF的地址空间。每个片选的起始地址是可以配置的。
外设空间通过PERI总线访问,并其地址空间为0×7000,0000~0x7FFF,FFFF。所有的特殊功能寄存器都可以通过这个区域访问。如果数据来自NFCON或CFCON,这些数据也通过PERI总线访问。
二 百度文库里一篇分析2440存储的
Nand flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。 S3C2440把Bootloader烧到nand flash上启动,因为在S3C2440里有一个内置的SRAM,叫做stepping stone(垫脚石,很形象…),系统启动加电后,会把nand flash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nand flash启动。如果bootloader小于4KB的话(像vboot),在SRAM里就能boot,大于4KB的话(u-boot,vivi),在SRAM里做一些基本初始化后,再把bootloader的剩余部分拷贝到SDRAM里(>0x30000000)。 我们使用S3C2440的时候,经常通过nor flash启动,进入vivi的菜单(S3C2440的Nor flash已经烧录好了vivi),之后通过vivi的usb下载功能,把其他的bootloader下在到nand flash里,下载完成后,再通过nand flash启动,测试我们的bootloader。
NOR flash适合做代码存储并EIP的,NAND适合用来作大量数据存储的。
NANDFlash启动: NANDFlash存储器的前4K将被自动加载到Steppingstone(内部SRAM缓冲器),然后系统自动执行这些载入的启动代码,这4K的启动代码需要将NANDFlash中的内容复制到SDRAM中执行。NANDFlash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。
从寄存器分析的一篇文章:http://www.cnblogs.com/mr-raptor/archive/2011/07/21/2347664.html