在flash上格式化一个文件系统
int lfs_format(lfs_t *lfs, const struct lfs_config *cfg) {
int err = 0;
{
/* 初始化lfs结构 */
err = lfs_init(lfs, cfg);
if (err) {
LFS_TRACE("lfs_format -> %d", err);
return err;
}
// create free lookahead
/* 创建lookahead buffer,用于分配free block */
memset(lfs->free.buffer, 0, lfs->cfg->lookahead_size);
lfs->free.off = 0;
/* lookahead buffer是bitmap,因此此处会*8,并和littlefs包含的block count比较 */
lfs->free.size = lfs_min(8*lfs->cfg->lookahead_size,
lfs->cfg->block_count);
lfs->free.i = 0;
/* 对ack赋值为block count,表示所有的block都可以分配 */
lfs_alloc_ack(lfs);
// create root dir
lfs_mdir_t root;
/* 分配根目录,即两个metadata pair */
err = lfs_dir_alloc(lfs, &root);
if (err) {
goto cleanup;
}
// write one superblock
lf

本文详细介绍了在Flash存储介质上格式化LittleFS文件系统的具体步骤。从初始化LittleFS结构开始,通过创建lookahead buffer、分配根目录、写入超级块、读取验证到最终的压缩提交,全程深入解析了LittleFS格式化的实现机制。
2349

被折叠的 条评论
为什么被折叠?



