+[![Join the chat at https://gitter.im/gkostka/lwext4](https://badges.gitter.im/gkostka/lwext4.svg)](https://gitter.im/gkostka/lwext4?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause)
[![Build Status](https://travis-ci.org/gkostka/lwext4.svg)](https://travis-ci.org/gkostka/lwext4)
![lwext4](https://cloud.githubusercontent.com/assets/8606098/11697327/68306d88-9eb9-11e5-8807-81a2887f077e.png)
About
=====
+
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). Library has some cool and unique features in microcontrollers world:
- directory indexing - fast file find and list operations
- extents - fast big file truncate
- journaling transactions & recovery - power loss resistance
-Lwext4 is an excellent choice for SD/MMC card, USB flash drive or other block based memory device. However it is not good for flash memory–based storage devices.
+Lwext4 is an excellent choice for SD/MMC card, USB flash drive or any other wear
+leveled memory types. However it is not good for raw flash devices.
Feel free to contact me:
kostka.grzegorz@gmail.com
Supported ext2/3/4 features
=====
-Features incompatible:
-------------
-* compression: no
-* filetype: yes
-* recover: no
-* journal_dev: no
-* meta_bg: yes
-* extents: yes
-* 64bit: yes
-* mmp: no
-* flex_bg: yes
-* ea_inode: no
-* dirdata: no
-* bg_meta_csum: no
-* largedir: no
-* inline_data: no
-
-Features compatible:
+incompatible:
------------
-* dir_prealloc: no
-* imagic_inodes: no
-* has_journal: yes (in progress)
-* ext_attr: yes
-* resize_inode: no
-* dir_index: yes
-
-Features read-only:
+* filetype, recover, meta_bg, extents, 64bit, flex_bg: **yes**
+* compression, journal_dev, mmp, ea_inode, dirdata, bg_meta_csum, largedir, inline_data: **no**
+
+compatible:
------------
-* sparse_super: yes
-* large_file: yes
-* btree_dir: yes
-* huge_file: yes
-* gdt_csum: yes
-* dir_nlink: yes
-* extra_isize: yes
-* quota: no
-* bigalloc: no
-* metadata_csum: yes
+* has_journal, ext_attr, dir_index: **yes**
+* dir_prealloc, imagic_inodes, resize_inode: **no**
+read-only:
+------------
+* sparse_super, large_file, huge_file, gdt_csum, dir_nlink, extra_isize, metadata_csum: **yes**
+* quota, bigalloc, btree_dir: **no**
Project tree
=====
* generic for x86 or amd64
* arm-none-eabi-gcc for ARM cortex-m0/m3/m4 microcontrollers
* avr-gcc for AVR xmega microcontrollers
-* bfin-elf-gcc for blockfin processors
+* bfin-elf-gcc for blackfin processors
* msp430-gcc for msp430 microcontrollers
Library has been tested only for generic (amd64) & ARM Cortex M architectures.
not done yet. Lwext4 code is written with endianes respect. Big endian
behavior also hasn't been tested yet.
-Build bf518 library:
-------------
-```bash
- make bf518
- cd build_bf518
- make lwext4
- ```
-
Build avrxmega7 library:
------------
```bash