基于嵌入式視頻存儲的專用文件系統設計
每個錄像文件至少需要使用一個索引塊,每個索引塊包含N個索引信息,一個數據塊對應一個索引信息。每個索引信息描述下一個數據塊的物理偏離和時間偏移,每個索引塊描述本索引塊所描述第一個數據塊的物理地址和時間偏移。典型的數據結構如下:
typedef struct {
UInt8 TimeOffset;/*與上一個數據塊的時間偏移*/
UInt8 DBNOffset;/*與上一個數據塊的物理偏移*/
} IndexInfo; /*索引信息*/
typedef struct {
UInt16 BeginDBN;/*本索引塊的起始數據塊地址*/
UInt16 TimeOffset;/*本索引塊與上一個索引塊的時間偏移*/
IndexInfo IndexInfo[N];
} IndexBlockInfo; /*索引塊信息,包含N個索引信息*/
2.5 數據區
數據區是指整個磁盤空間除了用于以上文件系統開銷外的所有空間,重新劃分為若干個數據塊,數據塊的大小可以自由設置。數據塊是指錄像數據保存的最小單元,一般以32~512 KB之間為宜,每個數據塊的頭部保留幾個字節用于保存本數據塊的時間戳和相關數據塊的地址偏移。數據塊的結構如圖2所示。
圖2 數據塊結構示意圖
文件系統在使用前需要獲取磁盤的容量和可使用扇區的大小,并定義一個最大文件數。由于文件信息和索引信息需要占用一定的磁盤空間,并且與最大文件數密切相關,在實際使用時定義一個最小文件的大小,并通過磁盤容量得到一個固定的最大文件數,這樣文件信息和索引信息所占用的磁盤空間在整個磁盤中只占很小的比例。
3 系統實現
3.1 數據的存儲
數據的存儲過程比較簡單,創建文件的時候系統自動分配一個唯一的文件號,并通過文件號進行計算得到文件信息和索引信息對應的磁盤地址。當有足夠一個數據塊大小的數據時打包并保存到當前可以使用的數據塊,同時更新文件信息和索引信息。
圖3 數據存儲流程
DIY機械鍵盤相關社區:機械鍵盤DIY
評論