UTFS (micro TAR File System) es un sistema de archivos minimalista desarrollado por CLI Systems, pensado para organizar datos en memorias no volátiles de microcontroladores, como flash o EEPROM, con un espacio de direcciones plano. Su objetivo es separar la capa de almacenamiento de las estructuras de datos de la aplicación, de modo que distintas partes del firmware puedan evolucionar de forma independiente sin obligar a recompilar el resto del proyecto.
El artículo describe el problema clásico: definir una estructura fija en C con todos los parámetros (número de serie, ajustes de subsistemas, datos de configuración) provoca que cualquier cambio de tamaño, como alargar un campo de 8 a 16 bytes, rompa la compatibilidad con los datos ya guardados en el dispositivo. UTFS resuelve esto inspirándose en el formato TAR de los años setenta, diseñado para cintas magnéticas: una cabecera seguida de bloques de datos. Para ajustarse a los recursos de un microcontrolador, la cabecera se reduce de 512 a 24 bytes, con 12 bytes reservados al nombre de archivo (hasta 11 caracteres más el terminador \0). Además, se elimina el paradigma open/close, ya que las operaciones típicas son cargar, modificar y guardar todo el bloque en RAM.
La interfaz se basa en punteros a estructuras en memoria: el desarrollador registra cada "archivo" con un nombre, un puntero a su buffer y su tamaño. Una llamada a utfs_load() recupera los datos del medio; utfs_save() los reescribe completos, reajustando posiciones. Si la estructura en RAM cambia de tamaño, UTFS carga o guarda solo el tamaño que coincide, evitando desbordamientos. Cada archivo incluye una variable signature de 16 bits para que la aplicación gestione versiones y migre los datos entre revisiones.
