littlefs系列 重要的資料結構

2021-10-03 21:56:11 字數 2184 閱讀 8526

1、檔案型別

// file types

enum lfs_type ;

2、檔案開啟時的標誌

// file open flags

enum lfs_open_flags ;

3、檔案seek時的標誌

// file seek flags

enum lfs_whence_flags ;

4、lfs的配置引數

// configuration provided during initialization of the littlefs

struct lfs_config ;

5、檔案資訊

// file info structure

struct lfs_info ;

6、使用者屬性

struct lfs_attr ;
7、檔案open時的配置

struct lfs_file_config ;
8、lfs_cache結構

typedef struct lfs_cache  lfs_cache_t;
9、lfs_mdir結構,代表metadata pair,dir本身所在的block

typedef struct lfs_mdir  lfs_mdir_t;
10、lfs目錄結構

// littlefs directory type

typedef struct lfs_dir lfs_dir_t;

11、lfs檔案型別

// littlefs file type

typedef struct lfs_file ctz; // 指向大檔案的ctz skip-list。對於小檔案則直接inline了,無需ctz skip-list

uint32_t flags; // lfs_open_flags中的值

lfs_off_t pos; // 檔案訪問時的偏移

lfs_block_t block; // file當前的block

lfs_off_t off; // 在block內的offset

lfs_cache_t cache; // 檔案訪問時的cache

const struct lfs_file_config *cfg; // 檔案open時的配置引數,包含乙個buffer以及使用者屬性

} lfs_file_t;

12、lfs superblock結構

typedef struct lfs_superblock  lfs_superblock_t;
13、lfs檔案系統型別結構

// the littlefs filesystem type

typedef struct lfs *mlist; // metadata pair list

uint32_t seed; // block alloctor的隨機數生成的seed

struct lfs_gstate gstate, gpending, gdelta; // 用於目錄操作sync的global state,

struct lfs_free free; // lookahead buffer,用於分配free block

const struct lfs_config *cfg; // 檔案系統的配置引數

lfs_size_t name_max; // 檔名的最大長度,和superblock中的name_max值相同

lfs_size_t file_max; // 檔案的最大長度,和superblock中的file_max值相同

lfs_size_t attr_max; // 使用者屬性的最大長度,和superblock中的attr_max值相同

} lfs_t;

littlefs系列 介紹

1 littlefs主要用在微控制器和flash上,是一種嵌入式檔案系統。主要有3個特點 1 掉電恢復 在寫入時即使復位或者掉電也可以恢復到上乙個正確的狀態。2 擦寫均衡 有效延長flash的使用壽命 3 有限的ram rom 節省rom和ram空間 2 已有的檔案系統 1 非掉電恢復,基於bloc...

資料的重要性

對於程式設計師來說,高手 和 菜鳥 之間的區別實際上只有兩個因素 一是從事程式設計時間的長短不同,使經驗的多少有所區別 第二個因素就是手頭掌握資料的多少了,因為很多問題並不是靠自己鑽研可以解決的,必須靠資料,試想在寫 dos匯程式設計序時如果沒有中斷手冊,可以自己鑽研出來嗎?實際上,大部分 菜鳥 向...

重要資料備份策略

工具 mklink。前乙個引數是鏈結,後乙個是真正檔案所在位置。mklink d h j link target d 建立目錄符號鏈結。預設為檔案 符號鏈結。h 建立硬鏈結,而不是符號鏈結。j 建立目錄聯接。link 指定新的符號鏈結名稱。target 指定新鏈結引用的路徑 相對或絕對 1 mysq...