3 The main goal of the lwext4 project is to provide ext2/3/4 filesystem
4 library for microcontrolers with SD/MMC card support. Ext2/3/4, in my
5 opinion is one of the best filesystem for SD/MMC.
7 kostka.grzegorz@gmail.com
9 ==Minimum memory requirements==
21 * fseek operation on big file in FAT32 is IO heavy
22 * ext2/3/4 HTREE directories operations are faster than FAT32
23 * ext4 extents makes truncate/remove opertion really fast
24 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
27 * FAT32 has smaller footprint
31 A lot of the implementation of lwext4 was taken from HelenOS:
34 Some of ideas and features are based on FreeBSD and Linux implementations.
36 ==Supported ext2/3/4 fs features==
39 ;FEATURE_INCOMPAT (unable to mount with unsupported feature):
42 recover: no (could be ignored)
47 mmp: no (could be ignored)
55 ;FEATURE_COMPAT (able to mount with unsupported feature):
63 ;FEATURE_RO (able to mount in read only mode):
66 btree_dir: yes (obsolete)
76 ==Supported filetypes:==
86 - block_size: 1KB, 2KB, 4KB ... 64KB
87 - little/big endian architecture support
92 - blockdev - block devices set, supported blockdevs
93 -- filedev - file based block device
94 -- io_raw - wiodows IO block device
96 - demos - demo directory sources
97 -- generic - generic demo app, used for development and and debbuging purpose
99 - lwext4 - internals of the lwext4 library
101 - toolchain - specific toolchain cmake files
103 - ext4.h - lwext4 client library header
104 - CMakeLists.txt - CMake config file
105 - ext_images.7z - ext2/3/4 100MB images
106 - fs_test.mk - automatic tests definition
107 - Makefile - helper makefile to call cmake
108 - readme.mediawiki - yes, you are here ;)
112 * CMake: http://www.cmake.org/cmake/resources/software.html
113 * MinGw: http://www.mingw.org/
114 * GnuWin: http://gnuwin32.sourceforge.net/
129 - CMake: http://www.cmake.org/cmake/resources/software.html
141 ==Generic demo application==
144 - load ext2/3/4 images
145 - load linux block device with ext2/3/4 part
146 - load windows volume with ext2/3/4 filesystem
147 - directory speed test
148 - file write/read speed test
151 Windows/Linux fileimages:
157 generic --in I: --wpart
161 generic --in /dev/your_block_device
164 --i - input file (default = ext2)
165 --rws - single R/W size (default = 1024 * 1024)
166 --rwc - R/W count (default = 10)
167 --cache - 0 static, 1 dynamic (default = 1)
168 --dirs - directory test count (default = 0)
169 --clean - clean up after test
170 --bstat - block device stats
171 --sbstat - superblock stats
172 --wpart - windows partition mode
174 ==Client-server automatic test suite==
193 Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded
194 Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php
201 Build avrxmega7 library:
206 Build cortex-m0 library:
211 Build cortex-m3 library:
216 Build cortex-m4 library:
222 STM32F429-DISCO USB flash drive Demo
224 Build STM32F429 Demo:
231 TOOLCHAIN: arm-none-eabi-gcc
234 text data bss dec hex filename
235 5728 0 0 5728 1660 ext4.c.obj (ex liblwext4.a)
236 2264 0 0 2264 8d8 ext4_balloc.c.obj (ex liblwext4.a)
237 1324 0 0 1324 52c ext4_bcache.c.obj (ex liblwext4.a)
238 936 0 0 936 3a8 ext4_bitmap.c.obj (ex liblwext4.a)
239 2016 0 0 2016 7e0 ext4_blockdev.c.obj (ex liblwext4.a)
240 624 0 0 624 270 ext4_block_group.c.obj (ex liblwext4.a)
241 24 0 4 28 1c ext4_debug.c.obj (ex liblwext4.a)
242 2264 0 0 2264 8d8 ext4_dir.c.obj (ex liblwext4.a)
243 3204 0 0 3204 c84 ext4_dir_idx.c.obj (ex liblwext4.a)
244 3104 0 0 3104 c20 ext4_extent.c.obj (ex liblwext4.a)
245 7360 0 0 7360 1cc0 ext4_fs.c.obj (ex liblwext4.a)
246 2496 0 0 2496 9c0 ext4_hash.c.obj (ex liblwext4.a)
247 684 0 0 684 2ac ext4_ialloc.c.obj (ex liblwext4.a)
248 652 0 0 652 28c ext4_inode.c.obj (ex liblwext4.a)
249 352 0 0 352 160 ext4_super.c.obj (ex liblwext4.a)