Update readme.mediawiki
[lwext4.git] / readme.mediawiki
1 ==About==
2
3 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).
4
5 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.
6
7 Code is also available on github:
8 https://github.com/gkostka/lwext4
9
10 Feel free to contact me:
11 kostka.grzegorz@gmail.com
12
13 ==Credits==
14
15 The most of the source code of lwext4 was taken from HelenOS:
16 * http://helenos.org/
17 Some features are based on FreeBSD and Linux implementations.
18
19 KaHo Ng (https://github.com/ngkaho1234):
20 * advanced extents implementation
21 * xattr support
22 * metadata checksum suport
23 * many bugfixes & improvements
24
25 fuse-lwext4 project:
26 * https://github.com/ngkaho1234/fuse-lwext4
27
28 ==Features==
29
30 * filetypes: regular, directories, softlinks
31 * support for hardlinks
32 * multiple blocksize supported: 1KB, 2KB, 4KB ... 64KB
33 * little/big endian architectures supported
34 * multiple configurations (ext2/ext3/ext4)
35 * only C standard library dependency
36 * various CPU architectures supported (x86/64, cortex-mX, msp430 ...)
37 * small memory footprint
38
39
40 ;Memory footprint (for cortex-m4):
41 * .text:  20KB - 40KB 
42 * .data:  8KB         (minimum 8 x 1KB  block cache)
43 * .stack: 2KB
44
45 ==Supported ext2/3/4 features==
46 ;Features incompatible:
47 *  compression: no
48 *  filetype: yes
49 *  recover: no
50 *  journal_dev: no
51 *  meta_bg: yes
52 *  extents: yes
53 *  64bit: yes
54 *  mmp: no
55 *  flex_bg: yes
56 *  ea_inode: no
57 *  dirdata: no
58 *  bg_meta_csum: no
59 *  largedir: no
60 *  inline_data: no
61 ;Features compatible:
62 *  dir_prealloc: no
63 *  imagic_inodes: no
64 *  has_journal: no
65 *  ext_attr: yes
66 *  resize_inode: no
67 *  dir_index: yes
68 ;Features read-only:
69 *  sparse_super: yes
70 *  large_file: yes
71 *  btree_dir: yes
72 *  huge_file: yes
73 *  gdt_csum: yes
74 *  dir_nlink: yes
75 *  extra_isize: yes
76 *  quota: no
77 *  bigalloc: no
78 *  metadata_csum: yes
79
80
81 ==Project tree==
82 *  blockdev         - block devices set, supported blockdev
83 *  demos            - demo directory sources
84 *  fs_test          - test suite
85 *  lwext4           - internals of the lwext4 library
86 *  toolchain        - specific toolchain cmake files
87 *  CMakeLists.txt   - CMake config file
88 *  ext_images.7z    - compressed ext2/3/4 100MB images
89 *  fs_test.mk       - automatic tests definitions
90 *  Makefile         - helper makefile to generate cmake and run test suite
91 *  readme.mediawiki - readme file
92   
93 ==Compile==
94 Windows:
95 * CMake:  http://www.cmake.org/cmake/resources/software.html
96 * MinGw:  http://www.mingw.org/
97 * GnuWin: http://gnuwin32.sourceforge.net/ 
98
99 Linux:
100 * CMake, make, gcc
101
102 ;Generate makefiles:
103  make
104
105 ;Compile
106  cd build_generic
107  make
108
109
110 ==Generic demo application==
111 Simple lwext4 library presentation:
112 * load ext2/3/4 images
113 * load linux block device with ext2/3/4 part
114 * load windows volume with ext2/3/4 filesystem 
115 * directory speed test
116 * file write/read speed test
117
118 How to use for images/blockdevices:
119  cd build_generic
120  generic -i ext_images/ext2 
121  generic -i ext_images/ext3 
122  generic -i ext_images/ext4 
123
124
125 ==Build and run automatic tests==
126 Build and run automatic tests
127 Build automatic test tools:
128  make
129  cd build_generic
130  make
131 Uncompress ext/2/3/4 images:
132  make unpack_images
133 Run server for one of the image file:
134  make server_ext2
135  make server_ext3
136  make server_ext4
137 Execute tests:
138  make test
139
140 ==Cross compile standalone library==
141 Toolchains needed:
142 * arm-none-eabi-gcc for cortex-mX
143 * avr-gcc for avr
144 * bfin-elf-gcc for bfin
145 * msp430-gcc for msp430
146
147
148 Build bf518 library:
149  make bf518
150  cd build_bf518
151  make lwext4
152
153 Build avrxmega7 library:
154  make avrxmega7
155  cd build_avrxmega7
156  make lwext4
157
158 Build cortex-m0 library:
159  make cortex-m0
160  cd build_cortex-m0
161  make lwext4
162
163 Build cortex-m3 library:
164  make cortex-m3
165  cd build_cortex-m3
166  make lwext4
167
168 Build cortex-m4 library:
169  make cortex-m4
170  cd build_cortex-m4
171  make lwext4
172