您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于CC/CCS的Flash文件系统设计

时间:2007-1-20栏目:电子通信论文

扇区大小是2KB,也就是2048B(1K=1024)。用常数定义,#define FileUnit 2048。

3.2 Flash文件系统的层次性

与ANSI C标准相对应,我们将Flash文件系统

分为3个层次。第一层次,API层。API层是文件系统与用户应用程序之间的接口,包含一个与文件函数相关的函数库,如FS_FOpen、FS_Fwrite等,也相当于High Level层。第二层次,文件系统层,即Low Level层。该层处理文件是否存在,打开,关闭和为文件分配相应的缓存等。该层调用底层驱动。第三层是Device Level层,就是设备驱动层。Flash的实际读写操作就是在该层进行的,特定的Flash存储器对应特定的读写程序。

3.3 Flash文件信息表的设计

该表保存Flash中已有文件的属性,Flash大小和文件的属性等都在该表中反映出来。该表与Flash中的内容保持同步更新,即一个文件最小块更新完毕时,写入Flash中。

Flash的空间分配:

①Flash空间,以簇为单位,读和写都是一簇,即一个扇区单位;

②0簇给文件分配表,不被应用文件占用;

③每次文件系统初始化时,把Flash内0簇的内容读取到内存中,保存在数组FAT16[]中。

常量定义

#define CLUSTER_BLOCK_SIZE 2048 //每一簇的字节数

#define NUMBER_OF_CLUSTER_IN_FAT16 25

//在文件分配表中,一共有多少个簇

#define NUMBER_OF_FILE_BUF 10

//一共有几个文件缓冲区

#define MODE_OPEN_FILE_READ 0x01 //读取(文件打开模式)

#define MODE_OPEN_FILE_WRITE 0x02 //写入(文件打开模式)

#define MAX_SIZE_OF_FIEL 2048 //文件的最大尺寸

文件结构体:

typedef struct{

unsigned int IsLock:1;//文件是否被上锁,=0没打开;=1已被打开。此标志只在文件的第一簇使用

unsigned int status:7;//簇的状态,=0,此簇为色,没使用;=1,此簇是第一簇;=2,此簇不是第一簇

char FileName[8];//文件名,在第一簇有效

char FileExName[3]; //文件扩展名,在第一簇有效

unsigned int SizeOfFile;//文件的字节数,在第一簇有效

unsigned int NextCluster;//下一簇的簇号。当为0xffffffff时,说明这是当前文件的最后一簇

}FlashFAT;

文件句柄结构体:

typedef struct{

unsigned int Buffer[CLUSTER_BLOCK_SIZE];//文件缓冲区

unsigned int fileblock;//文件当前簇的位置

unsigned int filemode;//打开支持的模式

unsigned int filebufnum;

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页