FatFs es una biblioteca de software ligera para microcontroladores y sistemas embebidos que implementa soporte para el sistema de archivos FAT / exFAT . [ 1 ] Escrita en C ANSI puro , FatFs es independiente de la plataforma y fácil de portar a muchas plataformas de hardware como 8051, PIC, AVR, ARM y Z80. FatFs está diseñada para ser segura para subprocesos y está integrada en los sistemas operativos en tiempo real ChibiOS , RT-Thread , ErlendOS, [ 2 ] y Zephyr . [ 3 ]
FatFs se utiliza con mayor frecuencia en sistemas embebidos de bajo consumo donde la memoria es limitada, ya que la biblioteca ocupa poco espacio en la RAM y en el código del programa. En la versión mínima, el código funcional ocupa de 2 a 10 kB de RAM. [ 4 ]
Descripción general
FatFs está diseñado como una capa de sistema de archivos independiente de la plataforma y del medio de almacenamiento con el que se utilice. Esto se logra proporcionando una interfaz de acceso al medio que se utiliza para comunicarse con el módulo de control del dispositivo de almacenamiento, proporcionado por el implementador. [ 5 ] Esto significa que FatFs puede funcionar con cualquier dispositivo físico, como una tarjeta SD o un disco duro, en cualquier plataforma que pueda ejecutar código C estándar , siempre que el implementador proporcione una interfaz de módulo de control.
Arquitectura

La arquitectura de la biblioteca FatFs separa lógicamente las abstracciones de la aplicación de usuario y el código dependiente de la plataforma. La aplicación de usuario y la capa de E/S de disco de bajo nivel ( controlador ) deben ser agregadas por el implementador. [ 5 ] : 11 Además, la arquitectura de la biblioteca implica que el sistema puede tener varios dispositivos de almacenamiento con diferentes controladores y la biblioteca puede funcionar en un sistema operativo multihilo. A nivel de aplicación, se oculta qué medio físico se utiliza.
En la implementación mínima, la capa del controlador debe admitir al menos estas 3 interfaces: [ 5 ] : 14
disk_status— devolver el estado del dispositivo de bloques (no inicializado, faltante, protegido, listo)disk_initialize— inicializar el disco físicodisk_read— leer bloque del disco físico
Este nivel de abstracción permite a los desarrolladores escribir una aplicación una sola vez y luego portarla a diferentes plataformas, cambiando únicamente la implementación del controlador. [ 6 ]
Licencia
FatFs tiene su propia licencia minimalista [ 7 ] similar a la licencia BSD . Permite su uso en productos comerciales sin revelar el código fuente . [ 5 ] : 12 La única condición es mantener el aviso de copyright en caso de redistribución del código fuente. Las condiciones de la licencia FatFs no cubren ninguna redistribución en formato binario, como código incrustado y archivos hexadecimales.
Proyectos que utilizan FatFs
- Arduino (STM32Duino) — puerto de la plataforma Arduino para microcontroladores STM32 [ 8 ]
- ChibiOS/RT : sistema operativo en tiempo real (RTOS) de código abierto para microcontroladores.
- Flipper Zero : dispositivo multiherramienta portátil de código abierto
- Marlin (firmware) : firmware de código abierto para impresoras 3D y máquinas CNC.
- ESP-IDF: marco de desarrollo oficial de IoT para los SoC de la serie ESP32 [ 9 ]
- Prusa Mini : firmware de código abierto para impresoras 3D de bajo coste.
- RT-Thread — sistema operativo de tiempo real de código abierto para sistemas embebidos [ 10 ]
- Zephyr : sistema operativo en tiempo real para sistemas embebidos que admite múltiples arquitecturas.
- ErlendOS: un sistema operativo minimalista de código abierto similar a UNIX para sistemas embebidos.
- EZ-Flash Omega: Familia de cartuchos flash para la Nintendo Game Boy Advance.
Referencias
- ↑ Iván Cibrario Bertolotti (2016). Desarrollo de software integrado; El enfoque de código abierto . Hormigueo Hu. pag. 361.ISBN 9781466593930OCLC 932464067
- ↑ "erlends-os / kmod / fatfs" . GitLab . Consultado el 16-11-2023 .
- ↑ Yi Qiu (2020). Diseño e implementación del sistema operativo de subprocesos en tiempo real . Xiong Puxiang, Tianlong Zhu. pág. 361. ISBN 9780367554866OCLC 1197810565
- ↑ "Tabla comparativa del uso de memoria de FatFs" . elm-chan.org . Consultado el 17 de junio de 2022 .
- 1 2 3 4 "Desarrollo de aplicaciones en STM32Cube con FatFs" (PDF) . STMicroelectronics . Consultado el 22 de junio de 2022 .
- ↑ Beningo, Jacob (2017). Desarrollo de firmware reutilizable: un enfoque práctico para API, HAL y controladores . pág. 255. ISBN 9781484232972OCLC 1484232976
- ↑ "Licencia FatFs" . elm-chan.org . Consultado el 17 de junio de 2022 .
- ↑ "Descripción de la biblioteca FatFs en la documentación de la plataforma Arduino" . Sitio web oficial de Arduino . Consultado el 17 de junio de 2022 .
- ↑ "Compatibilidad con el sistema de archivos FAT - ESP32 - — Guía de programación ESP-IDF, documentación más reciente" . docs.espressif.com . Consultado el 27 de junio de 2022 .
- ↑ "Configuración del sistema de archivos FatFs en el sistema operativo rt-thread" . www.rt-thread.io . Consultado el 26 de junio de 2022 .
- Bibliotecas informáticas
- Software para microcontroladores