(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf_第1页
(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf_第2页
(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf_第3页
(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf_第4页
(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(电路与系统专业论文)嵌入式linux中flash设备驱动的研究与优化.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 在嵌入式系统中,存储芯片是一种非常稀缺的资源,随着嵌入式系统的日趋复 杂,人们对低功耗、小体积以及低成本的存储设备要求越来越紧迫,硬盘本身由于 体积和速度方面的限制,无法得到广泛的应用。n o rf l a s h 和n a n df l a s h 是目前市 场上满足这种需求迅速发展起来的两种主要的非易失闪存技术。n o rf l a s h 存储器的 容量较小、写入速度较慢,但因其随机读取速度快,因此在嵌入式系统中,常用于 程序代码的直接存储。与n o r 相比,n a n d 闪存的优点是容量大、写入速度快,成为 了嵌入式产品中主要的数据存储设备。由于操作方式的限制,f l a s h 的读写速度还无 法和常规硬盘相比。为提升性能,n a n df l a s h 芯片逐步推出多c e 、i n t e r l e a v e 、 t w o p l a n e 、c a c h e 等操作方式,使其读写速度能成倍提高。而在嵌入式l i n u x 系统 下,管理n a n df l a s h 设备的驱动架构m t d 中还没有支持f l a s h 的这些操作特性,本 文主要探讨如何设计在软件和硬件方面让m t d 支持多个c e 、i n t e r l e a v e 、t w o p l a n e 并行操作,从而进行多方位的优化。本文深入研究了m t d 的设计原理和架构,针对 n a n df l a s h 多个c e 、i n t e r l e a v e 、t w o - p l a n e 操作的特点,提出了优化f l a s h 设备 驱动的一些具体措施,对于研究l i n u x 中数据的存储原理和对l i n u x 整体性能的提 升都有重要的研究意义。 关键词;嵌入式 n a n df l a s h 驱动程序性能优化 a b s t r a c t a b s t r a c t i ne m b e d d e ds y s t e m ,m e m o r yc h i pi sav e r ys c a r c er e s o u r c e w i t ht h ei n c r e a s i n g c o m p l e x i t yo fe m b e d d e ds y s t e m ,p e o p l eb e c o m ei n c r e a s i n g l yu r g e n tw i t hl o wp o w e r c o n s u m p t i o n ,s m a l ls i z ea n dl o wc o s tr e q u i r e m e n t so ft h es t o r a g ed e v i c e s t h eh a r dd i s k c a nn o tb ew i d e l yu s e db e c a u s eo fi t sl i m i t e dv o l u m es p e e d n o rf l a s ha n dn a n df l a s hi s c u r r e n t l yo nt h em a r k e td e v e l o p e dr a p i d l yt om e e tt h i sd e m a n do ft h et w om a i n n o n - v o l a t i l ef l a s hm e m o wt e c h n o l o g y e v e nt h o u g hi t sm e m o r yc a p a c i t yi ss m a l l e r , w r i t i n gs p e e di ss l o w e r , n o rf l a s hi sc o m m o n l yu s e di nt h ep r o g r a mc o d eo fe m b e d d e d s y s t e m sb e c a u s eo fi t sr a n d o mr e a ds p e e da n db e i n gs t o r e dd i r e c t l y c o m p a r e dw i d lt h e n o r , n a n df l a s hm e m o r y h a st h ea d v a n t a g eo fl a r g ec a p a c i t y , f a s t e rw r i t i n gs p e e d ,b e c o m e e m b e d d e di nt h em a i nd a t as t o r a g ed e v i c e b e c a u s eo ft h el i m i t e do p e r a t i o nm o d e ,f l a s h c a l ln o tr e a da n dw r i t es p e e d sc o m p a r e dt oc o n v e n t i o n a lh a r d d r i v e s t oi m p r o v e p e r f o r m a n c e , n a n df l a s hc h i p sg r a d u a l l yi n t r o d u c em o r ec e ,i n t e r l e a v e ,t w o - p l a l l e , c a c h ea n do t h e rm o d eo fo p e r a t i o ns ot h a ti tc a r lr e a da n dw r i t es p e e di m p r o v e ds e v e r n t i m e s i ne m b e d d e dl i n u xs y s t e m s ,t h em a n a g e m e n ts t r u c t u r eo fn a n df l a s hd e v i c ed r i v e r a l s od i dn o ts u p p o r tf l a s hm t do ft h e s eo p e r a t i n gc h a r a c t e r i s t i c s ,t h ep a p e rm a i r d y d i s c u s s e sh o wt od e s i g nt h es o t t w a r ea n dh a r d w a r ef o rm t ds u p p o r tm u l t i p l ec e , i n t e r l e a v e ,t w o p l a n ep a r a l l e lo p e r a t i o n ,t h e r e b yo p t i m i z i n gm u l t i f a c e t e d t h i sp a p e r d e a l sw i t ht h e d e s i g np f i n d p l ea n ds t r u c t u r eo ft h em t df o rn a n df l a s hm u l t i p l ec e , i n t e r l e a v e ,t w o 1 a n eo p e r a t i o nt h ec h a r a c t e r i s t i c so ft h ef l a s hd e v i c ed r i v e rt oo p t i m i z e s o m es p e c i f i cm e a s u r e sf o rt h es t o r a g eo fd a t ai nl i n u xo nl i n u xg e n e r a lp r i n c i p l e sa n d a r ei m p o r t a n tt oe n h a n c et h ep e r f o r m a n c eo fs i g n i f i c a n c e k e y w o r d s :e m b e d d e d ,n a n df l a s h ,d r i v e r s ,p e r f o r m a n c eo p t i m i z a t i o n i i 第章绪论 第一章绪论 1 1 课题的背景和意义 随着电子技术、通信技术、计算机技术和消费产品的融合,嵌入式系统逐渐进 入人们的日常生活。在嵌入式操作系统日益成熟和嵌入式网络技术的快速发展的今 天,嵌入式系统已经广泛的渗透到军事技术、科学研究、工程设计、各类产业和商 业文化艺术、娱乐业等方方面面,为相关系统智能化水平的提升和更新换代起到了 重要的作用。我们如何选择一个合适、高效、精简的嵌入式操作系统对开发者和开 发系统本身都将是重要的抉择,对整个开发系统的性能和速度的提升都有重要的影 响。而嵌入式l i n u x 操作系统的内核高效稳定、可移植性强,存储功耗低、体积小、 存储容量大,满足我们开发者的需要,因此在嵌入式领域得到了非常广泛的应用。 本课题将根据具体的软、硬件环境,在概括介绍嵌入式系统和l i n u x 系统特点 的基础上,从存储操作方面对l in u x 中f l a s h 的驱动程序设计进行研究,并提出了 改造驱动程序设计操作的一些有效措施,根据嵌入式l i n u x 操作系统下硬件体系结 构自身的特点,在保留其基本功能的基础上针对f l a s h 中的驱动程序读写、传输、 擦除进行不同程度的优化,满足了现实社会中人们对大容量存储器数据高速传输的 要求。 1 2 课题相关内容和技术难点 f l a s h 全称为f l a s hm e m o r y ,属于非易失性存储设备( n o n - v o l a t i l em e m o r y d e v i c e ) 。随着嵌入式系统的日趋复杂,f l a s h 在家电、数码设备、通讯以及军事上 的应用渐渐成熟,人们对大容量、低功耗、小体积以及低成本的存储设备要求越来 越紧迫。硬盘由于本身在体积和速度方面的限制,无法得到广泛的应用。从而n o r f l a s h 和n a n df l a s h 是当前市场上满足这种需求迅速发展起来的两种主要的非易失 闪存技术。n o rf l a s h 存储器的容量较小、写入速度较慢,但因其随机读取速度快, 因此在嵌入式系统中,常用于程序代码的存储。与n o r 相比,n a n d 闪存的优点是容 嵌入式l i n u x 中f l a s h 设备驱动的研究与优化 量大,写入速度较快,但其读入速度较慢。这是因为它只有8 或1 6 个i o 端口,要 完成n a n d 中地址和数据的传输就必须把这些信号轮流传送,进行复用,从而解决端 口少的问题。传统的n a n df l a s h 存储芯片只支持单一的c e 、i n t e r l e a v e 模式或 t w o - p l a n e 操作,本课题重点研究在一般m t d 并不支持多个c e 、i n t e r l e a v e 、 t w o p l a n e 并行操作的情况下,如何设计在软件和硬件方面让m t d 支持多个c e 、 i n t e r l e a v e 、t w o - p l a n e 并行操作,从而进行多方位的优化。 本课题从嵌入式l i n u x 系统中n a n df l a s h 的驱动程序设计为研究基础,深入研 究l i n u x 中f l a s h 存储驱动程序设计的原理,解决了怎样在一个n a n df l a s h 中同时 支持多个c e 、i n t e r l e a v e 、t w o p l a n e 并行操作这一技术难点。把n a n df l a s h 设备 驱动进行了更深层次的优化,进一步探索了当今n a n df l a s h 多通道数据传输中的解 决方案,对于研究l i n u x 中数据的存储原理和l i n u x 中f l a s h 驱动的优化设计都有 重要的研究意义。 1 3 论文工作的提出与意义 嵌入式系统的开发已经成为当前全球i t 界的又一个焦点,在电子计算机市场上 占有独特的氛围,掀起了新一轮使用嵌入式系统的热潮。在不久的将来使用嵌入式 系统的情形会越来越普及,比如汽车导航、数字电视机顶盒、掌上电脑、数码家电 等产品的进一步推广,嵌入式系统将融入我们的生活,为我们服务。就不必说监控 设备领域中嵌入式系统大量应用。随着嵌入式应用领域的进一步扩展和深入研究, 我们也对嵌入式操作系统也提出了更高的要求:可靠性、实时性、灵活性、可移植 性、对于网络应用的支持、安全性等等方面都在不断地提高。 上世纪八十年代,伴随着各种各样的商用嵌入式操作系统的涌现,例如v x w o r k s , p so s ,n e c u l e u s ,p a l mo s ,w i n d o w sc e 等等,这些产品大部分都是为专用系统而 开发的,虽然其功能较强大,但不菲的版权使用费用,限制了其在普通产品中的进 一步推广和应用。随着免费开放源代码l i n u x 系统的出现,嵌入式系统开发者开始 注意到l i n u x 系统在嵌入式系统方面广阔的应用前景。具有足够小的、灵活的可以 裁减的内核,支持多种硬件体系结构,在多样的嵌入式设备中具有良好的环境运行。 支持有效的网络通信能力,使得l i n u x 操作系统在当前嵌入式设备中应用显得得心 2 第一章绪论 应手。更重要的是,完全开放的l i n u x 源代码,能够使任何用户都可以根据自己的 需求方便地进行应用开发,同时不需要承担昂贵的价格,给开发者带来了极大的方 便。越来越多的公司推出了基于l i n u x 的嵌入式系统,如r t l i n u x ,e m b e d i x ,l i n u x e o s , p o c k e t i x 等等,嵌入实时l i n u x 已经成为嵌入式应用领域中主流的操作系统之一。 随着数字化、网络化、智能化的进程越来越深入,人们生活中传统家电朝着智 能化开始转变,使家电产品也具有一定的获取、加工、传递信息等功能,比普通p c 机应该具有更好的实用性。智能化家电也需要同样操作系统的支持,那么主流的嵌 入式0 s 之一的l i n u x 系统无疑也是非常合适的选择。此外,个人计算机在桌面系统 领域,当前应用最为广泛的是m i c r o s o f tw i n d o w s 系统。虽然l i n u x 在易用性、交 互性、移植性等方面不断提高,不再和以往一样局限于开发人员,爱好者的范围开 始慢慢向普通用户渗透。相对良好的图形界面w i n d o w s 系统来说,普通用户在吸引 力方面还存在不小的差距。其中,l i n u x 冗长的存储速度过慢,而且经常莫名的报错, 不仅使用户等待时间增加,还会带来系统繁琐、复杂的印象,导致不愿接受l i n u x , 因此,对于l i n u x 中的f l a s h 存储驱动进行改进是非常有必要的。 本课题以l i n u x 中f l a s h 存储驱动的剖析为核心,主要实验对内存取过程的分 析工作,研究了在给定的条件下如何更快速地建立起系统的可存取环境,并保证对 原有数据的完全正确的情况下快速完成存取,使用户能够尽快地与系统交互,避免 过多的无谓等待。探讨了在l i n u x 中如何在软件和硬件方面让m t d 支持多个c e 、 i n t e r l e a v e 、t w o p l a n e 并行操作,从而进行多方位的优化方案,对于整个f l a s h 驱 动的设计和开发也具有相当重要的意义。 第二章l i n u xf l a s h 驱动结构 2 12 4 4 0 开发板接口的布局 m i n i 2 4 4 0 接口布局如下图所示,它在十分紧凑的1 0 0x1 0 0 m m 面积上精致安排 了开发者常用的各种常用接口,并且还引出了供开发测试需要的富余的i 0 口和总 线接口: j t a g 接口系统怠线用户拄键裔须输入n o r n i _ n d 选l 晕开关 2 2 地址空间分配 m i n i 2 4 4 0 支持两种启动模式:一种是从n a n df l a s h 启动;另一种是从n o rf l a s h 启动。在此 两种启动模式下,各个片选的存储空间分配是不同的,如下图 第二章l i n u xf l a s h 驱动结构 嚣渊 鞴l r 6 c s 订 - 辣器篙 葛r o m 蚋0 0 s 萄 s r o m 舯g 删 8 a o 扣。嘲 鑫r 删 押g 蝴 捌r o h 押g c s 毒r o m 御g c s m l u 硷h i ) 再b o r b 靠r 嘲l 从上图中我们可以看出,左边是n g c s o 片选的n o rf l a s h 启动模式下的存储分 配图;右边是n a n df l a s h 启动模式下的存储分配图: 说明:n g c s o 片选的空间在不同的启动模式下,映射的器件是不一样的。由上图可 以知道: ( 1 ) 在n a n df l a s h 启动模式下,内部的4 kb y t e sb o o t s r a m 被映射到n g c s o 片选 的空间: ( 2 ) 在n o rf l a s h 启动模式下( 非n a n df l a s h 启动模式) ,与n g c s o 相连的外部存 储器n o rf l a s h 就被映射到n g c s 6 片选的空间s d r a m 地址空间:o x 3 0 0 0 0 0 0 0 0 x 3 8 0 0 0 0 0 0 2 3f l a s h 存储系统 m i n i 2 4 4 0 具备两种f l a s h ,一种是n o rf l a s h ,型号为s s t 3 9 v f l 6 0 1 ,大小为 2 m b y t e :另一种是n a n df l a s h ,型号为k 9 f 2 g 0 8 ,大小为2 5 6 m 1 g b ( i e i 版本为k 9 f 1 g 0 8 , 大小为1 2 8 m b y t e ) 。m i n i2 4 4 0 支持这两种f l a s h 启动系统,通过拨动开关( n o r n a n d 选择开关) ,可以选择从n o r 还是从n a n d 启动系统。在我们实际的产品中大都使用 嵌入式l i n u x 中f l a s h 设备驱动的研究与优化 一片n a n df l a s h 就足够用了,因为我们只是为了简单的开发和学习,因此还保留了 n o rf l a s h 。n a n df l a s h 不具有专门的地址线,它有专门的控制接口与c p u 相连, 数据总线为8 - b i t ( 如下图所示) ,这就意味着n a n df l a s h 读写数据会有一点慢, 怎样对总线进行复用,在一个n a n df l a s h 内部及多个n a n df l a s h 之间如何进行最 大程度的优化,从而提升n a n df l a s h 的读、写、擦除速度提高n a n df l a s h 性能是 本课题的研究重点。 下面我们再简单分析一下n o rf l a s h 存储器的原理:n o rf l a s h 采用了a 1 一a 2 2 总 共2 2 条地址总线和1 6 条数据总线与c p u 连接,我们这里地址是从a l 开始的,这 意味着它每次最小的读写单位是2 字节,因此根据其原理图,该图总共可以兼容支 持最大8 m 字节的n o rf l a s h ,实际在我们的开发板上只用了a 0 一a 1 9 条地址线,因 为与a 2 0 、a 2 1 相连的相应引脚是悬空的,可以满足其他用途。( 如下图所示) n a n df l a s h 7 摊i d :l | 寸耐蓉骞兰星或理f 州1 窖糍叫婚塑号 2 4n a n d 和n o r 的比较 n o rf l a s h 上世纪八十年代,随着i n t e l 公司首次开发了n o rf l a s h 产品,这项技术产品 就与e p r o m 和e e p r o m 产生三足鼎立的局面,后期日本东芝公司又开发了b l a n df l a s h 第一章l i n u xf l a s h 驱动结构 的结构,从每片n a n df l a s h 的数据传输效率和性能分析,研究它的数据传输速度, 降低其生产成本,沿袭了磁盘管理的特点,为今后取代大容量的磁盘奠定了坚实的 基础。那么n a n d 和n o r 有什么不同的地方,一些业内人士也弄不清楚。其实除了本 身的电路区别之外,我们可以从简单的存储容量的要求来判断,一般用来快速交换 数据存储少量代码时我们用n o r ,存储大量代码时我们用n a n d 来解决。两者各有自 己特殊的用途。 n o r 在市面上8 m b 以内的小容量数据传输应用较为广泛,传输效率较高,因为 n o r 在传输过程中有自己的特点,n o r 内部存储的代码自己可以直接驱动硬件工作, 直接运行,不需要通过r a m 来解决。一般它进行小容量的数据传输,那么它不能做 大容量数据的主要原因是较低的写入和擦除速度大大影响了它的性能,所以影响了 它的广泛使用程度。 n a n d 也有自己的特点,其存储容量大,单片存储密度高,数据写入速度与擦出 速度方面也较n o r 有很大的优势,所以它的应用正在进一步被人们开发,特别是f l a s h 驱动的设计和特殊的系统接口调用方面,正在被专业人员研究,提高其广泛的应用 范围。 下面通过一些综合性能指标来进一步分析n a n d 和n o r 的区别: ( 1 ) 性能方面 在f l a s h 中一般数据写入之前,我们都要提前对存储单元块中的单元进行擦除 操作。在n a n d 产品中我们进行擦除操作是通过存储单元内部是直接进行的,如果有 跨单元的操作我们就多做一步把原来的数据复制到缓存区中,等数据传输完成后, 再还原到原存储单元的后面。而n o r 在进行写入时首先要将目标块内所有的单元都 擦除清0 ,相对于n a n d 来说要复杂一些。通过一些f l a s h 产品我们可以测试到,n o r 存储器一般写入擦除1 2 8 k b 大小的块所需要的时间大约是5 s 左右,而n a n d 存储器 一般写入擦除3 2 k b 大小的块所需要的时闻大约是4i l l s 左右,完成1 2 8 k b 容量的数 据写入擦除操作也只要1 6 m s 左右就够了。 由以上数据分析可知,n a n d 和n o r 在性能方面差距是显著的,我们生活中的一 些电子产品中一般所用的都是一批小文件,是用n o r 存储器来进行操作的。所以执 行效率不高,一般我们在选择存储解决方案时,要权衡以下一些因素: 嵌入式l i n u x 中f l a s h 设各驱动的研究与优化 n a n d 擦除速度( 4 m s ) 远比n o r ( 擦除速度大约为5 s ) 快。 在进行写入操作之前一般都需要先进行擦除操作。 n o r 存储器在读时的操作速度比n a n d 存储器要快一点。 n o r 存储器在写入时的速度比n a n d 存储器慢很多。 n a n d 较n o r 来说存储器所使用的擦除单元更小,相应的擦除电路更少。 ( 2 ) 位校验方面 f l a s h 产品在使用过程中常会碰见一个或多个代码运行错误,针对这个问题对我 们平常用户来说已经习以为常了。但是如何避免这种错误的发生几率? 如果这种错 误在多媒体文件中出现一般影响不是太大,但是如果出现在系统中的配置文件或驱 动程序等重要程序中,就是这样一个d , d 、的故障可能会导致整个系统崩溃,死机等 现象,可能造成0 i 可估量的损失。那么如何来把这种错误发生的概率减到最少,这 就需要有一个错误检查错误更正( 简称e d c e c c 算法) 程序来对f l a s h 中某一位或 几位反转现象加以检测,从而对相应的反转位加以修正。保证数据传输的可靠性。 ( 3 ) 接口方面 n o r 存储器能直接运行内部的所有代码,那么它为什么能够直接运行呢? 这是因 为它自带s p d i 接口,预留足够多的地址线来进行寻址。而n a n d 存储器是用8 个i 0 引脚来复用,分别传输数据、地址和控制信号。它在管理方面采用5 1 2 字节作为一 个块进行读写操作,与硬盘的扇区操作类似,所以它将逐步取代硬盘或其他存储设 备来满足大容量和高数据的传输。 ( 4 ) 可靠性方面 我们衡量一个设备的好与不好,最重要的一个因素也就是可靠性,如果可靠性 差,那它的实用价值也就很难体现出来了。在f l a s h 存储器中,n a n d 存储器使用的 寿命一般最大能擦除一百万次,而n o r 只有它的十分之一,擦除次数只能达到十万 次左右。相对来说n a n d 使用寿命比n o r 长。其实n a n d 本身电路就比n o r 小很多, 只有n o r 的八分之一大小,所以它使用起来小巧方便。在电子产品网络化、智能化、 微型化发展的今天,存储器是电子产品中极其重要的一部分,现在制约电子产品飞 速发展的一个重要因素其实也就是存储器的发展,存储器如果能上升一个台阶,那 么整个电子产品又会迎来一次新的革命。n a n d 产品较之其他存储器有很大的发展潜 第二章l i n u xf l a s h 驱动结构 能和优势。 ( 5 ) 容量和成本 由于生产过程更为简单,n a n df l a s h 的内部单元尺寸几乎是n o r 器件的一半, 这样做主要是为了提高数据的存储容量,降低成本。现在市场上n o rf l a s h 主要用 在1 6 1 2 8 m b 左右的纯代码存储中,进行代码的交换:而n a n d 现在一般用在1 2 8 2 0 4 8 m b 存储器中,非常适合数据的存储,所以在市场应用范围很广。但是要满足大 容量的数据传输和存储,那就必须进一步改进和完善其内部传输机制,优化这个传 输过程。 ( 6 ) 软件方面 f l a s h 管理软件是按块进行读、写和擦除操作的,不同于磁盘仿真和内存管理软 件。在n o r 存储器中由于代码是直接运行,所以不用任何软件支持;而n a n d 本身就 是要复用地址线,把物理地址转换成逻辑映射,所以要用m t d ( 全称内存技术驱动程 序) 来对n a n d 进行管理。 n o r 和n a n d 具体操作过程中的不同特性: n a n df l a s h 和n o rf l a s h 内部各项目区别表 对比项目n o rn a n d( 备注) 接口总线i 0 接口这个两者最大的区别 单个c e l l 大小 大 小 单个c e l l 成本局低 读耗时快慢 单字节的编程时间快慢 多字节的编程时间 慢快 擦除时间慢快 低,但是需要额外的 功耗同 r a m 不行,但是一些新即是否允许,芯片内执 的芯片,可以在第一行( x i p , e x e c u t ei n 是否可以执行代码是 页之外执行一些小 p l a c e ) 的l o a d e r 位反转( b i tt w i d d li n g b i t几乎无卜4 次,也称作“部也就是数据错误,0 一 1 f l i p )限制分页编程限制” 或卜 0 芯片出厂时候是否允许坏块不允许允许 嵌入式l i n u x 中f l a s h 设备驱动的研究与优化 2 5n a n df l a s h 的硬件实现原理 2 5 1s l c 和m l c 的实现原埋 根据n a n df l a s h 单个内存单元中是存储1 位数据还是多位数据、内部存储数据 单元的电压的不同层次,可以将其分为s l c 和m l c : ( 1 ) s l c ( s i n g l el e v e le e l l ) : 单个存储单元,只存储一位数据,表示为1 或o 。那么在我们存储单元内部,这 些数据是用单个存储单元中内部所存储电荷的电压( 某个特定的阈值电压v ) 来定义, 如果大于此电压v 值,就是表示1 ,反之,小于此电压v 值,就表示0 。例如对于n a n d f l a s h 的数据写入l ,就是控制电路中的悬浮门去充电,存储的电荷够多,超过电压 阈值v ,就表示l 了。相反的,对于写入0 ,就是将其放电,电荷减少到小于电压v 值,就表示o 了。 那么在n a n df l a s h 中为何数据不能从o 变成17 从物理电路来分析,是可以实 现每一位从0 变成1 的。但是实际在设计电路的时候,我们是要考虑其效率的,如 果对于每一个存储单元都能单独控制,即0 变成1 就是对每一个存储单元单独去充 电,是可以实现的,但其所需要的硬件实现相对较复杂,价格也较昂贵,再说如果 在每个单元内都能充放电,虽然灵活,但是花费时间较长,工作效率是很低的;对 块擦除的操作,也就无法实现块内部一闪而过的速度了,失去了f l a s h 的众多的优 点了。 ( 2 ) m l c ( m u l t il e v e lc e l l ) 与s l c 相对应,就是单个存储单元可以存储多个位,比如2 位、4 位、8 位等。 其实现机制比较简单,就是通过控制内部电荷的多少,分成多个电压阈值,通过控 制电路里面的电荷多少,而达到我们所需要的存储成不同的数据。比如,假设输入 电压是v i = 4 v ,那么我们可以设计出2 的2 次方等于4 个阈值:1 4 的v i = 1 v ,2 4 的v i = 2 v ,3 4 的v i = 3 v ,v i = 4 v ,分别表示2 位数据0 0 ,0 l ,1 0 ,1 l ,对于写入 数据,就是充电,通过控制电路内部电荷的多少,对应表示不同的数据。 在进行读取操作过程中,则是通过对应的内部的电流通过一系列解码电路完成 读取,解析出所存储的数据。具体的物理实现过程,必须要我们有足够精确的设备 第二章l i n u xf l a s h 驱动结构 和技术才能实现精确的数据写入和读出的。单个存储单元可以存储2 位数据的,称 作2 的2 次方等于4l e v e lc e l l ,而不是2l e v e lc e l l ,同理,对于新出的单个存 储单元可以存储4 位数据的,称作2 的4 次方等于1 6l e v e lc e l 。 ( 3 ) s l c 和m l c 的区别: s l c 中每个存储单元存储1 位数据,m l c 每个存储单元存储2 位、4 位甚至更多, 数据的密度大,所以m l c 的成本相对s l c 来说要低一些。一般的m l c 相对于s l c 来 说读写速度要慢些,功耗要高一些,必须对m l c 进行优化,才能发挥其性能。现在 大部分厂家已经成熟解决了加快m l c 读写速度的电路设计并己投入使用。本论文主 要以m l c 来进行实验,从未来的发展趋势和各生产厂家的量产来看,m l c 进一步挖掘 是今后的的发展趋势。 那么如何识别s l c 还是m l c ? n a n df l a s h 设计中,有个命令叫做r e a di d ,读取 i d ,意思是读取芯片的i d ,就像我们的身份证一样,这里读取的i d 中,是读取几个 字节,一般最少是4 个,新的芯片支持5 个甚至更多,从这些字节中,可以解析出 很多相关的信息,例如此n a n df l a s h 内部是几个芯片( c h i p ) 所组成的,每个c h i p 包含了几片( p l a n e ) ,每一片中的页大小,块大小等等。在这些信息中,其中有一 个就是识别此f l a s h 是s l c 还是m l c 。下面这个就是最常见的n a n df l a s h 的 d a t a s h e e t 表中所规定的信息就有s l c m l c 的识别信息: i o n a n df l a s h 标识 功能描述i 0 6i 0 5i 0 4i 0 3i 0 2i o l i 0 0 7 l00 20l 内部芯片数 41o 8l 1 2l e v e lc e l l00 4l e v e lc e l lol 存储单元类型 8l e v e lc e l l1o 1 6 l e v e ll1 c e l l lo0 20l 同时多页编程数 4l0 8l1 嵌入式l i a u x 中f l a s h 设备驱动的研究与优化 交错编程多芯片 n o ts u p p o r t0 s u p p o r t 1 之间 n o ts u p p o r t0 缓存程序 s u p p o r t l 单页内选用s l c 和m l c 的性能是不样的,我们以每页4 k b 大小来实验,通过实 验我发现它们的性能比: 第一次实验,每页程第二次实验,每页程第三次实验,每页程 选用位 序增加时间( )序增加时问( )序增加时间( ) s l c3 5 2 8 7 m l c1 0 8 2 备注由以上实验可知m l c 只用了s l c 近2 8 6 的时间完成任务 所以现在f l a s h 中一般大多使用m l c ,我们后面的实验也是以m l c 为例来满足人 们对f l a s h 中数据高速传输的要求。 2 5 2n a n df l a s h 的物理存储单元的阵列组织结构 ( 1 ) n a n df l a s h 的内部组织结构 在进行实验之前我们先以k 9 f 2 g 0 8 x o a 为例来分析内部其各个引脚的功能,根据 其内部功能结构我们用虚线标出了本课题要优化及改进的硬件部分。( 如下图) f i g u r e1 k 9 f 2 g 0 8 x o af u n c t i o n a lb l o c kd i a g r a m v c c 、,j s 常见的n a n df l a s h 所拥有的引脚( p i n ) 所对应的功能,简单描述如下: 第二章l i n u xf l a s h 驱动结构 i o o i 0 7 :用于输入地址数据命令,输出数据。 c l e ( c o m m a n dl a t c he n a b l e ) :命令锁存使能,即在输入命令之前,先在模式寄 存器中设置c l e 使能。 a l e ( a d d r e s sl a t c he n a b l e ) :地址锁存使能,即在输入地址之前,先在模式寄 存器中设置a l e 使能。 c e # ( c h i pe n a b l e ) :芯片使能,在操作n a n df l a s h 之前,要先选中此芯片,才 能操作。 r e # ( r e a de n a b l e ) :读使能,在读取数据之前,要先使r e # 有效。 w e # ( w r i t ee n a b l e ) :写使能,在写取数据之前,要先使w e # 有效。 w p # ( w r i t ep r o t e c t ) :写保护。 r b # ( r e a d y b u s y ) :就绪忙,主要用于在发送完编程擦除命令后,检测这些操 作是否完成;忙,表示编程擦除操作仍在进行中,就绪表示操作完成。 v c c :电源。 v s s :接地。 : n c ( n o n c o n n e c t i o n ) :未定义,未连接。 ( 2 ) f l a s h 中页的排列方式: u r e2 k 9 f 2 g 0 8 x o aa r r a yo r g a n i z a t i o n 一个n a n df l a s h 由很多个块( b l o c k ) 组成,块的大小一般是1 2 8 k b ,2 5 6 k b ,5 1 2 k b , 此处以1 2 8 k b 为例。 每个块里面又包含了很多页( p a g e ) 。每个页的大小,对于现在常见的n a n df l a s h 多数是2 k b ,新的n a n df l a s h 是4 k b ,这类的,页大小大于2 k b 的n a n df l a s h ,被 嵌入式l i n u x 中f l a s h 设备驱动的研究与优化 称作b i gb l o c k ,对应的发读写命令地址,一共5 个周期( c y c l e ) ,而老的n a n df l a s h , 页大小是2 5 6 b ,5 1 2 b ,这类的n a n df l a s h 被称作s m a l lb l o c k ,地址周期只有4 个。 而块,也是n a n df l a s h 的擦除操作的基本最小单位。 每一个页,对应还有一块区域,叫做空闲区域( s p a r ea r e a ) 冗余区域( r e d u n d a n t a r e a ) ,而l i n u x 系统中,一般叫做o o g ( o u to fb a n d ) ,这个区域,是最初基于n a n d f l a s h 的硬件特性:数据在读写时候相对容易错误,所以为了保证数据的正确性,必 须要有对应的检测和纠错机制,此机制被叫做e d c ( e r r o rd e t e c t i o nc o d e ) e c c ( e r r o rc o d ec o r r e c t i o n ,或者e r r o rc h e c k i n ga n dc o r r e c t i n g ) ,所以设计了 多余的区域,用于放置数据的校验位。页是n a n df l a s h 的写入操作的基本最小的 单位。 2 5 3f l a s h 与普通设备的比较 普通存储设备比如硬盘内存,读取和写入都是以b i t ( 位) 为单位,读取一个 位的值,就是将某个值写入对应的地址的位,按位操作的。但是f l a s h 的物理特性, 使其内部存储的数据,只能从1 变成0 ,这点,可以从前面的内部实现机制了解到, 只是方便统一充电,不方便单独的存储单元去放电,所以,只能从l 变成0 ,也就是 释放电荷。 所以,总结一下f l a s h 的特性如下: f l a s h 和普通设备对比表 操作过程普通设备( 硬盘内存等) f l a s h 读取写入的叫法读取写入 读取编程( p r o g r a m ) 读取写入的最小单位b i t 位p a g e 页 擦除( e r a s e ) 操作的最小单 b i t 位g l o c k 块 位 将整个块都擦除成全是1 , 擦除操作的含义将数据删除全部写入0也就是里面的数据都是 o x f f 在写数据之前,要先擦除, 对于写操作直接写即可 然后再写 第二章l i n u xf l a s h 驱动结构 2 6r a n df l a s h 的特性 2 6 1n a n df l a s h 中的特殊硬件结构 由于r a n df l a s h 相对其他常见设备来说比较特殊,特殊的设备,也有特殊的设 计,有些特殊的硬件特性: ( 1 ) 页寄存器( p a g er e g i s t e r ) :由于r a n df l a s h 读取和编程操作来说,一般最一 小单位是页,所以,n a n df l a s h 在硬件设计时候就考虑到这一特件,对于每一片, 都有一个对应的区域,专门用于存放将要写入到物理存储单元中去的或者刚从存储 单元中读取出来的,一页的数据,这个数据缓存区,本质上就是一个b u f f e r ,但是 只是名字叫法不同,数据表里面叫做页寄存器,实际我们就可以看作页缓存更为恰 当些。实际上,只有等我们发了对应编程的下一个阶段的确认命令o x l o 之后,实际 的编程动作才开始,才开始把页缓存中的数据,一点点写到物理存储单元中去。 因此,我们简单总结一下数据的流向,实际是经过了如下步骤: n a n df l a s h 读写时的数据流向图 2 6 2n a n df l a s h 中的坏块( b a db 1 0 c k ) n a n df l a s h 中,这种在一个块中含有l r 个或多个位是坏的,就称其为坏块。如 果出现坏块,那么数据的稳定性是无法保证的,也就是说,不能保证我们写入的数 据是对的,即使写入对了,读出来也不一定对的。对于正常的块,肯定是写入读出 都是正常的。 坏块产生的有两种方式: 嵌入式l i n u x 中f l a s h 设各驱动的研究与优化 一种是出厂的时候。也就是新买到的,还没用过的n a n df l a s h ,也就有可能包 含了坏块。此类出厂时就有的坏块,被称作f a c t o r y ( m a s k e d ) b a db l o c k 或i n i t i a l b a d i n v a li db l o c k ,在出厂之前,就会做对应的标记,标为坏块。具体标记的地方 是,对于现在常见的页大小为2 k 的n a n df l a s h ,是块中第一页的o o b 起始位置的 第1 个字节( 旧的小页面,页大小是5 1 2 b 甚至2 5 6 b 的n a n df l a s h ,坏块标记是第 6 个字节) 如果不是o x f f ,就说明是坏块。相对应的是,所有正常的块或好的块, 里面所有数据都是o x f f 的。 第二种情况就是在使用过程中产生的,由于使用过程时间长了,在擦除块的时 候,出错了,说明此块坏了,也要在程序运行过程中发现并且标记成坏块。具体标 记的位置和上面一样。这类块叫做永久性坏块。 对于坏块的管理,在l i n u x 系统中,叫做坏块管理( b b m ,b a db l o c km a n a g m e n t ) , 对应的会有一个表去记录好块和坏块的信息,以及坏块是出厂就有的,还是后来使 用产生的,这个表叫做坏块表( b b t ,b a db l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论