X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=readme.mediawiki;h=43af0424f592a745d1af18bf6301a777d3c187e5;hb=a207f1889d4ba00e5f069a876ab38cb8c7ea34d3;hp=11a1cf46368d093b6431aa0b87a27a63e8fbb8ee;hpb=b6056a57e3b1d82324da37a5f371b303144ce19e;p=lwext4.git diff --git a/readme.mediawiki b/readme.mediawiki index 11a1cf4..43af042 100644 --- a/readme.mediawiki +++ b/readme.mediawiki @@ -1,232 +1,251 @@ -==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. - -kostka.grzegorz@gmail.com - -==Minimum memory requirements== - -=====PROGRAM:===== - - 20KB -=====RAM:===== - - 8KB -=====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 -* more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout - -;ext2/3/4 < FAT32 -* FAT32 has smaller footprint - -==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. - -==Supported 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_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: 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 - - -==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 ;) - -==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 - -==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 - -==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 - 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 - -==Client-server automatic test suitr== - -Build: - make - cd build_generic - make - -Unpack images: - make unpack_images - -Run server: - make server_ext2 - -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 - -Build bf518 library: - make bf518 - cd build_bf518 - 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 - -==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) +==About== + +The main goal of the lwext4 project is to provide ext2/3/4 filesystem +library for microcontrolers with SD/MMC card support. + +kostka.grzegorz@gmail.com + +==Minimum memory requirements== + +=====PROGRAM:===== + - 20KB +=====RAM:===== + - 8KB +=====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 +* more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout + +;ext2/3/4 < FAT32 +* FAT32 has smaller footprint + +==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. + +==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 + + +==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 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 ;) + +==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 + +==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 + +==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 + +==Client-server automatic test suite== + +Build: + make + cd build_generic + make + +Unpack images: + make unpack_images + +Run server: + make server_ext2 + +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 + +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 + +==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: O2 + OUTPUT: + text data bss filename + 648 0 0 ext4_inode.c + 1064 0 0 ext4_crc32c.c + 2124 0 0 ext4_blockdev.c + 372 0 0 ext4_bitmap.c + 1184 0 0 ext4_hash.c + 2852 0 0 ext4_balloc.c + 1844 0 0 ext4_dir.c + 2904 0 0 ext4_dir_idx.c + 972 0 0 ext4_bcache.c + 552 0 0 ext4_block_group.c + 744 0 0 ext4_ialloc.c + 5408 0 0 ext4.c + 600 0 0 ext4_super.c + 24 0 4 ext4_debug.c + 3092 0 0 ext4_extent.c + 6424 0 0 ext4_fs.c + \ No newline at end of file