به گفته: CNX Software – Embedded Systems News
مجموعه CLI Systems از سیستم UTFS (μTFS) رونمایی کرده است؛ یک سیستم ذخیرهسازی امبدد ساده و سبک که برای میکروکنترلر های کوچک طراحی شده است. برخلاف سیستمفایلهای سنتی مانند FAT32 یا EXT4 و حتی گزینههای سبکتری مثل LittleFS و SPIFFS که در برد هایی مانند ESP32 استفاده میشوند، UTFS بسیار سادهتر است. این سیستم از حافظه پویا (Dynamic Memory) استفاده نمیکند و از ویژگیهای پیچیدهای مانند wear leveling اجتناب میآورد که باعث میشود استفاده از آن در دستگاههایی با منابع محدود بسیار آسانتر باشد.
UTFS برای حافظههای تخت (Flat) و با قابلیت آدرسدهی بایتی، مانند EEPROM خام، صفحات فلش پردازنده یا فلشهای خارجی SPI/I2C طراحی شده است. این سیستم به فریمور های بدون سیستمعامل اجازه میدهد تا بلوکهای داده نامگذاری شده («files») را به صورت پشت سر هم ذخیره کنند. به هر فایل یک هدر ثابت ۲۴ بایتی اضافه میشود که حاوی فرادادههایی مانند شناسهها، اندازهها و امضاهای تعریفشده توسط برنامه است.
| ویژگی | توضیحات |
|---|---|
| اشغال فضا (Footprint) | هدر ثابت ۲۴ بایتی برای هر فایل؛ مصرف صفر از حافظه Heap (بدون نیاز به malloc). |
| قالب (Format) | چیدمان متوالی الهامگرفته از TAR سازگاری رو به جلو (Forward Compatibility) بهگونهای که فایلها میتوانند بعداً بدون برهم زدن چیدمان حافظه موجود اضافه شوند (CAN). |
| استقلال از سختافزار ذخیرهسازی | برای برقراری ارتباط با سختافزار تنها نیاز به پیادهسازی (Port) دو تابع sys_read و sys_write دارد. |
| قابلیت اطمینان | استفاده از امضاهای تعریفشده توسط برنامه (مانند 0xABCD) برای تشخیص حافظه خراب یا مقداردهینشده هنگام اولین فراخوانی تابع utfs_load(). |
| مجوز (License) | متنباز تحت مجوز MIT؛ کاملاً آزاد و بدون محدودیتهای قالبهای انحصاری سازندگان. |
بسیاری از پروژههای میکروکنترلر تمام دادهها را به صورت یک ساختار بزرگ در یک آدرس ثابت EEPROM ذخیره میکنند. این روش ساده است، اما اگر قالب دادهها بعداً تغییر کند، به یک مشکل تبدیل میشود، زیرا دادههای قدیمی ممکن است دیگر قابل استفاده نباشند. از سوی دیگر، سیستمفایلهای کامل مانند FatFs یا LittleFS ویژگیهای پیشرفتهای را ارائه میدهند، اما به حافظه بیشتری نیاز دارند و اجرای آنها روی دستگاههای کوچک سنگین است.

سیستم UTFS در صورت تغییر اندازه فایلها در نسخههای مختلف فریمور، موقعیت دادهها را به طور خودکار تنظیم میکند (سمت چپ) و از یک آدرس پایه سفارشی برای همزیستی ایمن با دادههای قدیمی استفاده میکند (سمت راست).
UTFS جایگاهی بین این دو رویکرد دارد. این سیستم شامل ویژگیهای پیشرفتهای مانند wear leveling یا نوشتنهای اتمی ایمن نیست؛ بنابراین اگر برق در حین ذخیرهسازی قطع شود، دادهها ممکن است به صورت ناقص نوشته شوند، درست مانند نوشتن معمولی در EEPROM. در عوض، با ذخیره دادهها به صورت بلوکهای نامگذاری شده مجزا، همه چیز را ساده نگه میدارد و مدیریت و بهروزرسانی دادهها را در سیستمهای کوچکی که منابع کافی برای یک سیستمفایل کامل ندارند، آسانتر میکند.
اطلاعات بیشتر، از جمله مثالهای عملی برای برد هایی مانند Arduino Uno (ATmega328) که از EEPROM داخلی استفاده میکند و Microchip SAMD20 که از حافظه فلش داخلی بهره میبرد، در صفحه CLI Systems قابل مشاهده است. برای استفاده از UTFS روی سختافزارهای دیگر، کافی است API آن را به توابع خواندن و نوشتن دستگاه خود متصل کنید. کد منبع C99، مثالها و مستندات کامل جهت ادغام در پروژهها در مخزن GitHub مجموعه CLI Systems در دسترس است.

برنامه “Hello World” در UTFS
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.