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.
 
 
 
ngkaho1234 e686e6cd46 METADATA_CSUM: inode and block group descriptor checksum verification added 9 years ago
blockdev Improve generic & stm32f4 demos 9 years ago
demos/generic Move stm32f429 demo to separate repository 9 years ago
fs_test Linux line endings 9 years ago
lwext4 METADATA_CSUM: inode and block group descriptor checksum verification added 9 years ago
toolchain 1. Use cc/c++ instead of gcc/g++ 9 years ago
.clang-format Linux codestyle format (tabs indenation) 9 years ago
.gitignore Update .gitignore 10 years ago
CHANGELOG Add CHANGELOG & version bump to 0.8.0 9 years ago
CMakeLists.txt Move stm32f429 demo to separate repository 9 years ago
Makefile dos2unix conversion of Makefile 9 years ago
ext_images.7z BUGFIX: 11 years ago
fs_test.mk Add more test cases 10 years ago
readme.mediawiki Update readme.mediawiki 9 years ago

readme.mediawiki

==About==

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

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.

Code is also available on github:
https://github.com/gkostka/lwext4

Feel free to contact me:
kostka.grzegorz@gmail.com

==Credits==

The most of the source code of lwext4 was taken from HelenOS:
* http://helenos.org/
Some features are based on FreeBSD and Linux implementations.

KaHo Ng (https://github.com/ngkaho1234):
* advanced extents implementation
* xattr support
* metadata checksum suport
* many bugfixes & improvements

fuse-lwext4 project:
* https://github.com/ngkaho1234/fuse-lwext4

==Features==

* filetypes: regular, directories, softlinks
* support for hardlinks
* multiple blocksize supported: 1KB, 2KB, 4KB ... 64KB
* little/big endian architectures supported
* multiple configurations (ext2/ext3/ext4)
* only C standard library dependency
* various CPU architectures supported (x86/64, cortex-mX, msp430 ...)
* small memory footprint


;Memory footprint (for cortex-m4):
* .text: 20KB - 40KB
* .data: 8KB (minimum 8 x 1KB block cache)
* .stack: 2KB

==Supported ext2/3/4 features==
;Features incompatible:
* compression: no
* filetype: yes
* recover: no
* journal_dev: no
* meta_bg: yes
* extents: yes
* 64bit: yes
* mmp: no
* flex_bg: yes
* ea_inode: no
* dirdata: no
* bg_meta_csum: no
* largedir: no
* inline_data: no
;Features compatible:
* dir_prealloc: no
* imagic_inodes: no
* has_journal: no
* ext_attr: yes
* resize_inode: no
* dir_index: yes
;Features read-only:
* sparse_super: yes
* large_file: yes
* btree_dir: yes
* huge_file: yes
* gdt_csum: yes
* dir_nlink: yes
* extra_isize: yes
* quota: no
* bigalloc: no
* metadata_csum: yes


==Project tree==
* blockdev - block devices set, supported blockdev
* demos - demo directory sources
* fs_test - test suite
* lwext4 - internals of the lwext4 library
* toolchain - specific toolchain cmake files
* CMakeLists.txt - CMake config file
* ext_images.7z - compressed ext2/3/4 100MB images
* fs_test.mk - automatic tests definitions
* Makefile - helper makefile to generate cmake and run test suite
* readme.mediawiki - readme file

==Compile==
Windows:
* CMake: http://www.cmake.org/cmake/resources/software.html
* MinGw: http://www.mingw.org/
* GnuWin: http://gnuwin32.sourceforge.net/

Linux:
* CMake, make, gcc

;Generate makefiles:
make

;Compile
cd build_generic
make


==Generic demo application==
Simple lwext4 library presentation:
* 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 for images/blockdevices:
cd build_generic
generic -i ext_images/ext2
generic -i ext_images/ext3
generic -i ext_images/ext4


==Build and run automatic tests==
Build and run automatic tests
Build automatic test tools:
make
cd build_generic
make
Uncompress ext/2/3/4 images:
make unpack_images
Run server for one of the image file:
make server_ext2
make server_ext3
make server_ext4
Execute tests:
make test

==Cross compile standalone library==
Toolchains needed:
* arm-none-eabi-gcc for cortex-mX
* avr-gcc for avr
* bfin-elf-gcc for bfin
* msp430-gcc for msp430


Build bf518 library:
make bf518
cd build_bf518
make lwext4

Build avrxmega7 library:
make avrxmega7
cd build_avrxmega7
make lwext4

Build cortex-m0 library:
make cortex-m0
cd build_cortex-m0
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