Brak opisu

Grzegorz Kostka d823cf6d56 Tag 0.7.0 11 lat temu
blockdev 9338752538 Build system refactoring. 11 lat temu
demos 355f4dbd88 Improve demo debug info 11 lat temu
fs_test 480aef5821 Fix errno warning. 11 lat temu
lwext4 52af207c4d meta_bg feature helper functions 11 lat temu
toolchain 27badcf236 MSP430 toolchain files 11 lat temu
CMakeLists.txt f47e00d6e0 version update: 0.7.0 11 lat temu
Makefile b34e386ce0 Comb sort for directory indexing (shold be faster). 11 lat temu
ext_images.7z 974cf28b9b BUGFIX: 12 lat temu
fs_test.mk fcd18a75f5 Add more test cases 11 lat temu
readme.mediawiki ba0bd1dc0d Update readme 11 lat temu

readme.mediawiki

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