3 The main goal of the lwext4 project is to provide ext2/3/4 filesystem
\r
4 library for microcontrolers with SD/MMC card support. Ext2/3/4, in my
\r
5 opinion is one of the best filesystem for SD/MMC.
\r
7 kostka.grzegorz@gmail.com
\r
9 ==Minimum memory requirements==
\r
19 ==ext2/3/4 vs FAT32==
\r
21 * fseek operation on big file in FAT32 is IO heavy
\r
22 * ext2/3/4 HTREE directories operations are faster than FAT32
\r
23 * ext4 extents makes truncate/remove opertion really fast
\r
24 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
\r
27 * FAT32 has smaller footprint
\r
31 A lot of the implementation of lwext4 was taken from HelenOS:
\r
34 Some of ideas and features are based on FreeBSD and Linux implementations.
\r
36 ==Supported ext2/3/4 fs features==
\r
38 ;FEATURE_INCOMPAT (unable to mount with unsupported feature):
\r
51 ;FEATURE_COMPAT (able to mount with unsupported feature):
\r
59 ;FEATURE_RO (able to mount in read only mode):
\r
68 ==Supported filetypes:==
\r
78 - block_size: 1KB, 2KB, 4KB ... 64KB
\r
79 - little/big endian architecture support
\r
84 - blockdev - block devices set, supported blockdevs
\r
85 -- filedev - file based block device
\r
86 -- io_raw - wiodows IO block device
\r
88 - demos - demo directory sources
\r
89 -- generic - generic demo app, used for development and and debbuging purpose
\r
91 - lwext4 - internals of the lwext4 library
\r
93 - toolchain - specific toolchain cmake files
\r
95 - ext4.h - lwext4 client library header
\r
96 - CMakeLists.txt - CMake config file
\r
97 - ext_images.7z - ext2/3/4 100MB images
\r
98 - fs_test.mk - automatic tests definition
\r
99 - Makefile - helper makefile to call cmake
\r
100 - readme.mediawiki - yes, you are here ;)
\r
102 ==Compile: Windows==
\r
104 * CMake: http://www.cmake.org/cmake/resources/software.html
\r
105 * MinGw: http://www.mingw.org/
\r
106 * GnuWin: http://gnuwin32.sourceforge.net/
\r
108 ;Create CMake files:
\r
111 ;Remove CMake files:
\r
121 - CMake: http://www.cmake.org/cmake/resources/software.html
\r
123 ;Create CMake files:
\r
126 ;Remove CMake files:
\r
133 ==Generic demo application==
\r
136 - load ext2/3/4 images
\r
137 - load linux block device with ext2/3/4 part
\r
138 - load windows volume with ext2/3/4 filesystem
\r
139 - directory speed test
\r
140 - file write/read speed test
\r
143 Windows/Linux fileimages:
\r
145 fileimage_demo --in ext2
\r
149 fileimage_demo --in I: --wpart
\r
151 Linux block devices:
\r
153 fileimage_demo --in /dev/your_block_device
\r
156 --i - input file (default = ext2)
\r
157 --rws - single R/W size (default = 1024 * 1024)
\r
158 --rwc - R/W count (default = 10)
\r
159 --cache - 0 static, 1 dynamic (default = 1)
\r
160 --dirs - directory test count (default = 0)
\r
161 --clean - clean up after test
\r
162 --bstat - block device stats
\r
163 --sbstat - superblock stats
\r
164 --wpart - windows partition mode
\r
166 ==Client-server automatic test suite==
\r
185 Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded
\r
186 Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php
\r
188 Build bf518 library:
\r
193 Build cortex-m3 library:
\r
198 Build cortex-m4 library:
\r
204 STM32F429-DISCO USB flash drive Demo
\r
206 Build STM32F429 Demo:
\r
213 TOOLCHAIN: arm-none-eabi-gcc
\r
216 text data bss dec hex filename
\r
217 5728 0 0 5728 1660 ext4.c.obj (ex liblwext4.a)
\r
218 2264 0 0 2264 8d8 ext4_balloc.c.obj (ex liblwext4.a)
\r
219 1324 0 0 1324 52c ext4_bcache.c.obj (ex liblwext4.a)
\r
220 936 0 0 936 3a8 ext4_bitmap.c.obj (ex liblwext4.a)
\r
221 2016 0 0 2016 7e0 ext4_blockdev.c.obj (ex liblwext4.a)
\r
222 624 0 0 624 270 ext4_block_group.c.obj (ex liblwext4.a)
\r
223 24 0 4 28 1c ext4_debug.c.obj (ex liblwext4.a)
\r
224 2264 0 0 2264 8d8 ext4_dir.c.obj (ex liblwext4.a)
\r
225 3204 0 0 3204 c84 ext4_dir_idx.c.obj (ex liblwext4.a)
\r
226 3104 0 0 3104 c20 ext4_extent.c.obj (ex liblwext4.a)
\r
227 7360 0 0 7360 1cc0 ext4_fs.c.obj (ex liblwext4.a)
\r
228 2496 0 0 2496 9c0 ext4_hash.c.obj (ex liblwext4.a)
\r
229 684 0 0 684 2ac ext4_ialloc.c.obj (ex liblwext4.a)
\r
230 652 0 0 652 28c ext4_inode.c.obj (ex liblwext4.a)
\r
231 352 0 0 352 160 ext4_super.c.obj (ex liblwext4.a)
\r