Estoy tratando de resolver este problema. Estoy usando FATFS13 en mi placa STM32F469 personalizada y estoy usando la biblioteca de periféricos estándar.
He conectado 1 MB de SRAM a través del bus FMC y una tarjeta SD a través del bus SPI. Puedo montar en ambos hardware un sistema de archivos FAT, FAT12 en la RAM y FAT32 en la SD. Probé tarjetas SD de hasta 32 GB, así que puedo decir que todo está funcionando. Es posible administrar archivos en cada volumen. Los nombré RAMDISK y SDCARD en ffconf.h
Básicamente, quiero dos unidades para que el usuario pueda copiar archivos gráficos en la SRAM para un acceso más rápido durante la ejecución de los programas.
El problema es que cuando intento copiar un archivo de una unidad a otra, solo se copia la primera parte de los datos. Un solo ciclo: - leer de la fuente - copia a dest - leer de la fuente - > Error 9 en la fuente ((9) El objeto de archivo / directorio no es válido).
Intenté profundizar en el código, y con el depurador noté que después de escribir en el archivo de destino cuando es el momento de leer el segundo fragmento de datos, el 'obj- > fs- > fs_type' del el archivo de origen se establece en 0. Por lo tanto, la validación falla.
No puedo entender por qué. ¿Tuviste una experiencia similar?
Para evitar este error, necesito tener un solo archivo abierto por vez, por lo que resolví temporalmente el problema con esta secuencia: - fuente abierta - Leer chunck de datos en offset - fuente cercana - Destino abierto para añadir - Guardar parte de los datos - destino cercano.
Según su experiencia, ¿hay alguna forma particular de realizar una copia correcta en diferentes volúmenes?
Gracias.