zoukankan      html  css  js  c++  java
  • NandFlash_control

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

    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

    4MLCSLC的功耗更高,大约高出15%

    三:访问方式

    (1)编址

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

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

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

    (2)地址结构

    1)Nandflash控制器总共只有8I/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管脚上的命令流,有节奏的操作

  • 相关阅读:
    感觉跟奇怪
    人多
    淡忘
    可疑
    js判断对象是否为空对象的几种方法
    互联网隐私泄漏
    清明时节
    垃圾mac
    【ES6】---JavaScript(二)
    【微信小程序】---Socket聊天功能实现
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589413.html
Copyright © 2011-2022 走看看