smxFS, smxFFS, and smxFLog
smxFS is a FAT file system, which supports both fixed and removable media. It uses the Windows-compatible FAT file format so that removable media can be exchanged with PCs and other Windows-compatible file systems. It supports FAT32/16/12 and long file names (VFAT). It has a standard API (fopen(), fread(), etc). It has small code and data footprints and can be easily configured to disable unused options to reduce it further. It offers drivers for:
- USB mass storage
- SD/MMC (SPI or MMC interface, including SDHC
- CompactFlash and ATA/IDE
- Serial NOR
smxFFS is a simple, power fail-safe file system for NAND and NOR flash chips. It supports very large flash devices (up to 256TB), yet has a small memory footprint. It has a similar API to smxFS. It uses a proprietary file structure that works well for flash devices (not Windows-compatible). This reduces media wear and gives better performance. It is only intended to work with raw (unmanaged) board-resident flash. The NAND and NOR drivers are shared with smxFS.
smxFLog is a simple flash logger that provides high-speed, reliable data logging to NAND or NOR flash memory. It has extremely small code and data footprints. Logging data is a common operation in embedded systems, and warrants a good solution. It is a sequential operation consisting of appending data to a file.
NAND and NOR drivers for smxFS and smxFFS do static and dynamic wear leveling and garbage collection, bad block handling, and error detection/correction.