欢迎来到天天文库
浏览记录
ID:52065295
大小:339.00 KB
页数:30页
时间:2020-03-31
《《Flash设备驱动》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第24章Flash设备驱动Flash存储器是近几年来发展最快的存储设备,通常也称作闪存。Flash属于EEPROM(电可擦除可编程只读存储器),是一类存取速度很高的存储器。它既有ROM断电可保存数据的特点,又有易于擦写的特点。Flash可以在断电的情况下长期保存信息,因此被广泛的应用在PC机的BIOS和嵌入式系统的存储设备。本章主要内容如下:Flash存储器的硬件结构和存储原理Linux内核MTD设备支持Flash编程框架Flash驱动实例24.1LinuxFlash驱动结构Linux内核对Flash存储器
2、有很好的支持。内核设计了一个MTD结构支持Flash设备,用户只需要按照MTD的要求设置Flash设备的参数并且提供驱动就可以让Flash设备很好的工作。本节介绍内核MTD的系统结构。24.1.1什么是MTDMTD是英文MemoryTechnologyDevice的缩写,中文可以直接译为内存技术设备。MTD是Linux内核为支持闪存设备的一个驱动中间层。对内核其他部分来说,MTD屏蔽了闪存设备的细节;对于闪存设备驱动来说,只需要向MTD中间层提供接口就可以向内核提供闪存设备支持。Linux内核提供了一些与M
3、TD相关的术语,解释如下:JEDEC:JCFI:OOB:ECC:EraseSize:BusWidth:NAND:NOR:24.1.2MTD系统结构Linux内核MTD设备相关代码在drivers/mtd目录下,设计MTD的目的是让新的闪存设备使用更简单。MTD设备可以分层四层。24.1.2MTD系统结构24.2Flash设备基础NAND和NOR是两种不同的Flash存储技术,它们各有不同,适合不同的工作范围。编写一个闪存设备的驱动不仅需要了解MTD的结构,还需要知道闪存设备的硬件原理。本机介绍两种不同的闪存
4、工作原理,并且比较它们之间的异同。24.2.1存储原理NAND和NOR闪存都使用三端器件作为存储单元,学过模拟电子技术的读者可能了解一种叫做场效应管的器件,与此原理类似。三端器件分别有源极、漏极和栅极,栅极利用了电场效应控制源极于漏极之间的通断。24.2.2性能比较NORFlash技术最早是Intel公司研发出来的,紧接着东芝公司研发出了NANDFalsh技术。NOR闪存的特点是支持片内执行(ExecuteInPlace),应用程序不必加载到RAM就可以直接运行,简化了软件开发。NOR闪存的读取速率非常高,
5、但是容量通常不大,因为容量大成本会显著增大。此外,NOR闪存的写入和擦除速度非常慢,不利于大量数据存储。NANDFlash特点是存储密度高,写入和擦除速度都比NORFlash快,适合大数据量存储。但是,NANDFlash需要特殊的存储电路控制,并且空的或者已经擦除的单元才能写入数据,所以必须在写入数据之前先擦除块。24.3内核MTD层由于NOR和NANDFlash的物理特性差异,Linux内核设计了MTD层用于管理两种不同类型的Flash设备。MTD层对内核空间其他部分屏蔽了Flash的差异,有几个比较重要
6、的数据结构,在设计闪存驱动的时候需要了解,本节以Linux内核2.6.18版本为例介绍。24.3.1mtd_info结构mtd_info结构是MTD原始设备层的一个重要结构,该结构定义了大量的关于MTD的数据和操作,定义在include/linux/mtd/mtd.h头文件。mtd_info结构成员主要由数据成员和操作函数两部分组成。24.3.2mtd_part结构mtd_part结构描述分区,该结构中的mtd_info结构成员用于描述本分区,加入到mtd_table全局变量中。结构定义在drivers/m
7、td/mtdpart.c。27/*Ourpartitionnodestructure*/28structmtd_part{29structmtd_infomtd;30structmtd_info*master;31u_int32_toffset;32intindex;33structlist_headlist;34intregistered;35};24.3.3mtd_partition结构内核代码drivers/mtd/mtdpart.c文件内定义了添加和删除闪存分区的函数如下:intadd_mtd_pa
8、rtitions(structmtd_info*master,conststructmtd_partition*parts,intnbparts);intdel_mtd_partitions(structmtd_info*master);24.3.4map_info结构NORFlash驱动使用map_info结构作为核心数据结构。该结构定义了NORFlash的基址、位宽、大小等信息以及闪存的操作函数。24.3.5
此文档下载收益归作者所有