Estou trabalhando em um dispositivo que usa a biblioteca Microchip MDDFS para armazenar dados em um cartão SD. O criador de logs registrará dados a uma taxa máxima de 1 entrada (56 bytes) a cada minuto. O problema é que o dispositivo pode perder energia a qualquer momento, potencialmente no meio de uma sequência de gravação. Gostaria de saber qual é a melhor maneira de proteger meus dados contra corrupção. Descobri que, se o arquivo é aberto quando a energia é perdida, todos os dados que foram gravados no arquivo após o último fechamento do arquivo são perdidos. Não sei se o mesmo vale se a energia for perdida no meio da sequência de gravação.
Como o procedimento de gravação não ocorre com muita frequência, eu poderia abrir o arquivo, gravar os dados e depois fechar o arquivo, toda vez que os dados forem registrados. Essa abordagem danificaria o cartão SD ao longo do tempo?
Outra abordagem seria manter o arquivo aberto, mas após cada 10 ou 50 gravações eu poderia fechar o arquivo e reabri-lo.
Eu também poderia armazenar dados em buffer na memória e liberá-los ocasionalmente, talvez depois de um kbyte.
A última idéia que tive foi que, no meu circuito, eu poderia adicionar um capacitor grande que forneceria energia ao meu cartão pic / sd por tempo suficiente após a energia ser desconectada para fechar rapidamente o arquivo. O problema com essa abordagem é que o tempo necessário para fechar o arquivo e / ou salvar os dados é muito inconsistente. Pelo que entendi, esse tempo pode depender muito do local atual em uma página flash em que o arquivo está.
Enfim, o que vocês sugerem?