¿Las mejores prácticas para implementar un sistema de archivos flash de sistema operativo simple o ligero?

6

Estoy buscando dispositivos flash que están disponibles para el almacenamiento de datos regrabables, y está claro que necesitan algún tipo de capa de traducción para un sistema de archivos superpuestos (como FAT) o un tipo específico de sistema de archivos diseñado para ellos (como como JFFS2).

Ejemplos:

Esto parece algo tan común, pero no veo muchos recursos (específicamente en la plataforma stm32) para tratar los problemas de solo escritura por página, nivelación de desgaste y monitoreo de bloque defectuoso.

Parece que un sistema como JFFS2 se encargaría de eso, pero no parece que se use mucho fuera del ecosistema de Linux. ¿Cuáles son algunas de las formas más comunes de lidiar con esto en un entorno de sistema operativo más eficiente?

Una característica altamente deseable es la tolerancia a fallas. Por ejemplo, si se desconecta la alimentación durante ciertas operaciones, FAT puede dañarse. Una buena solución debe ser registrada por diario o algo similar.

(Nota: "Escribe lo tuyo" es una respuesta altamente obvia e indeseable)

    
pregunta Daniel

4 respuestas

1

Aquí hay una opción que encontré durante la búsqueda: un sistema de archivos ligero para almacenamiento flash SPI: SPIFFS

No tiene una mala compatibilidad con la administración de bloques, pero parece bastante completo, de lo contrario, ¡es una forma realmente sencilla de leer y escribir archivos!

    
respondido por el Daniel
4

Aunque hace referencia a un chip SPI Serial Flash de 1 MB, creo que es mucho más común ver sistemas de archivos implementados en tarjetas SD extraíbles. Esto tiene dos ventajas: un almacenamiento mucho más grande (GB en lugar de MB), y puede extraer las tarjetas SD y leerlas / escribirlas en una PC.

Una ventaja adicional es que los fabricantes de tarjetas SD de marca como Kingston y SanDisk proporcionan nivelación de desgaste como parte de la arquitectura de la tarjeta SD (pero no cuentan con eso de los fabricantes de tarjetas SD menos costosos).

Microchip (y estoy seguro de que otros proveedores) tiene una biblioteca que puede usar para implementar un sistema de archivos FAT16 o FAT32 en una tarjeta SD. Se describe en esta nota de aplicación AN1045 , "Implementación de funciones de E / S de archivos utilizando el disco de memoria de Microchip Biblioteca de sistema de archivos de unidad ". Obviamente, este será el objetivo de los microcontroladores PIC.

Las rutinas del sector de la tarjeta SD de lectura / escritura de bajo nivel en esta biblioteca probablemente podrían modificarse para que funcionen con un flash serie SPI, pero tendría que hacer su propia nivelación de desgaste y marcas de sector defectuosas que agregarían una gran cantidad de complejidad.

    
respondido por el tcrosley
1

Puede utilizar RL-FlashFS , pero como sabe, esto no es un Opción gratuita y tengo que usar MDK-KEIL como su IDE, tal vez esto sea posible con FAT-FS también.

    
respondido por el Dizgah
-1

Nunca lo usé en mis proyectos, pero eche un vistazo a fat FS lib.

    
respondido por el user3336433

Lea otras preguntas en las etiquetas