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倍
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的更多相关文章
随机推荐
- hdu 1253 胜利大逃亡 (广搜)
题目链接 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个ABC的立方体,可以被表示成A个 ...
- CF448C Painting Fence
传送门 Descriptionzed 最近总是受到 Farmer 的困扰,因此他在自家的门前插了一排栅栏以防农气的入侵.栅栏由 N 个竖条栅栏横向组成,每个竖条栅栏宽度为 1.过了一段时间,zed 觉 ...
- python3之线程与进程
1.CPU运行原理 我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列.CPU从逻辑上可以划分成3个模块,分别是控制单元.运算单元和存储单元,这三部分由CPU内 ...
- TCP检验和
TCP的检验和 检验和目的 目的是为了发现TCP首部和数据在发送端到接收端之间发生的任何改动.如果接收方检测到检验和有差错,则TCP段会被直接丢弃. TCP在计算检验和时,要加上一个12字节的伪首 ...
- 解决阿里云无法正常使用samba的问题【转】
转自:https://blog.csdn.net/u011949148/article/details/54311288 昨天在阿里云上申请了一个云服务器,系统用的是ubuntu14.04,由于是免费 ...
- FastDFS集群部署
之前介绍过关于FastDFS单机部署,详见博文:FastDFS+Nginx(单点部署)事例 下面来玩下FastDFS集群部署,实现高可用(HA) 服务器规划: 跟踪服务器1[主机](Tracker S ...
- openjudge-NOI 2.5-1700 八皇后问题
题目链接:http://noi.openjudge.cn/ch0205/1700/ 题解: 经典深搜题目…… #include<cstdio> ][]; int num; void pri ...
- 非极大值抑制(NMS,Non-Maximum Suppression)的原理与代码详解
1.NMS的原理 NMS(Non-Maximum Suppression)算法本质是搜索局部极大值,抑制非极大值元素.NMS就是需要根据score矩阵和region的坐标信息,从中找到置信度比较高的b ...
- git内部原理
Git 内部原理 无论是从之前的章节直接跳到本章,还是读完了其余章节一直到这——你都将在本章见识到 Git 的内部工作原理 和实现方式. 我们发现学习这部分内容对于理解 Git 的用途和强大至关重要. ...
- Python_oldboy_自动化运维之路(四)
本节内容 集合 字符编码与转码 函数语法及基本特性 函数参数与局部变量 返回值和嵌套函数 递归 匿名函数 高阶函数 1.集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变 ...