littlefs系列:文件系统的format

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

在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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值