X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=readme.mediawiki;h=b97c3d46f7977a87fb5148df5977919c32ad55b1;hb=d5cb40f453a0fd873dbcee924d120a0e683ffef2;hp=e2218db4eafba35f44dda33e855664637337b896;hpb=4546c5b04d9ed617a64970568acd58eef8d0666e;p=lwext4.git diff --git a/readme.mediawiki b/readme.mediawiki index e2218db..b97c3d4 100644 --- a/readme.mediawiki +++ b/readme.mediawiki @@ -1,26 +1,26 @@ ==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. +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== - -=====PROGRAM:===== - - 20KB -=====RAM:===== - - 8KB -=====STACK:===== - - 2KB +* .text: 20KB - 40KB (dependent of feature set chosen) +* .data: 8KB (minimum 8 x 1KB block cache) +* .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 +* 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 @@ -28,87 +28,71 @@ kostka.grzegorz@gmail.com ==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. +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== - - -;FEATURE_INCOMPAT (unable to mount with unsupported feature): - 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 - -;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: yes (obsolete) - huge_file: yes - gdt_csum: yes - dir_nlink: yes - extra_isize: yes - quota: no - bigalloc: no - metadata_csum: no - +;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 (work in progress) +* 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 (to be done ...) ==Supported filetypes:== - FIFO: no - CHARDEV: no - DIRECTORY: yes - BLOCKDEV: no - FILE: yes - SOFTLINK: no - SOCKET: no +* FIFO: no +* CHARDEV: no +* DIRECTORY: yes +* BLOCKDEV: no +* FILE: yes (hardlinks supported) +* SOFTLINK: yes +* 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 ;) +* 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== -;Tools needed: +Requirements: * CMake: http://www.cmake.org/cmake/resources/software.html * MinGw: http://www.mingw.org/ * GnuWin: http://gnuwin32.sourceforge.net/ @@ -125,8 +109,8 @@ Some of ideas and features are based on FreeBSD and Linux implementations. ==Compile: Linux== -Tools needed: - - CMake: http://www.cmake.org/cmake/resources/software.html +Requirements: +* CMake: http://www.cmake.org/cmake/resources/software.html ;Create CMake files: make @@ -139,13 +123,12 @@ Tools needed: 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 +* 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: @@ -158,41 +141,24 @@ Windows volumes: 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 - -==Client-server automatic test suite== - -Build: + generic -i /dev/your_block_device + +==Build and run automatic tests== +Build and run automatic tests +Build automatic test tools: make cd build_generic make - -Unpack images: +Uncompress ext/2/3/4 images: make unpack_images - -Run server: +Run server app for predefined images: make server_ext2 - + make server_ext3 + make server_ext4 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 + make test +==Cross-Compile standalone library== Build bf518 library: make bf518 cd build_bf518 @@ -218,33 +184,3 @@ Build cortex-m4 library: 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) - \ No newline at end of file