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
    评论
• 电源电压 - 1.65V ~ 1.95V - 2.70V ~ 3.60V • 组织结构 - 存储单元阵列: (256M + 8M) x 8bit - 数据寄存器: (2K + 64) x 8bit • 自动的编程(写入)和擦除 - 页编程: (2K + 64)Byte - 块擦除: (128K + 4K)Byte • 页读取操作 - 页面大小 : (2K + 64)Byte - 随机读取 : 25µs(最大.) - 串行访问 : 25ns(最小.) (*K9F2G08R0A: tRC = 42ns(最小)) • 快速编程周期时间 - 页编程时间: 200µs(典型值) - 块擦除时间: 1.5ms(典型值) • 命令/地址/数据复用I/O端口 • 硬件数据保护 • - 编程/擦除在电源转换分离 可靠的CMOS浮栅技术 -耐力: 100K编程/擦除周期(有1bit/512Byte ECC) 数据保存时间: 10 年 • 命令式操作 • 带有1bit/528Byte EDC的智能Copy-Back编程 • 唯一的ID版权保护 • 封装 - K9F2G08R0A-JCB0/JIB0 : 无铅封装 63 - Ball FBGA I (10 x 13 / 0.8 mm 间距) - K9F2G08U0A-PCB0/PIB0 : 无铅封装 48 - Pin TSOP I (12 x 20 / 0.5 mm 间距) - K9F2G08U0A-ICB0/IIB0 52 - Pin ULGA (12 x 17 / 1.00 mm 间距) 本文档提供的为256Mx8bit的版本,K9F2G08X0A是2G-bit大小的NAND Flash存储器,带有64Mbit额外数据区(OOB区、冗余区)。此 NAND存储颗粒为固态存储市场应用提供了最具成本效益的解决方案。编程(写入)操作可以在200µs(典型值)对大小为(2K+64)Byte的页 进行写入,擦除操作可以在1.5ms(典型值)擦除大小为(128K+4K)的块。读取数据寄存器的数据周期时间为25ns(1.8v设备为42ns) 每字 节。I/O端口可以作为地址和数据输入/输出,也可以作为命令输入。芯片上的写控制器自动完成所有的编程和擦除功能包括脉冲重复、 并内部核查和数据余量(如有需要)。即使是写入操作频繁的系统,也可以通过K9F2G08X0A采用实时映射算法的ECC(错误纠正码)来加 强多达的100K编程/擦除周期的可靠性,K9F2G08X0A是一个用于大型非易失性存储应用的最佳解决方案,例如固态文件存储和其他用 于非易失性要求的便携式存储应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值