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.
gkostka
8175b57b88
|
9 years ago | |
---|---|---|
blockdev | 9 years ago | |
demos | 9 years ago | |
fs_test | 9 years ago | |
lwext4 | 9 years ago | |
toolchain | 9 years ago | |
.clang-format | 9 years ago | |
.gitignore | 10 years ago | |
CHANGELOG | 9 years ago | |
CMakeLists.txt | 9 years ago | |
Makefile | 10 years ago | |
ext_images.7z | 11 years ago | |
fs_test.mk | 10 years ago | |
readme.mediawiki | 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