驱动:编写任何设备的驱动程序,都需要对该设备的原理有一定了解和认识。对于外部设备的访问总是需要通过一个控制器来间接访问,对于这个控制器的控制程序称为驱动程序

Nandflash 原理:

一:角色分析

数据存储的物理介质

二:Nandflash 分类

根据不同的方式可以将Nandflash 分出不同的类别出来,这里采用物理结构的方式来分类

(1)SLC(single level cell):单层次存储

(2)MLC(multi level cell):多层次存储

特点比较:

1)SLC 的存储格上只存储以为数据,而MLC的存储格上却存储两位数据,所以MLC的单位存储容量价格比SLC 更低

2)SLC使用寿命更长,SLC 10万次擦写,MLC只有1万次

3)SLC 比MLC访问速度更快,大约是3倍

4)MLC比SLC的功耗更高,大约高出15%

三:访问方式

(1)编址

注意:内存采用的是统一编址的方式,Nandfash采用的是独立编址的方式

1)内存单元既有地址总线,也有数据总线,然而Nandflash,地址和数据总线是复用的。

2)由于Nandflash 不像内存一样通过统一编址,那么怎么访问Nandflash呢?在cpu内部有一个叫做“Nandflash控制器”的东西,用来控制访问Nandflash

(2)地址结构

1)Nandflash控制器总共只有8个I/O管脚与之相连,明显根数太少,所以数据(地址或数据)是分几次送入的。

2)CPU内部的Nandflash控制器中,有几个寄存器,一个是“地址数据寄存器”,另外一个是“指令数据寄存器”,还有“数据寄存器”,这些寄存器的地址是统一编址的。实际上三个寄存器统称为“数据寄存器”,只是存放的数据的功能各不同。

地址——命令——数据

Nandflash 物理结构:

3)由图可知:

一个NandFlash被分为了,2048个块,每一个块又被分为64个页,每一个页被分为2k的空间,外加64byte 的空间用来放置校验码之类的。

4)对nandflash的读有两种方式:

页读:一种是给出页地址,一次将怎个页的内容读出来(只需要提供页地址,即为行地址)

随机读:另外一个方式是将页中的某个字节读出来。(需要给出行地址和列地址)

(3)信号引脚

控制引脚的含义如上图。

四:对Nandflash 的读操作

对于一些复杂的设备的操作,看懂时序图是一个很重要工作,按照时序图,根据I/O管脚上的信号有节奏的控制设备。

时序图:

Nandflash控制寄存器/Nandflash 配置寄存器(初始化配置):

作用分析:

用于初始化nandflash ,因为任何一个硬件的使用都必须事先进行初始化。

Nandflash控制寄存器

作用:

NFCONT 用于片选控制

nandflash 配置寄存器:

NFCONF 用于初始nandflash的时序控制,主要用于配置该寄存器中的TACLS  TWRPH0  TWRPH1 这几个位。

作用分析:

根据上表可以算得各部分时间的最小值,然后根据此值,进行配置

重启控制方式时序逻辑:

写入时序逻辑图:

根据I/O管脚上的命令流,有节奏的操作

写入时序逻辑图:

根据I/O管脚上的命令流,有节奏的操作

擦除时序逻辑:

根据I/O管脚上的命令流,有节奏的操作

NandFlash_control的更多相关文章

随机推荐

  1. 搭建zookeeper单机版以及简单命令的使用

    1:创建目录 #数据目录dataDir=/opt/hadoop/zookeeper-3.3.5-cdh3u5/data#日志目录dataLogDir=/opt/hadoop/zookeeper-3.3 ...

  2. HDU 2094 产生冠军 dfs加map容器

    解题报告:有一群人在打乒乓球比赛,需要在这一群人里面选出一个冠军,现在规定,若a赢了b,b又赢了c那么如果a与c没有比赛的话,就默认a赢了c,而如果c赢了a的话,则这三个人里面选不出冠军,还有就是如果 ...

  3. 【leetcode 简单】 第一百零七题 回旋镖的数量

    给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序). 找到所有回旋镖的数量.你可以假设 n ...

  4. JQuery获取被选中的checkbox的value值

    文章源头:http://www.cnblogs.com/td960505/p/6123510.html 以下为使用JQuery获取input checkbox被选中的值代码: <html> ...

  5. 【译】第九篇 Integration Services:控制流任务错误

    本篇文章是Integration Services系列的第九篇,详细内容请参考原文. 简介在前面三篇文章,我们创建了一个新的SSIS包,学习了脚本任务和优先约束,并检查包的MaxConcurrentE ...

  6. 【NOI题解】【bzoj题解】NOI2008 bzoj1063 道路设计

    @ACMLCZH学长出的毒瘤题T3.再也不是“善良”的出题人了. 题意:bzoj. 题解: 经典的树形DP题目,屡见不鲜了,然而我还是没有写出来. 这一类的题目有很多,例如这里的C题. 主要套路是把对 ...

  7. jmeter,测登录,要不要过滤掉JS,CSS等请求?感觉过滤掉了压出来的数据就不真实?

    首先,我们来明确下你的性能测试目的,你的目的是服务端的性能还是前端的性能.这两用目的所涉及到的测试场景和工具等方法是不一样的.1.我们先来谈谈服务端的性能.一般的web产品,像css, jpeg等这种 ...

  8. MVVM模式的 数据绑定

    数据绑定要达到的效果 数据绑定要达到什么效果呢,就是在界面中绑定了数据源之后,数据在界面上的修改能反映到绑定源,同时绑定源的修改也能反映到界面上.从界面反映到绑定的数据源是很容易理解的,因为在绑定过程 ...

  9. OpenFlow1.3协议wireshark抓包分析

    OpenFlow v1.0 v1.0协议消息列表如下: 分为三类消息:Controller-to-switch,asynchronous和symmertric. v1.0(包含至少一个流表,每个流表包 ...

  10. Windows 10安装MongoDB(安装&启动)

    Windows 10家庭中文版,MongoDB 3.6.3, 最近在学习Scrapy,可以却从未将scraped data存储到数据库中.在看过一些文档后,Scrapy会和MongoDB结合使用(还有 ...