回经验交流 基于单片机和NANDFLASH芯片的嵌入式文件系统 邹锦坤陈星徐承深 (大连理工大学机械学院) 摘要:介绍了一个基于单片机(SST89E564RD)和三星NANDFLASH芯H(K9F1G08UOM)的嵌入式文件系统。 系统设计了NAND FLASH存储块管理层,能够对所有存储块进行动态管理,从而实现对牲个文件系统所仃区域
的保护。系统兼容FATl6文件系统,提供统一的API接口函数,具有良好的稳定性和可维护性。
关键词:嵌入式系统i文件系统;单片机;FLASH 1引言 14前,市场上嵌入式设各的文件系统基本上都是 为菜种应用特别设计的专用文件系统,它们与通用 PC上的操作系统并不兼容。而通用计算机上虽有很
的巨大存储容量和低成本更加有利于嵌入式文件系 统的实现,已经成为嵌入式设备存储介质的主流。 本项目在FATl6文件系统的基础上作了改进咀 适应嵌入式设备的使用要求.日,在文件系统的设计中 充分考虑提高系统的可靠性、Flash存储器的磨损均
多成熟的文件系统,如DOS下的FAT文件系统、 Windows NT F的NTFS及UNIX文件系统等,但衡性、坏块的管理和文件系统的效率等问题。 它
们并不适合直接用到工作环境恶劣的嵌入式设备上。 市场上并没有种成熟稳定,既能兼容通用PC操作 系统又能适应嵌入式设备工作环境的文件系统。 在一个手持式嵌入式设备的开发项目中,有这样 个难题,该设备文件系统要求:?在该手持式没备 中存储大量采集到的信息,最大存储量大于lOOM字
节。?信息要以文件方J=5=来存储,并且可以把文件导 本NAND FLASH嵌入式文件系统特点如下: (1)使用大容量的NANDFLASH芯片作为存储 介质,型号是三星的K9FIG08UOM,容量为128M字节。芯片内部结构:芯片2048块,每块64页, 页 大小为2048+64字节,其叶1该64字节为备用空间。
(2)文件存储系统采用改进的FATl6文件系统, 使在嵌入式系统上建立的文件可由PC机读出使用, 而PC机往嵌入式系统传输的文件也可被识别使用。
(3)嵌入式文件系统共分■层:硬件电路层:
NAND 入PC机中进行数据分析。?该设备的使用环境比较
恶劣,供电不稳定,容易出现突然断电的情况。基于 I:述考虑,奉文针对移动式数据采集器设计了一个嵌 入式Flash文件系统。 FLASH存储块管理层;文件存储管理层。还 提供文件系统的API接口甬数,便于开发人员使用。
2总体设计思路分析 传统基于mcs51系列单片机的嵌入式设各一般都 采用EEPROM或NOR FLASH作为其信息3硬件电路架构设计 本项目硬件电路架构如图1所示,其主要器件: ?SST公司的8051系列单片机SST89E564RD;?三 的存储器 件。它们存在读写速度慢,容量小,价格高等缺点, 且
星公司的NAND FLASH芯片K9FIG08UOM;
?芯邦
公司USB主控芯片CBMl 180。其中矩形方框部般都不带有文件存储管理系统。本设计选用 NANDFLASH芯片作为信息的存储介质能够很好的 分为 如优盘大小的存储卡,比普通优盘多r一个对单片机
端的接【_1。当把存储卡连接到该嵌入式设备中时,采 解决这个问题。NANDFLASII的读取和写入速度快, 复用I/0口来传输地址信息和数据信息,较NOR FLASH节省大量的管脚。另外,NANDFL
ASH芯片
用单片机的Po口直接连接NANDFLASH芯片并行传 万方数据
输的办法存取数据,不使刖其他专用的USB协议接 口芯片。这时存储卡相当于一个直接挂在8051单片
机总线上的存储器件。而当把存储}连接到PC机上 块数记录在配置表的相应位置wZoneXLogBlk时,存储卡内的NANDFLASH芯J{通过USB土控芯 片CBMI 180作协议转换后与PC机通讯。这时存储 k相当于一个普通的优盘。使用时,先把1竽储卡放到 Max(2
宁节)。每个Zone表的最后6个好块作为替换块使 用。Zone表在Flash中的存储地址=wCfgTblAddr+ bZoneTblPageOffset+1。Zone表样本如表2所示。 表1配置表详细定义 Name CFG Start Flag Description 该手持嵌入J=I=设备中去记录采集到的数据,采集完成 后就可直接把存储卡接到PC机上导出数据。 配置表的表头:0x5A5A5A5A 除这4个Byte外所有数据的XOR值 C&Tblxorvalue Reserved
当前配置表CfgTbl存放的地址 Flash的每个Block的物理Page数 wCfgTbIAd击 wPhyPagesPerBlock
图1硬件电路架构罔 wPhyBlocksPerChip 每片Flash的物理Block数 bZmneTblPageOff,set 该值加1为Zone表相列配置表的页
4 NAND FLASH存储块管理层
偏移
bZoneNtmff'erChio 一片Flash可划分的Zone数 一个Block的Sector总数 -25wSectorPerBlk 表、FDT表、FAT表、DATA区五个区域,其中前4 传统的FATl6文件系统包括有MBR表、DBR bI?ageSecNumShiflB 慨
个ragc的s“竺熬撬纂鸶童I毖i
Zonel 表2 Zone表样本 lZone0 个表是重要的系统信息区域,一旦遭到破坏整个文什 系统将会崩溃,系统通过FAT表对存储l夏动态分配 lNo11 来为DATA区提供了保护,但并没有提供对系统信 旧 息区域保护。本项目设计了NANDFLASH存储块管 I一理层,增加了配置表和Zone表,对所有存储块进行 f3 :
1wLo邸lkInZone 物理块 10 ll 12 {3 wLogBlkInZone 物理块 0 512 513 514 515 503 5。4505
501
507:
502 503 504 505
:1014J01510161017动态管理,从而实现对整个文件系统所有区域的保 护。文件系统在格式化时会对Flash进行扫描,同时 根据坏块信息建立记录逻辑和物理地址映射关系的
507 508 509 510 Zone表,并将配置表(512字节)和Zone表写入FIash 相应地址。配置表和Zone表的内容为只读。 4,1配置表的设计说明 替换块 替换块 替换块 替换块 替换块 替换块
51I甜l 512 替换块 替换块 替换块 替换块 替换块 替换块
10181019102010211022 1023 配置表记录了存储卡七FLASH芯片的配置Zone0中的物理0/1/2/4块为坏块,其物理地址不出现 信 在Zone表中,6块作为替换块,Zone0的可用逻辑块
息,文件系统初始化时需从中读取Flash相关信息及 参数。文件系统格式化时先对Rash的第0块~7块进 行扫描,配置表写入到Flash的第0块。块中第一个 数wZone0LogBlkMax一502;Zonel中无坏块,6块 为替换块,可用逻辑块数wZonelLogBlklⅥax=506。 好块,长度为512字节,表头四字节为0x5A5A5A5A。 配置表(CnTb0内部结构详细定义如表1所示。
4
3逻辑地址到物理地址的转换 文件存储管理层访问flash物理层时都要通过存
4 2 Zone表设计说明 储块管理层进行逻辑地址到物理地址的转换。输入参 数是dwLbA(逻辑地址)和wLBAlcn(:逻辑扇区长度), 根据Zone表和Flash相关参数计算…相应的物理Zone表是记录逻辑地址和物理地址映射关系的。 文件系统在格式化时会对Flash进行扫描,同时根据 坏块信息建立记录逻辑和物理地址映射关系的Zone 地 表。每512个物理块对应一个Zone表(长度为lkB), 址,即dwRowAddr(物理页地址)和wColAddr(物理表中每一项用2字节表示逻辑块对应的物理块块号, 列 坏块的物理块号不出现,每个Zone表中可用的逻辑 地址)。dwRowAddr和wColAddr才是NAND FLASH
相关推荐: