earlephilhower / mklittlefs

Utility for creating LittleFS images for upload on the ESP8266 and RP2040 Pico
MIT License
159 stars 54 forks source link

mklittlefs

Tool to build and unpack littlefs images. Based off of mkspiffs by Ivan Grokhotkov.

Usage


   mklittlefs  {-c <pack_dir>|-u <dest_dir>|-l|-i} [-d <0-5>] [-b <number>]
               [-p <number>] [-s <number>] [--] [--version] [-h]
               <image_file>

Where: 

   -c <pack_dir>,  --create <pack_dir>
     (OR required)  create littlefs image from a directory
         -- OR --
   -u <dest_dir>,  --unpack <dest_dir>
     (OR required)  unpack littlefs image to a directory
         -- OR --
   -l,  --list
     (OR required)  list files in littlefs image
         -- OR --

   -d <0-5>,  --debug <0-5>
     Debug level. 0 means no debug output.

   -b <number>,  --block <number>
     fs block size, in bytes

   -p <number>,  --page <number>
     fs page size, in bytes

   -s <number>,  --size <number>
     fs image size, in bytes

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   <image_file>
     (required)  LittleFS image file

Build

You need gcc (≥4.8) or clang(≥600.0.57), and make. On Windows, use MinGW.

Run:

$ git submodule update --init
$ make dist

LittleFS configuration

Some LittleFS options which are set at mklittlefs build time affect the format of the generated filesystem image. Make sure such options are set to the same values when builing mklittlefs and when building the application which uses LittleFS.

These options include:

To see the default values of these options, check MAkefile file in this repository.

To override some options at build time, pass extra CPPFLAGS to make. You can also set BUILD_CONFIG_NAME variable to distinguish the built binary:

$ make clean
$ make dist CPPFLAGS="-DLFS_NAME_MAX=128" BUILD_CONFIG_NAME=-custom

To check which options were set when building mklittlefs, use --version command:

$ mklittlefs --version

./mklittlefs  version: 0.2.3-6-g9a0e072

Cross-compiling

To build for all cross compiled targets, run

docker run --user $(id -u):$(id -g) --rm -v $(pwd):/workdir earlephilhower/gcc-cross bash -c "cd /workdir; bash build-cross.sh"

License

MIT

To do