基于嵌入式视频存储的专用文件系统设计
2.1 磁盘信息区
磁盘信息区的位置固定,用于保存当前磁盘信息和文件系统基本信息,如记录每个区域的具体位置和大小、信息区的使用情况、最后数据块位置等。下面为典型的磁盘信息结构:
typedef STruct {
UInt32 Formatted;/*格式化标志*/
UInt32 DBN_Num;/*总数据块数*/
UInt32 DBN_Size;/*数据块的大小*/
UInt32 DBN_Begin;/*当前可用数据块开始地址*/
UInt32 CurrentFAT;/*当前所用的分区*/
UInt32 OtherInfoBlockAddr; /*保留信息区开始扇区*/
UInt32 OtherInfoBlockSize;/*保留信息区大小*/
UInt32 FileInfoBlockAddr[2][MAX_CHANNEL]; /*文件信息块开始扇区*/
UInt32 FileInfoBlockSize;/*文件信息区大小*/
UInt32 IndexInfoBlockAddr[2][ MAX_CHANNEL];/*索引信息块开始扇区*/
UInt32 IndexInfoBlockSize;/*索引信息区大小*/
} DiskInfo;
2.2 保留信息区
保留信息区用于保存其他系统信息,如操作日志信息、系统设置信息等,此区域大小可自由设定。
2.3 文件信息区
文件信息区用于保存录像文件的文件信息,如录像开始和结束时间,第一个数据块和最后一个数据块的位置,索引信息的位置和其他文件信息。每个文件的数据结构和大小固定。通过文件序号就可以准确定位文件信息的具体位置。
文件信息区分两个部分,分别为分区一和分区二,用于描述覆盖前的文件信息和覆盖后的文件信息。每个分区根据最大文件数按录像路数顺序分配存储空间。
每个文件信息包含以下信息:文件开始时间和结束时间,文件开始索引块地址和结束索引块地址,文件开始数据块地址和结束数据块地址等。下面为典型的文件信息结构:
typedef struct {
UInt32 FileID;/*文件序号*/
time_t FileStartTime;/*录像开始时间*/
time_t FileEndTime;/*录像结束时间*/
UInt32 FileStartDBN;/*文件开始DBN*/
UInt32 FileEndDBN;/*文件结束DBN*/
IndexInfoAddr IndexInfoStart;/*索引信息开始地址*/
IndexInfoAddr IndexInfoEnd;/*索引信息结束地址*/
} FileInfo;
2.4 索引信息区
索引信息区用于保存录像文件所使用数据块的索引信息。索引信息也分为两部分,分别为分区一和分区二,用于描述覆盖前和覆盖后的索引信息。每个分区根据最大文件数按录像路数顺序分配存储空间。
DIY机械键盘相关社区:机械键盘DIY
评论