3 The main goal of the lwext4 project is to provide ext2/3/4 filesystem for microcontrollers. It may be an interesting alternative for traditional MCU filesystem libraries (mostly based on FAT32).
5 Lwext4 may be used with SD/MMC card, USB flash drive or other block based memory device. However it is not good for flash memory–based storage devices.
7 Code is also available on github:
8 https://github.com/gkostka/lwext4
10 Feel free to contact me:
11 kostka.grzegorz@gmail.com
13 ==Minimum memory requirements==
14 * .text: 20KB - 30KB (dependent of feature set chosen)
21 * fast fseek on big file (in FAT32 fseek equals many IO operations)
22 * ext2/3/4 HTREE directory operations (like find entry) are faster
23 * fast extent big file allocation (truncate/remove)
24 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
27 * FAT32 has smaller footprint
31 The most of the source code of lwext4 was taken from HelenOS:
33 Some features are based on FreeBSD and Linux implementations.
35 ==Supported ext2/3/4 fs features==
36 ;Features incompatible (unable to mount when NOT supported):
39 * recover: no (could be ignored)
44 * mmp: no (could be ignored)
51 ;Features compatible (mount when NOT supported is possible):
58 ;Features read-only (mount in RO mode when NOT supported):
61 * btree_dir: yes (obsolete)
70 ==Supported filetypes:==
80 - block_size: 1KB, 2KB, 4KB ... 64KB
81 - little/big endian architecture support
84 * blockdev - block devices set, supported blockdev
85 * demos - demo directory sources
86 * lwext4 - internals of the lwext4 library
87 * toolchain - specific toolchain cmake files
88 * CMakeLists.txt - CMake config file
89 * ext_images.7z - compressed ext2/3/4 100MB images
90 * fs_test.mk - automatic tests definitions
91 * Makefile - helper makefile to trigger cmake, tests
92 * readme.mediawiki - readme file
96 * CMake: http://www.cmake.org/cmake/resources/software.html
97 * MinGw: http://www.mingw.org/
98 * GnuWin: http://gnuwin32.sourceforge.net/
113 * CMake: http://www.cmake.org/cmake/resources/software.html
125 ==Generic demo application==
127 * load ext2/3/4 images
128 * load linux block device with ext2/3/4 part
129 * load windows volume with ext2/3/4 filesystem
130 * directory speed test
131 * file write/read speed test
134 Windows/Linux fileimages:
140 generic --in I: --wpart
144 generic --in /dev/your_block_device
147 --i - input file (default = ext2)
148 --rws - single R/W size (default = 1024 * 1024)
149 --rwc - R/W count (default = 10)
150 --cache - 0 static, 1 dynamic (default = 1)
151 --dirs - directory test count (default = 0)
152 --clean - clean up after test
153 --bstat - block device stats
154 --sbstat - superblock stats
155 --wpart - windows partition mode
157 ==Build and run automatic tests==
158 Build and run automatic tests
159 Build automatic test tools:
163 Uncompress ext/2/3/4 images:
165 Run server app for predefined images:
172 ==Cross-Compile standalone library==
178 Build avrxmega7 library:
183 Build cortex-m0 library:
188 Build cortex-m3 library:
193 Build cortex-m4 library:
199 * STM32F429-DISCO USB flash drive Demo
200 * ChibiOS demo applications
202 Build STM32F429 Demo: