littlefs File System Sample Application
Overview
This sample app demonstrates use of Zephyr’s file system API over littlefs, using file system with files that: * count the number of times the system has booted * holds binary pattern with properly incremented values in it
Other information about the file system is also displayed.
Requirements
Flash memory device
The partition labeled “storage” will be used for the file system; see Flash map. If that area does not already have a compatible littlefs file system its contents will be replaced by an empty file system. You will see diagnostics like this:
[00:00:00.010,192] <inf> littlefs: LittleFS version 2.0, disk version 2.0
[00:00:00.010,559] <err> littlefs: Corrupted dir pair at 0 1
[00:00:00.010,559] <wrn> littlefs: can't mount (LFS -84); formatting
The error and warning are normal for a new file system.
After the file system is mounted you’ll also see:
[00:00:00.182,434] <inf> littlefs: filesystem mounted!
[00:00:00.867,034] <err> fs: failed get file or dir stat (-2)
This error is also normal for Zephyr not finding a file (the boot count, in this case).
Block device (e.g. SD card)
One needs to prepare the SD card with littlefs file system on the host machine with the lfs program.
sudo chmod a+rw /dev/sda
lfs -d -s -f --read_size=512 --prog_size=512 --block_size=512 --cache_size=512 --lookahead_size=8192 --format /dev/sda
lfs -d -s -f --read_size=512 --prog_size=512 --block_size=512 --cache_size=512 --lookahead_size=8192 /dev/sda ./mnt_littlefs
cd ./mnt_littlefs
echo -en '\x01' > foo.txt
cd -
fusermount -u ./mnt_littlefs
Building and Running
Flash memory device
This example should work on any board that provides a “storage” partition. Two tested board targets are described below.
You can set CONFIG_APP_WIPE_STORAGE
to force the file system to be
recreated.
Block device (e.g. SD card)
This example has been devised and initially tested on Nucleo H743ZI board. It can be also run on any other board with SD card connected to it.
To build the test:
west build -b nucleo_h743zi samples/subsys/fs/littlefs -- -DCONF_FILE=prj_blk.conf
west flash
One can also set CONFIG_SDMMC_VOLUME_NAME
to provide the mount point name
for littlefs file system block device.
NRF52840 Development Kit
On this device the file system will be placed in the SOC flash.
west build -b nrf52840dk_nrf52840 samples/subsys/fs/littlefs
Particle Xenon
On this device the file system will be placed on the external SPI NOR flash memory.
west build -b particle_xenon samples/subsys/fs/littlefs