X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=readme.mediawiki;h=b97c3d46f7977a87fb5148df5977919c32ad55b1;hb=d4928d37c05debac1e5cbe22d7267f95dd2d5dc8;hp=37fec5a0b5141434ab5ce76973da72eea3a7bc93;hpb=b31faab0fab65e98b1700622427e29555d8197d1;p=lwext4.git diff --git a/readme.mediawiki b/readme.mediawiki index 37fec5a..b97c3d4 100644 --- a/readme.mediawiki +++ b/readme.mediawiki @@ -1,186 +1,186 @@ -==About lwext4== - -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:===== - - 1KB-2KB (not tested yet) - - -==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 lwext4== - -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. - -==lwext4 supported/unsupported 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_INCOMPAT (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 with unsupported feature): - 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 - - -==lwext4 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 - - Makefile - helper makefile to call cmake - - readme.mediawiki - yes, you are here ;) - -==lwext4 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 - -==lwext4 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 - -==lwext4 generic demo app== - -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 - - -==lwext4 compile Cross== - -Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded -Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php - -Build bf158 library: - make bf518 - -Build cortex-m3 library: - make cortex-m3 - -Build cortex-m4 library: - make cortex-m4 - -==lwext4 ports== - -Blackfin BF518 EZKIT SD Card Demo: TBD - -STM32F4-Discovery SD Card Demo: TBD - -==lwext4 footprint== - -TBD \ No newline at end of file +==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 - 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 +* 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 (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 (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 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 -i /dev/your_block_device + +==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 test + +==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 +