mirror of https://github.com/gkostka/lwext4.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.0 KiB
6.0 KiB
==About==
The main goal of the lwext4 project is to provide ext2/3/4 filesystem
library for microcontrolers with SD/MMC card support. Ext2/3/4, in my
opinion is one of the best filesystem for SD/MMC.
kostka.grzegorz@gmail.com
==Minimum memory requirements==
=====PROGRAM:=====
- 20KB
=====RAM:=====
- 8KB
=====STACK:=====
- 2KB
==ext2/3/4 vs FAT32==
;ext2/3/4 > FAT32
* fseek operation on big file in FAT32 is IO heavy
* ext2/3/4 HTREE directories operations are faster than FAT32
* ext4 extents makes truncate/remove opertion really fast
* more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
;ext2/3/4 < FAT32
* FAT32 has smaller footprint
==Credits==
A lot of the implementation of lwext4 was taken from HelenOS:
http://helenos.org/
Some of ideas and features are based on FreeBSD and Linux implementations.
==Supported ext2/3/4 fs features==
;FEATURE_INCOMPAT (unable to mount with unsupported feature):
COMPRESSION: no
FILETYPE: yes
RECOVER: no
JOURNAL_DEV: no
META_BG: no
EXTENTS: yes
64BIT: yes
MMP: no
FLEX_BG: no
EA_INODE: no
DIRDATA: no
;FEATURE_COMPAT (able to mount with unsupported feature):
DIR_PREALLOC: no
IMAGIC_INODES: no
HAS_JOURNAL: no
EXT_ATTR: no
RESIZE_INODE: no
DIR_INDEX: yes
;FEATURE_RO (able to mount in read only mode):
SPARSE_SUPER: yes
LARGE_FILE: yes
BTREE_DIR: no
HUGE_FILE: yes
GDT_CSUM: yes
DIR_NLINK: yes
EXTRA_ISIZE: yes
==Supported filetypes:==
FIFO: no
CHARDEV: no
DIRECTORY: yes
BLOCKDEV: no
FILE: yes
SOFTLINK: no
SOCKET: no
==Other==
- block_size: 1KB, 2KB, 4KB ... 64KB
- little/big endian architecture support
==Project tree==
- blockdev - block devices set, supported blockdevs
-- filedev - file based block device
-- io_raw - wiodows IO block device
- demos - demo directory sources
-- generic - generic demo app, used for development and and debbuging purpose
- lwext4 - internals of the lwext4 library
- toolchain - specific toolchain cmake files
- ext4.h - lwext4 client library header
- CMakeLists.txt - CMake config file
- ext_images.7z - ext2/3/4 100MB images
- fs_test.mk - automatic tests definition
- Makefile - helper makefile to call cmake
- readme.mediawiki - yes, you are here ;)
==Compile: Windows==
;Tools needed:
* CMake: http://www.cmake.org/cmake/resources/software.html
* MinGw: http://www.mingw.org/
* GnuWin: http://gnuwin32.sourceforge.net/
;Create CMake files:
make
;Remove CMake files:
clean
;Build
cd build_generic
make
==Compile: Linux==
Tools needed:
- CMake: http://www.cmake.org/cmake/resources/software.html
;Create CMake files:
make
;Remove CMake files:
clean
;Build
cd build_generic
make
==Generic demo application==
Features:
- load ext2/3/4 images
- load linux block device with ext2/3/4 part
- load windows volume with ext2/3/4 filesystem
- directory speed test
- file write/read speed test
How to use:
Windows/Linux fileimages:
cd build_generic
fileimage_demo --in ext2
Windows volumes:
cd build_generic
fileimage_demo --in I: --wpart
Linux block devices:
cd build_generic
fileimage_demo --in /dev/your_block_device
Usage:
--i - input file (default = ext2)
--rws - single R/W size (default = 1024 * 1024)
--rwc - R/W count (default = 10)
--cache - 0 static, 1 dynamic (default = 1)
--dirs - directory test count (default = 0)
--clean - clean up after test
--bstat - block device stats
--sbstat - superblock stats
--wpart - windows partition mode
==Client-server automatic test suite==
Build:
make
cd build_generic
make
Unpack images:
make unpack_images
Run server:
make server_ext2
Run tests:
make all_tests
==Cross-Compile==
Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded
Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php
Build bf518 library:
make bf518
cd build_bf518
make lwext4
Build cortex-m3 library:
make cortex-m3
cd build_cortex-m3
make lwext4
Build cortex-m4 library:
make cortex-m4
cd build_cortex-m4
make lwext4
==Ports==
STM32F429-DISCO USB flash drive Demo
Build STM32F429 Demo:
make cortex-m4
cd build_cortex-m4
make all
==Footprint==
TOOLCHAIN: arm-none-eabi-gcc
OPT: Os
OUTPUT:
text data bss dec hex filename
5728 0 0 5728 1660 ext4.c.obj (ex liblwext4.a)
2264 0 0 2264 8d8 ext4_balloc.c.obj (ex liblwext4.a)
1324 0 0 1324 52c ext4_bcache.c.obj (ex liblwext4.a)
936 0 0 936 3a8 ext4_bitmap.c.obj (ex liblwext4.a)
2016 0 0 2016 7e0 ext4_blockdev.c.obj (ex liblwext4.a)
624 0 0 624 270 ext4_block_group.c.obj (ex liblwext4.a)
24 0 4 28 1c ext4_debug.c.obj (ex liblwext4.a)
2264 0 0 2264 8d8 ext4_dir.c.obj (ex liblwext4.a)
3204 0 0 3204 c84 ext4_dir_idx.c.obj (ex liblwext4.a)
3104 0 0 3104 c20 ext4_extent.c.obj (ex liblwext4.a)
7360 0 0 7360 1cc0 ext4_fs.c.obj (ex liblwext4.a)
2496 0 0 2496 9c0 ext4_hash.c.obj (ex liblwext4.a)
684 0 0 684 2ac ext4_ialloc.c.obj (ex liblwext4.a)
652 0 0 652 28c ext4_inode.c.obj (ex liblwext4.a)
352 0 0 352 160 ext4_super.c.obj (ex liblwext4.a)