基于嵌入式視頻存儲的專用文件系統設計
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
評論