数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。
3.3文件系统的实现形式
Flash 文件系统的具体形式是根据系统资源环境和应用需求而定的,因此在具体的应用系统中会有不同的形式,从系统资源环境上大致可以分为以下两种形式:
无操作系统环境下:需要从底层硬件操作到高层管理一一实现文件系统的所有功能,一般需要设计专用的文件系统,设计实现复杂,但是具有很好的灵活性,可以根据不同的应用,对各层功能进行增强和裁减,以达到最优的性能和最低的成本。适合于功能相对简单、资源相对较少的专用性强的应用系统,但是通用性较差。
存在操作系统的环境下:NAND Flash 对于上层应用就和普通磁盘一样,只需根据操作系统的具体接口,实现文件系统功能即可。文件系统无需关心垃圾回收、磨损控制等高级算法设计和具体与硬件相关的细节代码,这些都由闪存转换层来完成。闪存转换层的实现有两种形式:一种是将闪存转换层集成到操作系统的文件系统内,一般需要针对操作系统开发驱动程序或设计Flash 专用文件系统;图3.1 所示的实现形式,上层文件系统由Windows 操作系统的FAT 文件系统实现,并通过USB接口与Flash 存储设备通信。闪存转换层则由存储设备控制器中的控制程序(固件)实现,封装NAND Flash 物理访问接口,向上层文件系统提供块设备的逻辑读写接口,FAT 文件系统像访问磁盘设备一样访问Flash 存储设备。
上层应用 主 机 设 备 操作系统 文件系统 闪存转换层 Flash存储器 图3.1 闪存转换层的实现形式
13
3.4本章小结
本章介绍了NAND FLASH文件系统的概念、簇的概念以及FAT16文件系统的格式结构及实现形式。在NAND FLASH上创建FAT文件系统,需要使用闪存转换层将FLASH存储器模拟为磁盘,这样FAT文件系统就可以像访问磁盘一样访问FLASH存储器。
14
4、NAND FLASH的驱动程序设计
4.1、FSMC的初始化
4.1.1、FSMC扩展NAND Flash配置
SRAM/ROM、NAND Flash和PSRAM类型的外部存储器都是由FSMC的NAND Flash控制器管理的,扩展方法基本相同,其中NAND Flash最为复杂。通过FSMC扩展外部存储器时,除了传统存储器扩展所需要的硬件电路外,还需要进行FSMC初始化配置。外部存储器能否正常工作的关键在于:用户能否根据选用的存储器型号,对配置寄存器进行合理的初始化配置。 (1)确定映射地址空间
根据选用的存储器类型确定扩展使用的映射地址空间。NAND Flash只能选用BANK1中的4个子BANK。选定映射子BANK后,即可确定:
①硬件电路中用于选中该存储器的片选线FSMC_NEi(i为子BANK号,i=1,…,4);
②FSMC配置中用于配置该外部存储器的特殊功能寄存器号。
地址 存储块 支持的存储器类型 6000 0000h 块1 NOR/PSRAM 4*64MB 6FFF FFFFh 7000 0000h 块 2 4*64MB 7FFF FFFFh NAND 闪存 8000 0000h 块3 4*64MB 8FFF FFFFh 9000 0000h 块4 4*64MB PC卡 9FFF FFFFh 如图4.1FSMC存储块
15
(2)配置存储器基本特征
通过对FSMC特殊功能寄存器FSMC_BCRi(i为子BANK号,i=1,…,4)中对应控制位的设置,FSMC根据不同存储器特征可灵活地进行工作方式和信号的调整。根据选用的存储器芯片确定需要配置的存储器特征,主要包括以下方面:
①存储器类型(MTYPE)是NAND FLASH; ②存储芯片的地址和数据引脚是复用(MUXEN),FSMC可以直接与AD0~AD15复用的存储器相连,不需要增加外部器件; ③存储芯片的数据线宽度(MWID),FSMC支持8位/16位两种外部数据总线宽度,但是本设计中选用的是16位的数据总线宽度。
④对于NAND Flash,采用同步突发访问方式(B URSTEN);
⑤对于NAND Flash,NWAIT信号的特性说明(WAITEN、WAITCFG、WAITPOL); ⑥对于该存储芯片的读/写操作,采用相同的时序参数来确定时序关系(EXTMOD)。 4.1.2 FSMC的配置
根据S29GL512P的映射位置,需要对FSMC_BCR2和FSMC_BTR2/BWTR2寄存器进行配置。
(1)FSMC_BCR2:配置S29GL512P的读/写采用统一时间参数,只需要设置时间寄存器FSMC_BTR2。配置存储器类型为NAND Flash,数据总线宽度为16位(字),不采用地址/数据复用,使能BANK2。
(2)FSMC_BTR2由表2可知,异步NAND Flash时序模型Mode2/B需要设置时间参数DATAST和ADDSET。 4.1.3 应用STM32对FSMC进行初始化配置
STM32固件库中提供的FSMC的NAND Flash控制器操作固件,主要包括2个数据结构和3个函数。数据结构FSMC_NORSRAMTimingInitTypeDef对应时间参数寄存器FSMC_BTR和FSMC_BWTR的结构定义;
FSMC_NORSRAMinitTypeDef对应特征配置寄存器FSMC_BCR的结构定义,并包含2个指向对应BANK的FSMC_BTR和FSMC_BWTR寄存器的FSMC_NORSRAMTimingInitTypeDef结构指针。利用固件库进行的主要初始化操作如下:
FSMC_NANDInitTypeDef Init;
FSMC_NAND_PCCARDTimingInitTypeDef Pc; Init.FSMC_Bank=FSMC_Bank2_NAND;
16
相关推荐: