S3C2440中SDRAM \NOR FLASH\ NAND FLASH地址分配问题

今天看到这篇文章,觉得写得还是一般。仍然有使我迷惑的地方。贴于此,稍候做修改。    


前三篇文章里,我分析了 S3C2440 与 SDRAM,NOR FLASH,NAND FLASH 的连线。在S3C2440 开发板这个系统中,这三种存储芯片的地址是如何分配的呢?

首先看下图:

S3C2440中SDRAM \NOR FLASH\ NAND FLASH地址分配问题_第1张图片

 
这是 S3C2440 的存储器地址分配图,SDARM 只能接在 BANK6 或 BANK7.从分析 SDRAM 接线的文章里的 SDRAM 接线图可以看到,SDRAM 接的是 ngcs6,
也就是接在 BANK6,因为选择的SDRAM 是 2 片 32Mbyte,总容量是64Mbyte,所以 SDRAM 的地址范围是0x3000 0000 --- 0x33ff ffff。
 
S3C2440 的 OM0,OM1 脚决定系统启动模式:

S3C2440中SDRAM \NOR FLASH\ NAND FLASH地址分配问题_第2张图片

TQ2440开发板的 NOR FLASH 是 16bit 数据位宽,选择从NOR FLASH启动,所以 OM0 接 VDD,OM1 接 VSS,从分析 NOR FLASH 接线的文章里的接线图可以看到,NOR FLASH接的是ngcs0,也就是接在 BANK0.因为选择的 NOR FLASH是2Mbyte,所以NOR FLASH的地址范围是 0x0000 0000 --- 0x001f ffff。上电时,程序会从Norflash中启动,ARM 直接取 Norflash中的指令运行。最后来看 NAND FLASH,NAND FLASH  以页为单位读写,要先命令,再给地址,才能读到 NAND 的数据。NAND FLASH是接在 NAND FLASH 控制器上而不是系统总线上,所以没有在 8 个 BANK 中分配地址。如果 S3C2440 被配置成从 Nand Flash 启动, S3C2440 的Nand Flash 控制器有一个特殊的功能,在S3C2440 上电后,Nand Flash 控制器会自动的把Nand Flash 上的前 4K数据搬移到 4K内部SRAM 中,系统会从起始地址是 0x0000 0000 的内部 SRAM启动。 程序员需要完成的工作,是把最核心的启动程序放在 Nand Flash 的前 4K中,也就是说,你需要编写一个长度小于 4K的引导程序,作用是将主程序拷贝到 SDRAM 中运行。
 
      由于Nand Flash控制器从Nand Flash中搬移到内部RAM的代码是有限的,所以在启动代码的前 4K里,我们必须完成 S3C2440 的核心配置以及把启动代码(U-BOOT)剩余部分搬到 RAM 中运行,至于将 2440 当做单片机玩裸跑程序的时候,就不要做这样的事情,当代码小于 4K的时候,只要下到nand flash中就会被搬运到内部 RAM 中执行了。 不管是从 NOR FLASH 启动还是从 NAND FLASH 启动, ARM都是从 0x0000 0000 地址开始执行的。


你可能感兴趣的:(c,工作,Flash,存储,vss)