TREEspan File System
Embedded Transactional Flash File System
TREEspan File System Specifications
Transactional interface. Write operations can be grouped into atomic write transactions so as to enforce strictly defined behaviour and guarantee data integrity despite untimely interruptions such as power losses and errors.
Snapshot support. Snapshots provide a space-efficient way of saving an entire file system state that can be later accessed or reverted to. Frozen versions of files and directories, isolated from potential concurrent updates, can thus be read from, protecting the application against data corruption induced by file system access race conditions.
Low RAM usage. The minimum amount of RAM required by TSFS is 4 KiB, independent of the size of the underlying media or the number/size of stored files.
Native flash support. Unlike other conventional file systems such as FAT or exFAT, TSFS does not require an extra flash adaptation layer to run on bare flash memories. From an application designer standpoint, this translates into reduced resource usage, complexity and costs.
Dynamic and static wear-levelling. Flash support includes both static and dynamic wear-levelling, maximizing the flash device lifetime, independent of the application’s access patterns.
High-speed random access. TSFS is designed such as to provide the highest possible net random write throughput on all supported storage technologies, while maintaining balanced read/write performances, even on devices with inherent asymmetrical read/write throughput.
Low worst case write latency. TSFS manages internal workloads, such as flash wear levelling, so as to prevent unpredictable delays at the application level. A strict upper bound on worst case write latency makes TSFS a solution of choice for real-time applications.
Multiple media support. TSFS supports a variety of media, including NOR and NAND flash, SD/MMC and nonvolatile RAM-like technologies such as MRAM and FRAM.
Virtually unlimited files and file sizes. TSFS uses 64-bit wide sizes, addresses and file IDs to support even the most extreme storage size requirements.
Consistent and robust error handling. Functions that can fail always return an error as the C functions return value. TSFS tries to return to the caller on an error condition to give the application developer maximum flexibility in handling fatal errors.
ISO/IEC 9899:1999 compliant C code. TSFS is distributed in ISO/IEC 9899:1999 compliant source code.
Reduced application complexity. TSFS’s transactional nature makes the application development easier by providing a centralized and uniform way of dealing with unexpected failures, avoiding complex, error-prone, ad hoc application-level recovery schemes.
Reduced risk and time to market. Because it can be deployed with minimal resource usage, on top of a wide array of storage technologies, TSFS enables flexible and resilient development processes, immune to last-minute hardware design modifications.
High-reliability. TSFS transactional design guarantees performant, fail-safe operations ready to support mission-critical applications.
Platform and OS agnostic. TSFS is not tied to any RTOS or platform and can be deployed anywhere, as long as the minimum requirements are met.
High-scaleability. TSFS is designed to support a wide range of applications, ranging from low-power designs based on modest
processors with a few megabytes of sparsely accessed storage, to even the heaviest workloads, involving terabytes of data and strict performance requirements.
Progressive learning curve. TSFS basic features are mostly exposed through a conventional, POSIX-like, file API, allowing for a quick initial approach and deployment.
Versatile and future proof. Thanks to its native flash support and modular design, TSFS can be deployed on top of almost any storage technology, including emergent technologies such as MRAM and FRAM.
- 32 or 64-bit architecture is recommended for optimal performance.
- RAM and ROM requirements are dependent on the underlying media technology and performance expectations. The strict minimum is 4 KiB but more RAM can be used to improve overall performances. ROM usage is approximately 30 KiB.
- Supported media include RAM disk, NOR, NAND, SD/MMC, MRAM, and FRAM
- ISO/IEC 9899:1999 (a.k.a C99) compliant compiler.