NAND Flash驱动程序结构.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NAND Flash驱动程序结构

NAND Flash驱动程序NAND Flash驱动程序下的NAND Flash驱动程序采用了分层结构驱动的上层NAND Flash的操作进行抽象,并采用一定的平衡了NAND Flash的擦写。NAND Flash驱动程序的结构如图.5所示。 图.5 FAT下NAND Flash驱动结构 在图中: File System 即文件系统。在这里,采用的是FAT文件系统。FAT文件系统是一种采用链式分配方式的文件系统。并没有对NAND Flash的特点优化,因此需要在下层的驱动程序做优化。 Flash Driver 即NAND Flash驱动程序。对上层的文件系统提供以DSK为前缀的流驱动接口。该层驱动程序本身分为两层:FAL层、FMD层。 (1)、FAL层 即Flash Abstraction Layer,Flash抽象层。该层主要提供三个功能: A将物理的Flash抽象成统一的接口提供给上层的文件系统。 将逻辑扇区地址转换成物理扇区地址。上层的FAT文件系统使用的是逻辑扇区地址,并不是真正的物理扇区,其转换由FAL实现。 对Flash实现损耗平衡(Wear-level)。为了避免反复的擦写Flash的同一个块,需要一种策略来减少反复的擦写块。 (2)、FMD层 即Flash Media Driver,Flash介质驱动层。该层实现FAL层的请求,对Flash物理扇区进行操作。 Flash Hardware 即NAND Flash芯片。FAL层(Flash Abstraction Layer) 函数接口 FAL层对上的函数接口也就是整个NAND Flash驱动程序的对外接口,由于NAND Flash是块设备,Windows CE中块设备采用的是流驱动接口,流驱动接口是一个标准的统一接口,只是各个驱动的前缀不同,在这里NAND Flash函数接口的前缀为“DSK”,这个前缀也使得Windows CE将“DSKxx:”的文件名看作为设备,使得我们能够通过Windows CE标准的Win32 API,如CreateFile、DeviceIOControl等来对设备进行打开、读写等操作。 具体的函数接口如下: DWORD DSK_Init(DWORD dwContext); BOOL DSK_Deinit(DWORD dwContext); DWORD DSK_Open(DWORD dwData, DWORD dwAccess, DWORD dwShareMode); BOOL DSK_Close(DWORD Handle); DWORD DSK_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes); DWORD DSK_Write(DWORD Handle, LPCVOID pBuffer, DWORD dwInBytes); DWORD DSK_Seek(DWORD Handle, long lDistance, DWORD dwMoveMethod); BOOL DSK_IOControl(DWORD Handle, DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize, PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned); VOID DSK_PowerUp(VOID); VOID DSK_PowerDown(VOID); 这里,实际使用的函数只有DSK_Init、DSK_Deinit、DSK_IOControl、DSK_PowerUp、DSK_PowerDown。其他函数均为空函数。 DSK_Init NAND Flash驱动程序初始化函数,系统启动时加载时调用此函数DSK_Deinit NAND Flash驱动程序卸载函数,在卸载的时候调用此函数。 DSK_IOControl NAND Flash驱动程序的I/O函数,读写等,也是上层主要使用的函数DSK_Read、DSK_Write、DSK_Seek均为空函数,不起任何作用。 DSK_PowerUp NAND Flash驱动程序电源管理函数。在系统唤醒时调用此函数对Flash进行电源管理。DSK_PowerDown NAND Flash驱动程序电源管理函数。在系统睡眠时调用此函数对Flash进行电源管理。 数据结构 DISK_INFO DISK_INFO结构包含了有关磁盘设备的。 typedef struct _DISK_INFO { DWORD di_total_sectors; DWORD di_bytes

文档评论(0)

sh4125733 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档