Nand flash 芯片工作原理
Nand flash 芯片型号为 Samsung K9F1208U0B,数据存储容量为 64MB,采用块页式存储管理。8 个 I/O
引脚充当数据、地址、命令的复用端口。
芯片内部存储布局及存储操作特点
一片 Nand flash 为一个设备(device), 其数据存储分层为: 1 设备(Device) = 4096 块(Blocks)
1 块(Block) = 32 页/行(Pages/rows) ;页与行是相同的意思,叫法不一样
1 块(Page) = 528 字节(Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
在每一页中,最后 16 个字节(又称 OOB)用于 Nand Flash 命令执行完后设置状态用,剩余 512 个字节又 分为前半部分和后半部分。可以通过 Nand Flash 命令 00h/01h/50h 分别对前半部、后半部、OOB 进行定位通过 Nand Flash 内置的指针指向各自的首地址。
存储操作特点:
1. 擦除操作的最小单位是块。
2. Nand Flash 芯片每一位(bit)只能从 1 变为 0,而不能从 0 变为 1,所以在对其进行写入操作之前要一定将相应
块擦除(擦除即是将相应块得位全部变为 1).
3. OOB 部分的第六字节(即 517 字节)标志是否是坏块,如果不是坏块该值为 FF,否则为坏块。
4. 除 OOB 第六字节外,通常至少把 OOB 的前 3 个字节存放 Nand Flash 硬件 ECC 码(关于硬件 ECC 码请参看 Nandflash 控制器一节).
重要芯片引脚功能
I/O0I/O7:复用引脚。可以通过它向 nand flash 芯片输入数据、地址、nand flash 命令以及输出数据和操作
状态信息。
CLE(Command Latch Enable): 命令锁存允许
ALE(Address Lactch Enable): 地址锁存允许
CE: 芯片选择
RE: 读允许
WE: 写允许
WP: 在写或擦除期间,提供写保护
R/B: 读/忙输出
寻址方式
Samsung K9F1208U0B Nand Flash 片内寻址采用 26 位地址形式。从第 0 位开始分四次通过 I/O0-I/O7 进行
传送,并进行片内寻址。具体含义如下:
0-7 位:字节在上半部、下半部及 OOB 内的偏移地址
8 位:值为 0 代表对一页内前 256 个字节进行寻址
值为 1 代表对一页内后 256 个字节进行寻址 9-13 位:对页进行寻址
14-25 位:对块进行寻址
当传送地址时,从位 0 开始
Nand flash 主要内设命令详细介绍
Nand Flash 命令执行是通过将命令字送到 Nand Flash 控制器的命令寄存器来执行。
Nand Flash 的命令是分周期执行的,每条命令都有一个或多个执行周期,每个执行周期都有相映代码表示该周
期将要执行的动作。
主要命令有:Read 1、Read 2、Read ID、Reset、Page Program、Block Erase、Read Status。
详细介绍如下:
- Read 1:
功能:表示将要读取 Nand flash 存储空间中一个页的前半部分,并且将内置指针定位到前半部分的第一个字节。
命令代码:00h
- Read 2:
功能:表示将要读取 Nand flash 存储空间中一个页的后半部分,并且将内置指针定位到后半部分的第一个字节。
命令代码:01h
- Read ID:
功能:读取 Nand flash 芯片的 ID 号 命令代码:90h
- Reset: 功能:重启芯片。 命令代码:FFh
- Page Program:
功能:对页进行编程命令, 用于写操作。
命令代码:首先写入 00h(A 区)/01h(B 区)/05h(C 区), 表示写入那个区; 再写入 80h 开始编程模式(写入模式),接
下来写入地址和数据; 最后写入 10h 表示编程结束.
- Block Erase
功能:块擦除命令。
命令代码:首先写入 60h 进入擦写模式,然后输入块地址;
接下来写入 D0h, 表示擦写结束.
- Read Status 功能:读取内部状态寄存器值命令。 命令代码:70h
Nand flash 芯片工作原理的更多相关文章
- Nand Flash 控制器工作原理
对 Nand Flash 存储芯片进行操作, 必须通过 Nand Flash 控制器的专用寄存器才能完成.所以,不能对 Nand Flash 进行总线操作.而 Nand Flash 的写操作也必须块方 ...
- NAND FLASH ECC校验原理与实现
ECC简介 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块.为了检测数据的可靠性,在应用NAND ...
- Exadata Smart Flash Logging工作原理
Exadata在V2时代,ORACLE为了进一步拓宽客户人群,除了宣称Exadata适用OLAP系统,同时也适用于OLTP系统,那怎么才能满足OLTP系统的高IOPS要求呢?于是Exadata引入了闪 ...
- 静态SRAM芯片工作原理
下面谈谈当存储字节的过程是怎样的:下面的示意图显示的也仅仅是最简单状态下的情况,当内存条上仅剩一个RAM芯片的情况.对于X86处理器,它通过地址总线发出一个具有22位二进制数字的地址编码--其中11位 ...
- NAND FLASH 原理
NAND FLASH 原理 http://www.360doc.com/content/12/0522/21/21412_212888167.shtml 闪存保存数据的原理: 与DRAM以电容作为存储 ...
- nand flash详解及驱动编写
https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...
- 如何编写linux下nand flash驱动-4
2. 软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做 ...
- 三星DRAM+NAND FLASH 合成MCP芯片介绍及应用攻略
转自:http://blog.csdn.net/gao5528/article/details/6256119 三星DRAM+NAND FLASH 合成MCP芯片介绍及应用攻略(K5系列产品篇) 一年 ...
- NAND FLASH均衡算法笔记(转)
转来一篇关于NAND FLASH均衡算法的文章,加上一点思考和笔记,认为这种思考有助于更深刻的理解,更好的记忆,所以也算半原创了吧,最起码笔记是原创的.有意思的是,帖子提起这个算法并不是因为嵌入式开发 ...
随机推荐
- kafka-manager监控工具的安装和使用
kafka-manager监控工具的使用 第一步:对kafkamanager进行下载并编译 此步骤略:可参照成功与否不详,https://www.jianshu.com/p/174b6eb10d9d ...
- RoadFlow2.7.5 MyController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 文本数据增量导入到mysql
实现思路: 实现Java读取TXT文件中的内容并存到内存,将内存中的数据和mysql 数据库里面某张表数据的字段做一个比较,如果比较内存中的数据在mysql 里存在则不做处理,如果不存在则 ...
- jdbc出现中文乱码的解决办法
- Selenium(二)---无界面模式+滑动底部
一.使用无界面模式 1.正常情况启动 selenium 是有界面的 2.有些情况下,需要不显示界面,这时只要设置一下参数就可以实现了 # 不想显示界面可以用 Chrome——配置一下参数就好 from ...
- JS对象 指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回 ...
- 家庭-养老院模型理解IOC和DI
控制反转 IOC 1. 概念 应用内部不负责依赖对象的创建和维护, 由第三方负责, 这样控制权就由应用内部转移到外部容器, 控制权的转移就是所谓的反转. 2. 比喻 有一户家庭(应用)有个老人(依赖对 ...
- Postgraduate
https://account.chsi.com.cn/passport/login?entrytype=yzgr&service=https%3A%2F%2Fyz.chsi.com.cn%2 ...
- 【转载】GPU深度发掘(一)::GPGPU数学基础教程
作者:Dominik Göddeke 译者:华文广 Contents 介绍 准备条件 硬件设备要求 软件设备要求 两者选择 初始化OpenGL GLUT OpenGL ...
- thinkphp 异常处理
和PHP默认的异常处理不同,ThinkPHP抛出的不是单纯的错误信息,而是一个人性化的错误页面,如下图所示: 只有在调试模式下面才能显示具体的错误信息,如果在部署模式下面,你可能看到的是一个简单的提示 ...