Upadate cmake file.
[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  - Makefile         - helper makefile to call cmake\r
99  - readme.mediawiki - yes, you are here ;)\r
100   \r
101 ==Compile: Windows==\r
102 ;Tools needed:\r
103 * CMake:  http://www.cmake.org/cmake/resources/software.html\r
104 * MinGw:  http://www.mingw.org/\r
105 * GnuWin: http://gnuwin32.sourceforge.net/ \r
106 \r
107 ;Create CMake files:\r
108  make\r
109 \r
110 ;Remove CMake files:\r
111  clean\r
112 \r
113 ;Build\r
114  cd build_generic\r
115  make\r
116 \r
117 ==Compile: Linux==\r
118 \r
119 Tools needed:\r
120  - CMake:  http://www.cmake.org/cmake/resources/software.html\r
121  \r
122 ;Create CMake files:\r
123  make\r
124 \r
125 ;Remove CMake files:\r
126  clean\r
127 \r
128 ;Build\r
129  cd build_generic\r
130  make\r
131 \r
132 ==Generic demo applicarion==\r
133 \r
134 Features:\r
135  - load ext2/3/4 images\r
136  - load linux block device with ext2/3/4 part\r
137  - load windows volume with ext2/3/4 filesystem \r
138  - directory speed test\r
139  - file write/read speed test\r
140 \r
141 How to use:\r
142 Windows/Linux fileimages:\r
143  cd build_generic\r
144  fileimage_demo --in ext2 \r
145 \r
146 Windows volumes:\r
147  cd build_generic\r
148  fileimage_demo --in I: --wpart\r
149 \r
150 Linux block devices:\r
151  cd build_generic\r
152  fileimage_demo --in /dev/your_block_device\r
153 \r
154 Usage:                                                          \r
155     --i   - input file              (default = ext2)            \r
156     --rws - single R/W size         (default = 1024 * 1024)     \r
157     --rwc - R/W count               (default = 10)                     \r
158     --cache  - 0 static, 1 dynamic  (default = 1)               \r
159     --dirs   - directory test count (default = 0)               \r
160     --clean  - clean up after test                              \r
161     --bstat  - block device stats                               \r
162     --sbstat - superblock stats                                 \r
163     --wpart  - windows partition mode                           \r
164 \r
165 \r
166 ==Cross-Compile==\r
167 \r
168  Toolchain for ARM Cortex-m3/4: https://launchpad.net/gcc-arm-embedded\r
169  Toolchain for Blackfin: http://blackfin.uclinux.org/doku.php\r
170 \r
171 Build bf518 library:\r
172  make bf518\r
173 \r
174 Build cortex-m3 library:\r
175  make cortex-m3\r
176 \r
177 Build cortex-m4 library:\r
178  make cortex-m4\r
179 \r
180 ==Ports==\r
181  *Blackfin BF518 EZKIT SD Card Demo: TBD\r
182  *STM32F4-Discovery SD Card Demo: TBD \r
183 \r
184 ==Footprint==\r
185                            \r
186 TBD