安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件

上传人:我*** 文档编号:145761259 上传时间:2020-09-23 格式:PPT 页数:21 大小:98KB
返回 下载 相关 举报
安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件_第1页
第1页 / 共21页
安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件_第2页
第2页 / 共21页
安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件_第3页
第3页 / 共21页
安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件_第4页
第4页 / 共21页
安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件》由会员分享,可在线阅读,更多相关《安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现课件(21页珍藏版)》请在金锄头文库上搜索。

1、安全移动存储设备控制芯片Nand闪存驱动固件程序设计与实现,指导教师:刘宏伟 学生姓名:王昕亮,1.Nand Flash简介,Nand Flash是采用Nand结构技术的非易失存储器,Nand Flash芯片设计成了页阵列,可使芯片读取速度更快。典型的Nand Flash芯片中的每一页拥有2048字节的数据区和64字节的备用区的容量,由32页构成一个块。备用区用于存储ECC(Error Checking and Correcting)编码、坏块信息等参数。,典型Nand存储结构如图所示:,1.1 Nand Flash物理结构,Nand Flash以页为基本单元进行存储,以块为基本单元进行擦除。

2、Nand Flash都有与页大小相同的页寄存器,用于数据缓存。在命令锁存使能引脚为高电平时,发给芯片的读/写/擦除命令就可以通过写命令写进芯片,当地址锁存使能引脚为高电平时,就可以通过写命令给出地址。Nand Flash的I/O接口可用于控制命令和地址的输入,也可用于数据的输入和输出。当读数据时,先从Nand Flash内存单元把数据读到页寄存器,外部通过访问Nand Flash I/O端口获得页寄存器中数据(地址自动累加);当写数据时,外部通过Nand Flash I/O端口输人的数据首先缓存在页寄存器,写命令发出后才写入到内存单元中。Nand Flash页的最小串行读操作典型时间是25ns

3、,页编程的典型时间是200us,块擦除的典型时间是1. 5ms。片内数据可以保存10年。Nand Flash器件在进行写入和擦除操作时需要内存技术设备(Memory Technology Device, 简称MTD)驱动支持。 和Nor Flash相同,Nand Flash也是一种“先擦除再写入”的存储介质,即要写入闪存的某页,须先擦除整个块。,1.2 Nand/Nor Flash比较,1) 闪存芯片读写的基本单位不同 应用程序对Nor芯片操作以“字”为基本单位。为了方便对大容量Nor闪存的管理,通常将Nor闪存分成大小为128KB或者64KB的逻辑块,有时候块内还分成扇区。读写时需要同时指定

4、逻辑块号和块内偏移。应用程序对N AN D芯片操作是以“块”为基本单位。Nand闪存的块比较小,一般是8KB,然后每块又分成页,页的大小一般是512字节。要修改Nand芯片中一个字节,必须重写整个数据块。 2)Nor闪存是随机存储介质,用于数据量较小的场合;N AND闪存是连续存储介质,适合存放大的数据。,3) 由于Nor地址线和数据线分开,所以Nor芯片可以像SRAM一样连在数据线上。Nor芯片的使用也类似于通常的内存芯片,它的传输效率很高,可执行程序可以在芯片内执行( XI P, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。

5、由于Nor的这个特点,嵌入式系统中经常将Nor芯片做启动芯片使用。而Nand共用地址和数据总线,需要额外联结一些控制的输入输出,所以直接将Nand芯片做启动芯片比较难。 4) Nand闪存芯片因为共用地址和数据总线的原因,不允许对一个字节甚至一个块进行的数据清空,只能对一个固定大小的区域进行清零操作;而Nor芯片可以对字进行操作。所以在处理小数据量的I/O操作的时候的速度要快与Nand的速度。比如一块Nor芯片通常写一个字需要10微秒,那么在32位总线上写512字节需要1280毫秒;而Nand闪存写512字节需要的时间包括:512每字节50纳秒+10微秒的寻页时间+200微秒的片擦写时间234

6、微秒。,5)Nand闪存的容量比较大,目前最大容量己经达到8G字节。为了方便管理,Nand的存储空间使用了块和页两级存储体系,也就是说闪存的存储空间是二维的,比如K9F5608UOA闪存块的大小为16K,每页的大小是512字节,每页还16字节空闲区用来存放错误校验码空间(有时也称为out-of-band,OOB空间);在进行写操作的时候Nand闪存每次将一个字节的数据放入内部的缓存区,然后再发出“写指令”进行写操作。由于对Nand闪存的操作都是以块和页为单位的,所以在向Nand闪存进行大量数据的读写时,Nand的速度要快于Nor闪存。,6)Nor闪存的可靠性要高于Nand闪存,这主要是因为No

7、r型闪存的接口简单,数据操作少,位交换操作少,因此可靠性高,极少出现坏区块,因而一般用在对可靠性要求高的地方。相反的,Nand型闪存接口和操作均相对复杂,位交换操作也很多,关键性数据更是需安错误探测/错误更正EDC/ECC)算法来确保数据的完整性,因此出现问题的几率要大得多,坏区块也是不可避免的,而且由于坏区块是随机分布的,连纠错也无法做到。 7)Nand Flash一般地址线和数据线共用,对读写速度有一定影响;而Nor Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。,二者的具体速度比较见下表:,Nand Flash的数据是以bit的方式保存在memory cell(存储单元)

