File System Overview#



  • Compatible with Windows FAT. All standard FAT variants and features are supported, including FAT12/FAT16/FAT32.

  • Supports the Unicode standard with UTF-8 encoding for FAT Long File Name (LFN) also known as Virtual FAT (VFAT).

  • Standard POSIX-like API is provided. Micrium OS File System implements a subset of the functions defined in the POSIX.1-2008 standard.



  • Complies with the "Physical Layer Simplified Specification, Version 2.00" published by the SD Association.

  • Complies with the "MultiMediaCard (MMC) Electrical Standard, High Capacity" (JESD84-B42) published by the JEDEC Solid State Technology Association.


  • Complies with the "Open NAND Flash Interface Specification, Revision 3.0, 9-March-2011" published by ONFI industry working group.


  • Scalable to contain only required features and minimize memory footprint.

  • Support for read-only API.


  • FAT Long File Name (LFN).

  • Optional FAT journaling module that provides total power fail-safety to the FAT system driver.

  • DOS partitions are supported, so more than one volume can be located on a device.

  • Scalable ordered write-back cache module. Possibility to assign a cache instance to a specific media or a media group permitting better RAM usage.

  • Shell support for file system-oriented commands such as fs_cat, fs_cd, fs_lsblk, fs_ls, fs_mkdir, fs_pwd, fs_rm, etc.

  • File buffers to increase file access speeds.

  • File lock to allow multi-threaded applications.


  • Storage layer decoupled from the Core layer to allow raw accesses to media. The Storage layer can be compiled without the File System Core layer, allowing a possible integration with third-party file systems. Micrium OS USB Device MSC class interfaces to the File System Storage layer enabling the creation of USB MSC devices.

  • SCSI media driver (previously known as MSC driver requiring a USB-Host stack). SCSI driver is agnostic of the lower transport layer. It interfaces to Micrium OS USB Host. It could interface to other transport stacks supporting SCSI protocol.

  • Media polling task in the Storage layer to allow removable media (for instance SD cards and SCSI devices) insertion/removal detection. Callbacks are available to notify application upon removable media detection.

  • Some media drivers (for instance, NOR and NAND drivers) allows a single volume to span several (typically identical) devices, such as a bank of flash chips.

  • Support for parallel and serial NOR flash devices.

  • NAND flash media driver has the following features:

    • Dynamic wear-leveling: using logical block addressing, the driver is able to change the physical location of written data on the NAND flash, so that a single memory location does not wear early while other locations are not used.

    • Error Correction Codes (ECC) management: error correction codes are used to eliminate the bit read errors typical to NAND flash. The NAND flash driver offers a software ECC based on the Hamming code or can use the built-in hardware ECC found on some Micron flash devices.

    • Flexible controller layer: a generic controller driver that is compatible with most parallel NAND flash devices and microcontrollers is provided.

    • Fail-safe to unexpected power-loss: the NAND flash driver was designed so that write transactions are atomic. After an unexpected power-down, the NAND flash’s low-level format will still be consistent, the device will be remounted as if the transaction never occurred.


  • No support for extended partition creation. Thus only 4 partitions can be created on a given block device. Micrium OS File System is anyhow able to read extended partitions.

  • No support for serial NAND flash devices.

  • High capacity MMCPlus cards (> 2GB) are not supported by the File System SD SPI driver.

  • MMC (eMMC) v4.3 and superior dropped support for the SPI interface and as such cannot be used with the File System SD SPI driver. SPI support is optional for MMCplus and MMCmobile cards.