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.
 
 
 
gkostka 6f2630560d Build system refactoring. 11 years ago
blockdev Build system refactoring. 11 years ago
demos Build system refactoring. 11 years ago
fs_test Build system refactoring. 11 years ago
lwext4 Build system refactoring. 11 years ago
toolchain Build system refactoring. 11 years ago
CMakeLists.txt Build system refactoring. 11 years ago
Makefile Build system refactoring. 11 years ago
ext_images.7z BUGFIX: 11 years ago
fs_test.mk Build system refactoring. 11 years ago
readme.mediawiki Typo fix. 11 years ago

readme.mediawiki

==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)