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 eddcd695d0 Improve include policy 10 years ago
blockdev clang-format: blockdev modules 10 years ago
demos clang-format: demos/chibios/common 10 years ago
fs_test clang-format: fs_test 10 years ago
lwext4 Improve include policy 10 years ago
toolchain MSP430 toolchain files 11 years ago
.clang-format Change structure braces policy 10 years ago
.gitignore Update .gitignore 10 years ago
CMakeLists.txt version update: 0.7.0 10 years ago
Makefile clang-format: lwext4 modules 10 years ago
ext_images.7z BUGFIX: 11 years ago
fs_test.mk Add more test cases 10 years ago
readme.mediawiki Readme update 10 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

==Minimum memory requirements==
* .text: 20KB - 30KB (dependent of feature set chosen)
* .data: 8KB
* .stack: 2KB


==ext2/3/4 vs FAT32==
;ext2/3/4 > FAT32
* fast fseek on big file (in FAT32 fseek equals many IO operations)
* ext2/3/4 HTREE directory operations (like find entry) are faster
* fast extent big file allocation (truncate/remove)
* more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout

;ext2/3/4 < FAT32
* FAT32 has smaller footprint

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

==Supported ext2/3/4 fs features==
;Features incompatible (unable to mount when NOT supported):
* compression: no
* filetype: yes
* recover: no (could be ignored)
* journal_dev: no
* meta_bg: yes
* extents: yes
* 64bit: yes
* mmp: no (could be ignored)
* flex_bg: yes
* ea_inode: no
* dirdata: no
* bg_meta_csum: no
* largedir: no
* inline_data: no
;Features compatible (mount when NOT supported is possible):
* dir_prealloc: no
* imagic_inodes: no
* has_journal: no
* ext_attr: no
* resize_inode: no
* dir_index: yes
;Features read-only (mount in RO mode when NOT supported):
* sparse_super: yes
* large_file: yes
* btree_dir: yes (obsolete)
* huge_file: yes
* gdt_csum: yes
* dir_nlink: yes
* extra_isize: yes
* quota: no
* bigalloc: no
* metadata_csum: no

==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 blockdev
* demos - demo directory sources
* 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 trigger cmake, tests
* readme.mediawiki - readme file

==Compile: Windows==
Requirements:
* 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==

Requirements:
* 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
generic --in ext2

Windows volumes:
cd build_generic
generic --in I: --wpart

Linux block devices:
cd build_generic
generic --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

==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 app for predefined images:
make server_ext2
make server_ext3
make server_ext4
Run tests:
make all_tests

==Cross-Compile standalone library==
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

==Demos==
* STM32F429-DISCO USB flash drive Demo
* ChibiOS demo applications

Build STM32F429 Demo:
make cortex-m4
cd build_cortex-m4
make all