Update cmake generation setup.
[lwext4.git] / readme.txt
1 \r
2 About lwext4\r
3 ============\r
4 \r
5 The main goal of the lwext4 project is to provide ext2/3/4 filesystem\r
6 library for microcontrolers with SD/MMC card support. Ext2/3/4, in my\r
7 opinion is one of the best filesystem for SD/MMC.\r
8 \r
9 kostka.grzegorz@gmail.com\r
10 \r
11 Minimum memory requirements\r
12 ===========================\r
13 \r
14 .text        ~ 15KB\r
15 .data + .bss ~ 8KB\r
16 .stack       ~ 1KB-2KB (not tested yet)\r
17 \r
18 ext2/3/4 vs FAT32\r
19 =================\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 lwext4\r
30 ==============\r
31 \r
32 A lot of the implementation of lwext4 was taken from HelenOS:\r
33  - http://www.helenos.org/\r
34  \r
35 Some of ideas and features are based on FreeBSD and Linux implementations.\r
36 \r
37 lwext4 supported/unsupported ext2/3/4 fs features\r
38 =================================================\r
39 FEATURE_INCOMPAT (unable to mount with unsupported feature):\r
40  - COMPRESSION: no\r
41  - FILETYPE:    yes\r
42  - RECOVER:     no\r
43  - JOURNAL_DEV: no\r
44  - META_BG:     no\r
45  - EXTENTS:     yes\r
46  - 64BIT:       yes\r
47  - MMP:         no\r
48  - FLEX_BG:     no\r
49  - EA_INODE:    no\r
50  - DIRDATA:     no\r
51  \r
52 FEATURE_INCOMPAT (able to mount with unsupported feature):\r
53  - DIR_PREALLOC:   no\r
54  - IMAGIC_INODES:  no\r
55  - HAS_JOURNAL:    no\r
56  - EXT_ATTR:       no\r
57  - RESIZE_INODE:   no\r
58  - DIR_INDEX:      yes\r
59 \r
60 FEATURE_RO (able to mount in read only with unsupported feature):\r
61  - SPARSE_SUPER:  yes\r
62  - LARGE_FILE:    yes\r
63  - BTREE_DIR:     no\r
64  - HUGE_FILE:     yes\r
65  - GDT_CSUM:      yes\r
66  - DIR_NLINK:     yes\r
67  - EXTRA_ISIZE:   yes\r
68 \r
69 Supported filetypes:\r
70  - FIFO:      no\r
71  - CHARDEV:   no\r
72  - DIRECTORY: yes\r
73  - BLOCKDEV:  no\r
74  - FILE:      yes\r
75  - SOFTLINK:  no\r
76  - SOCKET:    no\r
77 \r
78 Other:\r
79  - block_size: 1KB, 2KB, 4KB ... 64KB\r
80  - little/big endian architecture support\r
81 \r
82 \r
83 lwext4 project tree\r
84 ===================\r
85 \r
86 +blockdev      - block devices set, supported blockdevs\r
87  - filedev     - file based block device\r
88  - io_raw      - wiodows IO block device\r
89 \r
90 +demos         - demo directory sources\r
91  - generic     - generic demo app, used for development and and debbuging purpose\r
92  \r
93 +lwext4        - internals of the lwext4 library\r
94 \r
95 +toolchain     - specific toolchain cmake files\r
96 \r
97 +ext4.h        - lwext4 client library header\r
98 CMakeLists.txt - CMake config file\r
99 ext_images.7z  - ext2/3/4 100MB images\r
100 Makefile       - helper makefile to call cmake\r
101 readme.txt     - yes, you are here ;)\r
102   \r
103 lwext4 compile Windows\r
104 ======================\r
105 \r
106 Tools needed:\r
107  - CMake:  http://www.cmake.org/cmake/resources/software.html\r
108  - MinGw:  http://www.mingw.org/\r
109  - GnuWin: http://gnuwin32.sourceforge.net/ \r
110 \r
111 Build:\r
112 >>make\r
113 \r
114 Clean:\r
115 >>clean\r
116 \r
117 Successful build generates out of source build directory:\r
118 +build_generic\r
119 \r
120 lwext4 compile Linux\r
121 ====================\r
122 Tools needed:\r
123  - CMake:  http://www.cmake.org/cmake/resources/software.html\r
124  \r
125 Build:\r
126 >>make\r
127 \r
128 Clean:\r
129 >>clean\r
130 \r
131 Successful build generates out of source build directory:\r
132 +build_generic\r
133 \r
134 lwext4 generic demo app\r
135 =======================\r
136 \r
137 Features:\r
138  - load ext2/3/4 images\r
139  - load linux block device with ext2/3/4 part\r
140  - load windows volume with ext2/3/4 filesystem \r
141  - directory speed test\r
142  - file write/read speed test\r
143 \r
144 How to use:\r
145 Windows/Linux fileimages:\r
146 > cd build_generic\r
147 > fileimage_demo --in ext2 \r
148 \r
149 Windows volumes:\r
150 > cd build_generic\r
151 > fileimage_demo --in I: --wpart\r
152 \r
153 Linux block devices:\r
154 > cd build_generic\r
155 > fileimage_demo --in /dev/your_block_device\r
156 \r
157 Usage:                                                          \r
158     --i   - input file              (default = ext2)            \r
159     --rws - single R/W size         (default = 1024 * 1024)     \r
160     --rwc - R/W count               (default = 10)                     \r
161     --cache  - 0 static, 1 dynamic  (default = 1)               \r
162     --dirs   - directory test count (default = 0)               \r
163     --clean  - clean up after test                              \r
164     --bstat  - block device stats                               \r
165     --sbstat - superblock stats                                 \r
166     --wpart  - windows partition mode                           \r
167 \r
168 \r
169 lwext4 compile Cross\r
170 ====================\r
171 \r
172 Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded\r
173 Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php\r
174 \r
175 Build bf158 library:\r
176 > make bf518\r
177 \r
178 Build cortex-m3 library:\r
179 > make cortex-m3\r
180 \r
181 Build cortex-m4 library:\r
182 > make cortex-m4\r
183 \r
184 lwext4 ports\r
185 ============\r
186 \r
187 Blackfin BF518 EZKIT SD Card Demo: TBD\r
188 STM32F4-Discovery SD Card Demo: TBD \r
189 \r
190 \r
191 lwext4 footprint\r
192 ================                              \r
193 \r
194 TBD