Update .gitignore
[lwext4.git] / readme.mediawiki
1 ==About==
2
3 The main goal of the lwext4 project is to provide ext2/3/4 filesystem
4 library for microcontrolers with SD/MMC card support. 
5
6 kostka.grzegorz@gmail.com
7
8 ==Minimum memory requirements==
9 * .text:  20KB - 30KB (dependent of feature set chosen)
10 * .data:  8KB
11 * .stack: 2KB
12
13
14 ==ext2/3/4 vs FAT32==
15 ;ext2/3/4 > FAT32
16 * fast fseek on big file (in FAT32 fseek equals many IO operations)
17 * ext2/3/4 HTREE directory operations (like find entry) are faster
18 * fast extent big file allocation (truncate/remove)
19 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout
20
21 ;ext2/3/4 < FAT32
22 * FAT32 has smaller footprint
23
24 ==Credits==
25
26 The most of the source code of lwext4 was taken from HelenOS:
27 * http://helenos.org/
28 Some features are based on FreeBSD and Linux implementations.
29
30 ==Supported ext2/3/4 fs features==
31 ;Features incompatible (unable to mount when NOT supported):
32 *  compression: no
33 *  filetype: yes
34 *  recover: no (could be ignored)
35 *  journal_dev: no
36 *  meta_bg: yes
37 *  extents: yes
38 *  64bit: yes
39 *  mmp: no (could be ignored)
40 *  flex_bg: yes
41 *  ea_inode: no
42 *  dirdata: no
43 *  bg_meta_csum: no
44 *  largedir: no
45 *  inline_data: no
46 ;Features compatible (mount when NOT supported is possible):
47 *  dir_prealloc: no
48 *  imagic_inodes: no
49 *  has_journal: no
50 *  ext_attr: no
51 *  resize_inode: no
52 *  dir_index: yes
53 ;Features read-only (mount in RO mode when NOT supported):
54 *  sparse_super: yes
55 *  large_file: yes
56 *  btree_dir: yes (obsolete)
57 *  huge_file: yes
58 *  gdt_csum: yes
59 *  dir_nlink: yes
60 *  extra_isize: yes
61 *  quota: no
62 *  bigalloc: no
63 *  metadata_csum: no
64
65 ==Supported filetypes:==
66 * FIFO:      no
67 * CHARDEV:   no
68 * DIRECTORY: yes
69 * BLOCKDEV:  no
70 * FILE:      yes
71 * SOFTLINK:  no
72 * SOCKET:    no
73
74 ==Other==
75  - block_size: 1KB, 2KB, 4KB ... 64KB
76  - little/big endian architecture support
77
78 ==Project tree==
79 *  blockdev         - block devices set, supported blockdev
80 *  demos            - demo directory sources
81 *  lwext4           - internals of the lwext4 library
82 *  toolchain        - specific toolchain cmake files
83 *  CMakeLists.txt   - CMake config file
84 *  ext_images.7z    - compressed ext2/3/4 100MB images
85 *  fs_test.mk       - automatic tests definitions
86 *  Makefile         - helper makefile to trigger cmake, tests
87 *  readme.mediawiki - readme file
88   
89 ==Compile: Windows==
90 Requirements:
91 * CMake:  http://www.cmake.org/cmake/resources/software.html
92 * MinGw:  http://www.mingw.org/
93 * GnuWin: http://gnuwin32.sourceforge.net/ 
94
95 ;Create CMake files:
96  make
97
98 ;Remove CMake files:
99  clean
100
101 ;Build
102  cd build_generic
103  make
104
105 ==Compile: Linux==
106
107 Requirements:
108 * CMake:  http://www.cmake.org/cmake/resources/software.html
109  
110 ;Create CMake files:
111  make
112
113 ;Remove CMake files:
114  clean
115
116 ;Build
117  cd build_generic
118  make
119
120 ==Generic demo application==
121 Features:
122 * load ext2/3/4 images
123 * load linux block device with ext2/3/4 part
124 * load windows volume with ext2/3/4 filesystem 
125 * directory speed test
126 * file write/read speed test
127
128 How to use:
129 Windows/Linux fileimages:
130  cd build_generic
131  generic --in ext2 
132
133 Windows volumes:
134  cd build_generic
135  generic --in I: --wpart
136
137 Linux block devices:
138  cd build_generic
139  generic --in /dev/your_block_device
140
141 Usage:                                                          
142  --i   - input file              (default = ext2)            
143  --rws - single R/W size         (default = 1024 * 1024)     
144  --rwc - R/W count               (default = 10)                     
145  --cache  - 0 static, 1 dynamic  (default = 1)               
146  --dirs   - directory test count (default = 0)               
147  --clean  - clean up after test                              
148  --bstat  - block device stats                               
149  --sbstat - superblock stats                                 
150  --wpart  - windows partition mode                           
151
152 ==Build and run automatic tests==
153 Build and run automatic tests
154 Build automatic test tools:
155  make
156  cd build_generic
157  make
158 Uncompress ext/2/3/4 images:
159  make unpack_images
160 Run server app for predefined images:
161  make server_ext2
162  make server_ext3
163  make server_ext4
164 Run tests:
165  make all_tests
166
167 ==Cross-Compile standalone library==
168 Build bf518 library:
169  make bf518
170  cd build_bf518
171  make lwext4
172
173 Build avrxmega7 library:
174  make avrxmega7
175  cd build_avrxmega7
176  make lwext4
177
178 Build cortex-m0 library:
179  make cortex-m0
180  cd build_cortex-m0
181  make lwext4
182
183 Build cortex-m3 library:
184  make cortex-m3
185  cd build_cortex-m3
186  make lwext4
187
188 Build cortex-m4 library:
189  make cortex-m4
190  cd build_cortex-m4
191  make lwext4
192
193 ==Demos==
194 * STM32F429-DISCO USB flash drive Demo
195 * ChibiOS demo applications
196  
197 Build STM32F429 Demo:
198  make cortex-m4
199  cd build_cortex-m4
200  make all