这片文章主要介绍S3C2410的内存映射,主要参考2410的用户手册。
我用的板子是基于三星的2410,三星的内存片选有8个bank,这里所谓的bank我开始也不是很清楚,在网上搜了一通也不知所云,但是当我看了 2410的用户手册后才有点明白,这里的bank就是片选,一个片选就是一个bank,在U-Boot中,配制的时候要配制SDRAM和FLASH的 bank数,那么如果你的SDRAM或者FLASH就接了一个片选的时候,就定义为1就可以了,其他的类推。
下面是2410的内存映射图,2410和其他的大部分的处理器一样,支持NorFlash和NANDFlash启动,而这两种启动方式内存所映射的地址不怎么相同,我的板子没有NANDFlash,所以就以从NorFlash启动为例子了:
==============================================<-------0xFFFF_FFFF | NOT USED ==============================================<-------0x6000_0000 | SFR Area (各个接口的控制寄存器) ==============================================<-------0x4800_0000 ==============================================<-------0x4000_0FFF | BootSRAM (4KBytes) ==============================================<-------0x4000_0000 | SROM/SDRAM nGCS7 (bank7) ==============================================<-------0x3800_0000 | SROM/SDRAM nGCS6 (bank6) ==============================================<-------0x3000_0000 | SROM nGCS5 (bank5) ==============================================<-------0x2800_0000 | SROM nGCS4 (bank4) ==============================================<-------0x2000_0000 | SROM nGCS3 (bank3) ==============================================<-------0x1800_0000 | SROM nGCS2 (bank2) ==============================================<-------0x1000_0000 | SROM nGCS1 (bank1) ==============================================<-------0x0800_0000 | SROM nGCS0 (bank0) ==============================================<-------0x0000_0000
上面的每个bank最大支持128M,除了bank0,其它的每个bank都支持8/16/32位操作,bank0只支持16/32位操作,在我的板子上,Flash接bank0,一共8M,16位,SDRAM接bank6,一个32M,32位。所以启动的时候,CPU从0x0000_0000开始执行,而在这上面的NorFlash,存放的是U-Boot,用于启动Linux的。 而我们目前所做的工作就是要把U-Boot移植成功,然后烧写到该地址,假设你的板子的供应商已经提供了少些的工具,等到我们烧写成功,我们就可以通过网络来加载Linux,通过串口来调试了 |