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

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. HDU 1561 The more, The Better (有依赖背包 || 树形DP)

    题目链接 Problem Description ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位 ...

  2. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  3. LCD时序中设计到的VSPW/VBPD/VFPD/HSPW/HBPD/HFPD总结【转】

    转自:https://blog.csdn.net/u011603302/article/details/50732406 下面是我在网上摘录的一些关于LCD信号所需时钟的一些介绍, 描述方式一: 来自 ...

  4. linux 获取时间后--自定义时间格式

    自定义时间格式 =================================-===================================== #include <stdio.h ...

  5. 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之grid安装 (四) 转自 一步一步搭建 oracle 11gR2 rac+d ...

  6. Linux学习笔记-文件系统和基本命令

    目录 分区设备文件名 分区 挂载 文件目录 文件处理命令 目录处理命令 硬件设备文件名 IDE硬盘 /dev/hd[a-d] USB硬盘 /dev/sd[a-p] 光驱 /dev/cdrom或者/de ...

  7. HTML5学习--SVG全攻略(基础篇)

    明天高级篇 一.什么是SVG? SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics),它用来定义用于网络的基于矢量的图形,使用 XML 格式定义图形.SVG 图像在放大或 ...

  8. Flask:初见

    Windows 10家庭中文版,Python 3.6.4 从Flask官网开始学起. 介绍 Flask是一个Python的Web开发微框架,基于Werkzeug.Jinja2模块(and good i ...

  9. JQuery怎么实现页面左侧菜单刷新后保留鼠标点击addclass的样式?

    $('ul.main-menu li a').each(function(){ if($($(this))[0].href==String(window.location)) $(this).pare ...

  10. Bootstrap FileInput中文API文档

    Bootstrap FileInput中文API整理 这段时间做项目用到bootstrap fileinput插件上传文件,在用的过程中,网上能查到的api都不是很全,所以想着整理一份比较详细的文档, ...