4 votos

Petit sistema de archivos FAT con un MSP430

Hay una manera de borrar un archivo en el petitFAT formato? Lo que encontré es este:

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

Así que básicamente esto escribe caracteres NULOS a los archivos hasta que llega al final. Funciona bien, pero es un poco lento. Borrado de un 100 kb archivo tarda aproximadamente 1,5 segundos. Voy a estar usando archivos más grandes, más tarde, posiblemente un par de megabytes, por lo que este método tardaría años. Hay otro método de borrado de un archivo (.csv o .txt) con el petitFAT sistema de archivos?

2voto

user25026 Puntos 1

Estoy tratando de registro de algunos datos, por lo que si no tengo claro, es que a veces difícil decir donde los nuevos datos extremos.

Si el registro de datos ASCII, esto no es un problema. Simplemente reserva especial de caracteres de datos empieza aquí' y 'datos termina aquí'. Incluso si el registro de datos binarios, puede ser vale la pena cambiar la codificación a algo como base64 ( http://en.wikipedia.org/wiki/Base64 ) a la red de caracteres especiales para el control de la secuencia de datos (GB tarjetas de memoria son baratos, y base64 sólo presenta un 33% de la sobrecarga de datos).

Alternativamente, usted podría tener un archivo que contiene los datos de los límites para los archivos de registro como una serie de bytes. Esto va a ser una molestia con una interfaz tan limitado como petitFAT a pesar de que, como sólo se puede abrir un solo archivo a la vez. Dependiendo de cuanta memoria RAM y la memoria de programa puede repuesto en su MSP430, usted puede considerar mudarse a un lugar más rico en características de la GRASA de la aplicación.

Si llamo a la pf_write función de temporizador de interrupción, ¿cómo puedo realmente escribir a MMC? Por lo que he leído, me parece que se han a terminar de escribir y reiniciar de nuevo? por ejemplo, esta línea pf_write(0, 0, &bw);

En un simple registrador de que no hace nada, pero escribir de forma secuencial en un solo archivo y no es necesario llamar a pf_write(0,0,&bw) hasta apagar el dispositivo completamente. (Puede o no ser necesario hacerlo antes de buscar a otra posición).

Si usted no quiere seguir con su 'sobrescribir todo el archivo" idea, podrías probar si primero obtener el tamaño del archivo y, a continuación, escribir grandes bloques de la \0s en lugar de bytes solo le da una aceleración significativa.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X