8、,一般来说,一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是Nand Device的位宽。 Nand Flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: Column Address:列地址 Page Address :页地址 Block Address :块地址,1.3 Nand Flash地址构成,例如,对于x8 Nand Flash来讲,地址和命令只能在I/O7:0上传递,数据宽度是8位。512byte需要9bits来表示,对于528byte系列的

9、Nand Flash,这512byte被分成1st half Page Register和2nd half Page Register,各自的访问由地址指针命令来选择。A7:0就是所谓的Column Address(列地址),在进行擦除操作时不需要它,因为以块为单位擦除。32个page需要5bits来表示,占用A13:9,即该page在块内的相对地址。A8这一位地址被用来设置512byte的1st half page还是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bits来表示。,2.课题内容,本项目的目的是设计并实现应用于安全移动存储设备的Nand

10、 Flash驱动程序,完成对Nand Flash的读写控制和存储管理。提供驱动程序接口函数,供上层程序调用。主要包括两大主模块: 1)硬件驱动模块 2)功能接口模块,2.1 硬件驱动模块,硬件驱动模块可划分为如下子模块: 1)Nand硬件指令集预置子模块 该模块包含2个函数(函数说明请详见论文P3334),主要实现对Nand Flash硬件指令集的默认设置和非默认设置。进行非默认设置时,指令集成员从Block0中读取量产时预写入的值,以匹配不同厂商或不同型号Nand Flash芯片的不同指令集需求。 2)NFC寄存器值预置子模块 该模块包含2个函数(函数说明请详见论文P3435),主要实现NF

11、C寄存器默认和非默认方式初始化。NFC寄存器详见论文附录A(P91)。,3)Nand地址序列预写入子模块 该模块包含2个函数(函数说明请详见论文P35),主要实现预置Nand0和Nand1地址空间地址扩充及预写入。NFC硬件模块在XRAM中定义了两块空间,操作Nand Flash之前,CPU将目标地址序列按规则写入Nand0或Nand1地址空间,运行微指令时,NFC会在相应时间依照微指令要求从指定地址空间取地址序列送入Nand Flash数据总线。 4)片选机制子模块 该模块包含1个函数(函数说明请详见论文P3537),主要实现Nand操作前CE的选择。为扩大产品容量,可接入多块Nand Fl

12、ash芯片,但是物理地址序列长度并未增大,须根据逻辑地址计算当前需要选择哪片Nand芯片,而后设置NFC寄存器,指定其只向该片Nand发送指令及地址序列,从而实现地址扩充即扩大容量。,5)处理数据量相关寄存器设置子模块 该模块包含3个函数(函数说明请详见论文P3841),主要实现数据在NF Buffer和其他XRAM存储区通过DMA或非DMA方式传输时,不同方向、不同模式下DMA寄存器及SFR寄存器的设置。 6)基础操作微指令预置子模块 该模块包含3个函数(函数说明请详见论文P4245),主要实现NFC微指令系统下的Nand读、写和擦除微指令向指令空间的预写入。,功能接口模块可划分为如下子模块

13、: 1)Nand Flash操作接口子模块 该模块包含4个函数(函数说明请详见论文P4651),主要实现对Host端读写Nand Flash命令的执行及目标逻辑地址等参数的接收,针对Host端需求统筹调用Nand Flash操作函数的功能。在空闲时间内,上层模块通过坏块替换和块重写接口调用相应功能函数,完成坏块替换和块重写操作。,2.2 功能接口模块,2)Nand Flash驱动程序模块上电初始化子模块 该模块包含4个函数(函数说明请详见论文P5153),通过读取sfr_gpio特殊功能寄存器,获取Nand基本操作参数。其中,bit 4代表通道模式(0:单通;1双通);bit 5、6代表pag

14、e规格(00:512B/Page;01:1KB/Page;11:2KB/Page;10:4KB/Page);bit 7代表每个Block内的page数(0:128Pages/ Block;1:64Pages/ Block)。然后利用该部分参数,调用读Nand函数读取Block0、空间参数存储区等保留区中数据,完成初始化参数设置。 3)物理地址格式转换子模块 该模块包含3函数(函数说明请详见论文P5354),实现不同级别物理地址结构体和UINT32类型地址之间的格式转换。,4)物理地址序列寻址子模块 该模块包含5个函数(函数说明请详见论文P5459),完成利用物理/逻辑地址映射关系的物理地址寻址

15、操作。利用程序局部性原理,以TLB作为BT表的cache,提高寻址效率,利用最近最久未使用算法LRU(Least Recently Used)进行TLB满情况下局部映射表替换操作。 5)存储空间管理子模块 该模块包含2个函数(函数说明请详见论文P6062),主要完成保留区所在Block的备份和维护,以及在ECC decode过程中检测出的危险Block(未出现ECC不可纠错误情况下,512byte数据ECC纠错5 bit以上)和坏Block(出现ECC不可纠错误)的重写和坏块替换操作。,6)Nand Flash操作功能子模块 该模块包含5个函数(函数说明请详见论文P6468),被操作接口子模块调用,根据接收的参数计算出需要设置给NFC和DMA寄存器的值,调用寄存器设置和基础操作微指令子模块函数完成对Nand Flash目标地址的读、写和擦除操作。在进行Nand Flash写操作时,需根据物理地址划分连续Block序列,根据划分结果分别调用不同写函数完成对序列中首个Block、中间连续若干Block和序列中尾Block的写操作。而对于序列中首尾Block非整块写入的状况,还需调用非整块操作处理函数进行操作。,根据软件整体设计思想,一次典型的数据操作流程如图所示:,谢谢!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号