Sistema de archivos Petit FAT con un MSP430

4

¿Hay alguna forma de borrar un archivo en el formato petitFAT? Lo que se me ocurrió es esto:

void SDerase(void)
{
    for(;;){
        res = pf_write("
void SDerase(void)
{
    for(;;){
        res = pf_write("%pre%", 1, &bw);
        if(res || !bw) break;
    }
}
", 1, &bw); if(res || !bw) break; } }

Así que esto básicamente escribe caracteres NULOS en los archivos hasta que llega al final. Funciona bien, pero es un poco lento. Borrar un archivo de 100 kb toma aproximadamente 1,5 segundos. Usaré archivos más grandes más tarde, posiblemente unos pocos megabytes, por lo que este método tomaría mucho tiempo. ¿Hay otro método para borrar un archivo (.csv o .txt) con el sistema de archivos petitFAT?

    
pregunta user2218339

1 respuesta

2
  

Estoy tratando de registrar algunos datos, así que si no los borro, a veces es   Es difícil decir dónde terminan los nuevos datos.

Si está registrando datos ASCII, esto no es un problema. Simplemente reserve caracteres especiales para 'los datos comienzan aquí' y 'los datos terminan aquí'. Incluso si estás registrando datos binarios, puede valer la pena cambiar la codificación a algo como base64 ( enlace ) para hacerte especial. caracteres para controlar su secuencia de datos (las tarjetas de memoria GB son baratas y base64 solo introduce un 33% de sobrecarga de datos).

Como alternativa, puede tener un archivo adicional que contenga los límites de datos para sus archivos de registro como una cantidad de bytes. Sin embargo, esto será un problema con una interfaz tan limitada como petitFAT, ya que solo puede abrir un solo archivo a la vez. Dependiendo de la cantidad de RAM y memoria de programa que pueda ahorrar en su MSP430, puede considerar cambiarse a una implementación FAT con más funciones.

  

Si llamo a la función pf_write por interrupción del temporizador, ¿cómo puedo hacer   escribelo a MMC? Por lo que he leído, parece que tengo que   ¿Terminar de escribir y reiniciarlo de nuevo? Por ejemplo, esta línea pf_write (0,   0, & bw);

En un registrador simple que no hace nada más que escribir secuencialmente en un solo archivo, no debería tener que llamar a pf_write(0,0,&bw) hasta que cierre su dispositivo por completo. (Puede o no ser necesario hacerlo antes de buscar otra posición).

Si absolutamente quieres mantener tu idea de 'sobrescribir todo el archivo', puedes probar si primero obtener el tamaño del archivo y luego escribir bloques más grandes de %code% s en lugar de bytes simples te da una aceleración significativa.

    
respondido por el us2012

Lea otras preguntas en las etiquetas