总结:S3C2440开发板中SDRAM NOR FLASH NAND FLASH地址分配

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

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

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 地址开始执行的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值