Loading...
Searching...
No Matches
littlefs2_fs.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017 OTA keys S.A.
3 * Copyright (C) 2020 Inria
4 *
5 * This file is subject to the terms and conditions of the GNU Lesser
6 * General Public License v2.1. See the file LICENSE in the top level
7 * directory for more details.
8 */
9
10#pragma once
11
25
26#include <stdalign.h>
27
28#include "vfs.h"
29#include "lfs.h"
30#include "mtd.h"
31#include "mutex.h"
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
42#ifndef CONFIG_LITTLEFS2_LOOKAHEAD_SIZE
44#define CONFIG_LITTLEFS2_LOOKAHEAD_SIZE (16)
45#endif
46
47#ifndef CONFIG_LITTLEFS2_FILE_BUFFER_SIZE
51#define CONFIG_LITTLEFS2_FILE_BUFFER_SIZE (0)
52#endif
53
54#ifndef CONFIG_LITTLEFS2_READ_BUFFER_SIZE
58#define CONFIG_LITTLEFS2_READ_BUFFER_SIZE (0)
59#endif
60
61#ifndef CONFIG_LITTLEFS2_PROG_BUFFER_SIZE
64#define CONFIG_LITTLEFS2_PROG_BUFFER_SIZE (0)
65#endif
66
67#ifndef CONFIG_LITTLEFS2_CACHE_PAGES
70#define CONFIG_LITTLEFS2_CACHE_PAGES (1)
71#endif
72
73#ifndef CONFIG_LITTLEFS2_BLOCK_CYCLES
76#define CONFIG_LITTLEFS2_BLOCK_CYCLES (512)
77#endif
78
79#ifndef CONFIG_LITTLEFS2_MIN_BLOCK_SIZE_EXP
83#define CONFIG_LITTLEFS2_MIN_BLOCK_SIZE_EXP (-1)
84#endif
86
90typedef struct {
91 lfs_t fs;
92 struct lfs_config config;
98 uint32_t base_addr;
99#if CONFIG_LITTLEFS2_FILE_BUFFER_SIZE || DOXYGEN
102 alignas(uint32_t) uint8_t file_buf[CONFIG_LITTLEFS2_FILE_BUFFER_SIZE];
103#endif
104#if CONFIG_LITTLEFS2_READ_BUFFER_SIZE || DOXYGEN
107 alignas(uint32_t) uint8_t read_buf[CONFIG_LITTLEFS2_READ_BUFFER_SIZE];
108#endif
109#if CONFIG_LITTLEFS2_PROG_BUFFER_SIZE || DOXYGEN
112 alignas(uint32_t) uint8_t prog_buf[CONFIG_LITTLEFS2_PROG_BUFFER_SIZE];
113#endif
118
121
122#ifdef __cplusplus
123}
124#endif
125
#define CONFIG_LITTLEFS2_READ_BUFFER_SIZE
Read buffer size, if 0, dynamic allocation is used.
#define CONFIG_LITTLEFS2_PROG_BUFFER_SIZE
Prog buffer size, if 0, dynamic allocation is used.
#define CONFIG_LITTLEFS2_LOOKAHEAD_SIZE
Default lookahead size.
#define CONFIG_LITTLEFS2_FILE_BUFFER_SIZE
File buffer size, if 0, dynamic allocation is used.
const vfs_file_system_t littlefs2_file_system
The littlefs vfs driver.
Mutex for thread synchronization.
littlefs descriptor for vfs integration
uint8_t lookahead_buf[CONFIG_LITTLEFS2_LOOKAHEAD_SIZE]
lookahead buffer to use internally
mtd_dev_t * dev
mtd device to use
uint16_t sectors_per_block
number of sectors per block
struct lfs_config config
littlefs config
lfs_t fs
littlefs descriptor
uint8_t read_buf[CONFIG_LITTLEFS2_READ_BUFFER_SIZE]
read buffer to use internally if CONFIG_LITTLEFS2_READ_BUFFER_SIZE is set
uint32_t base_addr
first block number to use, total number of block is defined in config.
uint8_t prog_buf[CONFIG_LITTLEFS2_PROG_BUFFER_SIZE]
prog buffer to use internally if CONFIG_LITTLEFS2_PROG_BUFFER_SIZE is set
mutex_t lock
mutex
uint8_t file_buf[CONFIG_LITTLEFS2_FILE_BUFFER_SIZE]
file buffer to use internally if CONFIG_LITTLEFS2_FILE_BUFFER_SIZE is set
MTD device descriptor.
Definition mtd.h:111
Mutex structure.
Definition mutex.h:39
A file system driver.
Definition vfs.h:389