




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
nand flash 原理简介原理简介 Fisrt part NAND flash 和 NOR flash 的不同 NOR flash 采用位读写 因为它具有 sram 的接口 有足够的引脚来寻址 可以很容易的存取其内部的每 一个字节 NAND flash 使用复杂的 I O 口来穿行地存取数据 8 个引脚用来传送控制 地址和数据信息 NAND 的读和写单位为 512Byte 的页 擦写单位为 32 页的块 NOR 的读速度比 NAND 稍快一些 NAND 的写入速度比 NOR 快很多 NAND 的 4ms 擦除速度远比 NOR 的 5s 快 大多数写入操作需要先进行擦除操作 NAND 的擦除单元更小 相应的擦除电路更少 在 NOR 器件上运行代码不需要任何的软件支持 在 NAND 器件上进行同样操作时 通常需要驱动程序 也就是内存技术驱动程序 MTD NAND 和 NOR 器件在进行写入和擦除操作时都需要 MTD 摘抄自网上流传很广的 NAND 和 NOR flash 的区别 Second part NAND Flash 结构与驱动分析 一 NAND flash 的物理组成 NAND Flash 的数据是以 bit 的方式保存在 memory cell 一般来说 一个 cell 中只能存储一个 bit 这些 cell 以 8 个或者 16 个为单位 连成 bit line 形成所谓的 byte x8 word x16 这就是 NAND Device 的位 宽 这些 Line 会再组成 Page NAND Flash 有多种结构 我使用的 NAND Flash 是 K9F1208 下面内 容针对三星的 K9F1208U0M 每页 528Bytes 512byte Main Area 16byte Spare Area 每 32 个 page 形成一个 Block 32 528B 具体一片 flash 上有多少个 Block 视需要所定 我所使用的三星 k9f1208U0M 具有 4096 个 block 故总容量为 4096 32 528B 66MB 但是其中的 2MB 是用来保存 ECC 校验码 等额外数据的 故实际中可使用的为 64MB NAND flash 以页为单位读写数据 而以块为单位擦除数据 按照这样的组织方式可以形成所谓的三类地 址 Column Address Starting Address of the Register 翻成中文为列地址 地址的低 8 位 Page Address 页地址 Block Address 块地址 对于 NAND Flash 来讲 地址和命令只能在 I O 7 0 上传递 数据宽度是 8 位 二 NAND Flash 地址的表示 512byte 需要 9bit 来表示 对于 528byte 系列的 NAND 这 512byte 被分成 1st half Page Register 和 2nd half Page Register 各自的访问由地址指针命令来选择 A 7 0 就是所谓的 column address 列地址 在进行擦除操作时不需要它 why 因为以块为单位擦除 32 个 page 需要 5bit 来表示 占用 A 13 9 即该 page 在块内的相对地址 A8 这一位地址被用来设置 512byte 的 1st half page 还是 2nd half page 0 表示 1st 1 表示 2nd Block 的地址是由 A14 以上的 bit 来表示 例如 64MB 512Mb 的 NAND flash 实际中由于存在 spare area 故都大于这个值 共 4096block 因此 需要 12 个 bit 来表示 即 A 25 14 如果是 128MB 1Gbit 的 528byte page 的 NAND Flash 则 block address 用 A 26 14 表示 而 page address 就是 blcok address page address in block NAND Flash 的地址表示为 Block Address Page Address in block halfpage pointer Column Address 地址传 送顺序是 Column Address Page Address Block Address 由于地址只能在 I O 7 0 上传递 因此 必须采用移位的方式进行 例如 对于 512Mbit x8 的 NAND flash 地址范围是 0 0 x3FF FFFF 只要是这个范围内的数值表示的地址都是有效的 以 NAND ADDR 为例 第 1 步是传递 column address 就是 NAND ADDR 7 0 不需移位即可传递到 I O 7 0 上 而 halfpage pointer 即 A8 是由操作指令决定的 即指令决定在哪个 halfpage 上进行读 写 而真正的 A8 的值是不需程序员关心的 第 2 步就是将 NAND ADDR 右移 9 位 将 NAND ADDR 16 9 传到 I O 7 0 上 第 3 步将 NAND ADDR 24 17 放到 I O 上 第 4 步需要将 NAND ADDR 25 放到 I O 上 因此 整个地址传递过程需要 4 步才能完成 即 4 step addressing 如果 NAND Flash 的容量是 32MB 256Mbit 以下 那么 block adress 最高位只到 bit24 因此寻址只需要 3 步 下面 就 x16 的 NAND flash 器件稍微进行一下说明 由于一个 page 的 main area 的容量为 256word 仍相当于 512byte 但是 这个时候没有所谓的 1st halfpage 和 2nd halfpage 之分了 所以 bit8 就变得没有意义了 也就是这个时候 A8 完全不用管 地址传递仍然和 x8 器件相同 除了 这一点 之外 x16 的 NAND 使用方法和 x8 的使用方法完全相同 三 NAND flash 驱动解读 以前由于做移植多一些 那些工作很简单 现在看来 从来都不用去关心驱动里面到底怎么实现的 这 几次面试才发现真的是学的太浅了 似乎我还在学习仰泳而那些牛人基本都属于潜水级的了 潜的不知有 多深 我对照着开发板所带的 NAND flash 驱动和 k9f1208 的芯片资料把这些代码通读了一遍 终于明白 了 NAND flash 的读写过程是如何实现的了 我所参考的驱动是 mizi 公司为三星芯片所写的 我看看了 大概和官方 2 4 18 内核的 nand c 差不多 在 s3c2410 处理器中有专门的 NAND flash 控制器 他们位于 SFR 区 具体可以参看 s3c2410 用户手册 以下的这些代码均可以在 vivi 或者 kernel 里面找到 文中会标明程序出自何处 在 vivi 中 有关 NAND flash 的驱动都在 driver mtd nand 下 该目录中包含的源文件 smc core c 是 NAND flash 的主要驱动 NAND flash 芯片定义了一个很长的结构 这个结构中包含了操作 NAND flash 的函数和一些必要的变量 include mtd nand h struct nand chip ifdef CONFIG MTD NANDY y void hwcontrol int cmd void write cmd u char val void write addr u char val u char read data void void write data u char val void wait for ready void int page shift u char data buf u char data cache int cache page struct nand smc dev dev u char spare SMC OOB SIZE else CONFIG MTD NANDY ifdef CONFIG MTD NAND ECC u char ecc code buf 6 u char reserved 2 endif endif CONFIG MTD NANDY 纵观对 NAND flash 的各种操作 read write erase 无外乎如下几种操作 1 选择 flash nand select 2 发送命令 nand command 3 进行相应操作 read write 4 反选 NAND flash nand deselect 下面是以上四步的实现代码 1 选择 NAND flash define nand select this hwcontrol NAND CTL SETNCE nand command mtd NAND CMD RESET 1 1 udelay 10 hwcontrol NAND CTL SETNCE 的作用是设置 2410 的 NAND FLASH CONFIGURATION NFCONF REGISTER 的 NAND Flash Memory chip enable 位为 0 这位寄存器在自动重启后就被系统自动清零 如果要访问 NAND flash 的内存 这位必须置 1 nand command mtd NAND CMD RESET 1 1 向 flash 发送命令 此命令为 reset 即为重置 NAND flash 然后是 10us 的延迟 给 flash 个反应时间 2 发送命令 Nand command 同样在 smc core c 中实现 NAND flash 的命令有如下几种 命令 命令值 描述 NAND CMD READ0 0 读操作 NAND CMD READ1 1 读操作 NAND CMD PAGEPROG 0 x10 页编程操作 NAND CMD READOOB 0 x50 读写 OOB NAND CMD ERASE1 0 x60 读写操作 NAND CMD STATUS 0 x70 读取状态 NAND CMD STATUS MULTI 0 x71 读取状态 NAND CMD SEQIN 0 x80 写操作 NAND CMD READID 0 x90 读 Flash ID 号 NAND CMD ERASE2 0 xd0 擦写操作 NAND CMD RESET oxff 复位操作 按照程序的注释 可以将该函数的实现分为如下几步 1 Begin command latch cycle 实现代码 this hwcontrol NAND CTL SETCLE this hwcontrol NAND CTL DAT OUT 找到第二条语句的定义 发现什么都么做 不解 希望达人解答 我猜想可能是一个数据读出的使能操作 允许数据读出 Command Latch Enable CLE and Address Latch Enable ALE are used to multiplex command and address respectively via the I O pins The CLE input controls the path activation for commands sent to the command register When active high commands are latched into the command register through the I O ports on the rising edge of the nWE signal 看了这段英文相信对第一条语句的作用已经十分清楚了 他就是用来控制向命令寄存 COMMAND SET NFCMD REGISTER 发送命令的 2 Write out the command to the device 这部分对于不同的命令来说 操作的步骤也不太相同 如果为写操作 那么还有根据 flash 不同的容量决 定操作步骤 具体可以参看代码 如果为其他命令 那么就是简单的一行 this write cmd command 将命令直接想到命令寄存器 NFCMD 7 0 中 3 Set ALE and clear CLE to start address cycle clear the command latch enable this hwcontrol NAND CTL SETALE set the address latch enable 然后按位操作 是用函数 write addr 将地址写到 NAND FLASH ADDRESS SET NFADDR REGISTER 中 4 Latch in address 实现代码 this hwcontrol NAND CTL CLRALE this hwcontrol NAND CTL DAT IN 地址发送完毕 清楚 A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 梁平别墅铝扣板施工方案(3篇)
- 和老人谈话活动方案策划(3篇)
- 冰蓄冷施工方案(3篇)
- 走廊通风排烟施工方案(3篇)
- 医学培训考试题库及答案
- 北京市昌平区2024-2025学年八年级下学期第一次月考语文考点及答案
- 安徽省六安市金寨县2023-2024学年高三上学期第一次月考数学试题及答案
- 心理学选择题目及答案
- 心动信号测试题目及答案
- 小组成员题目大全及答案
- 苏教版分式章起始课-展示课件
- 《茶文化与茶健康》第一讲
- OBE理念下的小学音乐教学设计反向思路初探
- GB 24541-2022手部防护机械危害防护手套
- 《PLC与变频器控制》课件 1.PLC概述
- 智慧产业园综合管理平台解决方案
- 国王的恩赐-传奇-任务全书
- 资产负债表(个体工商户)
- 手枪射击技巧
- 水浒人物介绍-鲁智深
- 呼吸系统疾病患儿的护理课件
评论
0/150
提交评论