Remove unused modules.
[lwext4.git] / readme.mediawiki
1 ==About==\r
2 \r
3 The main goal of the lwext4 project is to provide ext2/3/4 filesystem\r
4 library for microcontrolers with SD/MMC card support. Ext2/3/4, in my\r
5 opinion is one of the best filesystem for SD/MMC.\r
6 \r
7 kostka.grzegorz@gmail.com\r
8 \r
9 ==Minimum memory requirements==\r
10 \r
11 =====PROGRAM:=====\r
12  - 20KB\r
13 =====RAM:=====\r
14  - 8KB\r
15 =====STACK:=====\r
16  - 2KB\r
17 \r
18 \r
19 ==ext2/3/4 vs FAT32==\r
20 ;ext2/3/4 > FAT32\r
21 * fseek operation on big file in FAT32 is IO heavy\r
22 * ext2/3/4 HTREE directories operations are faster than FAT32  \r
23 * ext4 extents makes truncate/remove opertion really fast\r
24 * more at https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout\r
25 \r
26 ;ext2/3/4 < FAT32\r
27 * FAT32 has smaller footprint\r
28 \r
29 ==Credits==\r
30 \r
31 A lot of the implementation of lwext4 was taken from HelenOS:\r
32     http://helenos.org/\r
33  \r
34 Some of ideas and features are based on FreeBSD and Linux implementations.\r
35 \r
36 ==Supported ext2/3/4 fs features==\r
37 \r
38 ;FEATURE_INCOMPAT (unable to mount with unsupported feature):\r
39  COMPRESSION: no\r
40  FILETYPE:    yes\r
41  RECOVER:     no\r
42  JOURNAL_DEV: no\r
43  META_BG:     no\r
44  EXTENTS:     yes\r
45  64BIT:       yes\r
46  MMP:         no\r
47  FLEX_BG:     no\r
48  EA_INODE:    no\r
49  DIRDATA:     no\r
50  \r
51 ;FEATURE_COMPAT (able to mount with unsupported feature):\r
52  DIR_PREALLOC:   no\r
53  IMAGIC_INODES:  no\r
54  HAS_JOURNAL:    no\r
55  EXT_ATTR:       no\r
56  RESIZE_INODE:   no\r
57  DIR_INDEX:      yes\r
58 \r
59 ;FEATURE_RO (able to mount in read only mode):\r
60  SPARSE_SUPER:  yes\r
61  LARGE_FILE:    yes\r
62  BTREE_DIR:     no\r
63  HUGE_FILE:     yes\r
64  GDT_CSUM:      yes\r
65  DIR_NLINK:     yes\r
66  EXTRA_ISIZE:   yes\r
67 \r
68 ==Supported filetypes:==\r
69  FIFO:      no\r
70  CHARDEV:   no\r
71  DIRECTORY: yes\r
72  BLOCKDEV:  no\r
73  FILE:      yes\r
74  SOFTLINK:  no\r
75  SOCKET:    no\r
76 \r
77 ==Other==\r
78  - block_size: 1KB, 2KB, 4KB ... 64KB\r
79  - little/big endian architecture support\r
80 \r
81 \r
82 ==Project tree==\r
83 \r
84  - blockdev         - block devices set, supported blockdevs\r
85  -- filedev         - file based block device\r
86  -- io_raw          - wiodows IO block device\r
87 \r
88  - demos            - demo directory sources\r
89  -- generic         - generic demo app, used for development and and debbuging purpose\r
90  \r
91  - lwext4           - internals of the lwext4 library\r
92 \r
93  - toolchain        - specific toolchain cmake files\r
94 \r
95  - ext4.h           - lwext4 client library header\r
96  - CMakeLists.txt   - CMake config file\r
97  - ext_images.7z    - ext2/3/4 100MB images\r
98  - fs_test.mk       - automatic tests definition\r
99  - Makefile         - helper makefile to call cmake\r
100  - readme.mediawiki - yes, you are here ;)\r
101   \r
102 ==Compile: Windows==\r
103 ;Tools needed:\r
104 * CMake:  http://www.cmake.org/cmake/resources/software.html\r
105 * MinGw:  http://www.mingw.org/\r
106 * GnuWin: http://gnuwin32.sourceforge.net/ \r
107 \r
108 ;Create CMake files:\r
109  make\r
110 \r
111 ;Remove CMake files:\r
112  clean\r
113 \r
114 ;Build\r
115  cd build_generic\r
116  make\r
117 \r
118 ==Compile: Linux==\r
119 \r
120 Tools needed:\r
121  - CMake:  http://www.cmake.org/cmake/resources/software.html\r
122  \r
123 ;Create CMake files:\r
124  make\r
125 \r
126 ;Remove CMake files:\r
127  clean\r
128 \r
129 ;Build\r
130  cd build_generic\r
131  make\r
132 \r
133 ==Generic demo application==\r
134 \r
135 Features:\r
136  - load ext2/3/4 images\r
137  - load linux block device with ext2/3/4 part\r
138  - load windows volume with ext2/3/4 filesystem \r
139  - directory speed test\r
140  - file write/read speed test\r
141 \r
142 How to use:\r
143 Windows/Linux fileimages:\r
144  cd build_generic\r
145  generic --in ext2 \r
146 \r
147 Windows volumes:\r
148  cd build_generic\r
149  generic --in I: --wpart\r
150 \r
151 Linux block devices:\r
152  cd build_generic\r
153  generic --in /dev/your_block_device\r
154 \r
155 Usage:                                                          \r
156     --i   - input file              (default = ext2)            \r
157     --rws - single R/W size         (default = 1024 * 1024)     \r
158     --rwc - R/W count               (default = 10)                     \r
159     --cache  - 0 static, 1 dynamic  (default = 1)               \r
160     --dirs   - directory test count (default = 0)               \r
161     --clean  - clean up after test                              \r
162     --bstat  - block device stats                               \r
163     --sbstat - superblock stats                                 \r
164     --wpart  - windows partition mode                           \r
165 \r
166 ==Client-server automatic test suite==\r
167 \r
168 Build:\r
169  make\r
170  cd build_generic\r
171  make\r
172  \r
173 Unpack images:\r
174  make unpack_images\r
175  \r
176 Run server:\r
177  make server_ext2\r
178  \r
179 Run tests:\r
180  make all_tests\r
181 \r
182 \r
183 ==Cross-Compile==\r
184 \r
185  Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded\r
186  Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php\r
187 \r
188 Build bf518 library:\r
189  make bf518\r
190  cd build_bf518\r
191  make lwext4\r
192 \r
193 Build avrxmega7 library:\r
194  make avrxmega7\r
195  cd build_avrxmega7\r
196  make lwext4\r
197 \r
198 Build cortex-m0 library:\r
199  make cortex-m0\r
200  cd build_cortex-m0\r
201  make lwext4\r
202 \r
203 Build cortex-m3 library:\r
204  make cortex-m3\r
205  cd build_cortex-m3\r
206  make lwext4\r
207 \r
208 Build cortex-m4 library:\r
209  make cortex-m4\r
210  cd build_cortex-m4\r
211  make lwext4\r
212 \r
213 ==Ports==\r
214 STM32F429-DISCO USB flash drive Demo \r
215  \r
216 Build STM32F429 Demo:\r
217  make cortex-m4\r
218  cd build_cortex-m4\r
219  make all\r
220 \r
221 ==Footprint==\r
222 \r
223  TOOLCHAIN: arm-none-eabi-gcc\r
224  OPT: Os  \r
225  OUTPUT:\r
226    text    data     bss     dec     hex filename\r
227    5728       0       0    5728    1660 ext4.c.obj (ex liblwext4.a)\r
228    2264       0       0    2264     8d8 ext4_balloc.c.obj (ex liblwext4.a)\r
229    1324       0       0    1324     52c ext4_bcache.c.obj (ex liblwext4.a)\r
230     936       0       0     936     3a8 ext4_bitmap.c.obj (ex liblwext4.a)\r
231    2016       0       0    2016     7e0 ext4_blockdev.c.obj (ex liblwext4.a)\r
232     624       0       0     624     270 ext4_block_group.c.obj (ex liblwext4.a)\r
233      24       0       4      28      1c ext4_debug.c.obj (ex liblwext4.a)\r
234    2264       0       0    2264     8d8 ext4_dir.c.obj (ex liblwext4.a)\r
235    3204       0       0    3204     c84 ext4_dir_idx.c.obj (ex liblwext4.a)\r
236    3104       0       0    3104     c20 ext4_extent.c.obj (ex liblwext4.a)\r
237    7360       0       0    7360    1cc0 ext4_fs.c.obj (ex liblwext4.a)\r
238    2496       0       0    2496     9c0 ext4_hash.c.obj (ex liblwext4.a)\r
239     684       0       0     684     2ac ext4_ialloc.c.obj (ex liblwext4.a)\r
240     652       0       0     652     28c ext4_inode.c.obj (ex liblwext4.a)\r
241     352       0       0     352     160 ext4_super.c.obj (ex liblwext4.a)                      \r
242