μTFS (UTFS) — MCU'lar için Sıfır Bellek Tahsisli Hafif Dosya Sistemi / μTFS (UTFS) — A Zero-Allocation Lightweight File System for MCUs


:türkiye: Genel Bakış

CLI Systems, gömülü cihazlar için tasarlanmış hafif ve sıfır dinamik bellek tahsisli bir depolama sistemi olan μTFS (UTFS)'yi duyurdu. FAT32, EXT4 veya LittleFS gibi geleneksel dosya sistemlerinin aksine UTFS, dinamik bellek kullanmıyor ve aşınma dengeleme (wear leveling) gibi karmaşık özellikler içermiyor. Bu sayede kaynak kısıtlı MCU’larda doğrudan, sade bir veri depolama çözümü sunuyor.

Neden UTFS?

Mikrodenetleyici projelerinde yaygın iki yaklaşım var: tüm veriyi sabit bir EEPROM adresinde tek büyük yapı olarak tutmak veya FatFs/LittleFS gibi tam özellikli dosya sistemleri kullanmak. Birinci yöntem firmware güncellemelerinde veri formatı değişikliklerini kırar; ikincisi küçük sistemler için fazla ağır. UTFS bu iki uç arasında konumlanıyor — isimli veri bloklarını sıralı olarak depolayan, TAR formatından ilham alan sade bir ara katman.

Teknik Özellikler

  • Ayak İzi: Dosya başına sabit 24 baytlık başlık; heap kullanımı sıfır (malloc yok)
  • Format: TAR’dan ilham alınan sıralı düzen; mevcut bellek yerleşimini bozmadan sonradan dosya eklenebiliyor (ileriye dönük uyumluluk)
  • Donanım Bağımsızlığı: Yalnızca iki fonksiyon eklenerek herhangi bir donanıma taşınabiliyor — sys_read ve sys_write
  • Hedef Bellek: Ham EEPROM, CPU flash sayfaları veya harici SPI/I²C flash gibi byte adreslenebilir düz bellekler
  • Güvenilirlik: Uygulama tanımlı imzalar (örn. 0xABCD) ile bozulmuş veya başlatılmamış depolama ilk utfs_load() çağrısında tespit ediliyor
  • Lisans: MIT Lisansı — tamamen açık kaynak

Sınırlamalar

UTFS kasıtlı olarak basit tutulmuş. Aşınma dengeleme veya güvenli atomik yazma desteği yok; kayıt sırasında güç kesilirse veri kısmen yazılmış kalabilir. Tıpkı standart EEPROM yazımında olduğu gibi.

Desteklenen Platformlar

Arduino Uno (ATmega328 dahili EEPROM) ve Microchip SAMD20 (dahili flash) için hazır örnek kodlar mevcut. Başka bir donanıma taşımak için yalnızca sys_read ve sys_write fonksiyonlarını bağlamak yeterli. C99 kaynak kodu, örnekler ve belgelendirme GitHub’da açık.

Deneyap Kart gibi MCU tabanlı platformlarda konfigürasyon verisi, kalibrasyon parametreleri veya küçük veri setlerini bellekte yönetmek sık karşılaşılan bir problem. UTFS, bu tür kullanım senaryoları için FatFs veya LittleFS’ten belirgin biçimde daha hafif ve taşınabilir bir alternatif sunuyor.


:united_kingdom: Overview

CLI Systems has released μTFS (UTFS), a lightweight, zero-allocation storage system for embedded devices. Unlike FAT32, EXT4, or even lighter options like LittleFS and SPIFFS, UTFS avoids dynamic memory entirely and deliberately omits complex features like wear leveling — making it a straightforward data storage solution for severely resource-constrained MCUs.

Why UTFS?

Two common approaches dominate MCU storage: storing all data as a single large structure at a fixed EEPROM address, or using full-featured file systems like FatFs/LittleFS. The first breaks on firmware updates when data formats change; the second is too heavy for small devices. UTFS sits in between — a TAR-inspired sequential layout that stores named data blobs without requiring heap allocation.

Specifications

  • Footprint: Fixed 24-byte header per file; zero heap usage (no malloc)
  • Format: TAR-inspired sequential layout; forward-compatible — files can be added later without breaking existing memory layouts
  • Storage Agnostic: Requires porting only two functions to any hardware: sys_read and sys_write
  • Target Memory: Flat, byte-addressable media — raw EEPROM, CPU flash pages, or external SPI/I²C flash
  • Reliability: Application-defined signatures (e.g., 0xABCD) detect corrupt or uninitialized storage on the initial utfs_load() call
  • License: MIT License — fully open source

Limitations

UTFS is intentionally minimal. There is no wear leveling and no safe atomic write support — if power is lost during a write, data may be partially written, just like with standard EEPROM writes.

Supported Platforms

Working examples are available for Arduino Uno (ATmega328 built-in EEPROM) and Microchip SAMD20 (internal flash). Porting to any other hardware requires only connecting sys_read and sys_write. C99 source code, examples, and full documentation are available on GitHub.

Managing configuration data, calibration parameters, or small datasets in non-volatile memory is a recurring problem on MCU-based platforms like Deneyap Kart. UTFS offers a meaningfully lighter and more portable alternative to FatFs or LittleFS for exactly these kinds of use cases.

:open_book: Full article: UTFS is a lightweight, zero-allocation file system for embedded devices - CNX Software
:laptop: GitHub: GitHub - clisystems/utfs: UTFS a Tar-like Embedded File System · GitHub
:page_facing_up: Intro: UTFS a Tar-like File System for Embedded Systems | CLI Systems

1 Like