#include "lfs.h"
lfs_t lfs;
lfs_file_t file;
// 配置底层读写函数
int block_device_read(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, void *buffer, lfs_size_t size)
{
return flash_read(block * c->block_size + off, buffer, size);
}
int block_device_prog(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, const void *buffer, lfs_size_t size)
{
return flash_write(block * c->block_size + off, buffer, size);
}
int block_device_erase(const struct lfs_config *c, lfs_block_t block)
{
return flash_erase_block(block);
}
int block_device_sync(const struct lfs_config *c)
{
return 0;
}
const struct lfs_config cfg = {
.read = block_device_read,
.prog = block_device_prog,
.erase = block_device_erase,
.sync = block_device_sync,
.read_size = 16,
.prog_size = 16,
.block_size = 4096,
.block_count = 256,
.cache_size = 16,
.lookahead_size = 16,
};
// 挂载
int err = lfs_mount(&lfs, &cfg);
// 文件操作
lfs_file_open(&lfs, &file, "test.txt", LFS_O_WRONLY | LFS_O_CREAT);
lfs_file_write(&lfs, &file, "Hello", 5);
lfs_file_close(&lfs, &file);
// 读取
lfs_file_open(&lfs, &file, "test.txt", LFS_O_RDONLY);
char buf[32];
lfs_size_t size = lfs_file_read(&lfs, &file, buf, sizeof(buf));
lfs_file_close(&lfs, &file);
// 卸载
lfs_unmount(&lfs);