Я работаю на устройстве, которое использует библиотеку Microchip MDDFS для хранения данных на SD-карту. Регистратор будет регистрировать данные с максимальной скоростью 1 запись (56 байт) каждую минуту. Проблема в том, что устройство может потерять питание в любое время, возможно, в середине последовательности записи. Мне интересно, как лучше защитить мои данные от коррупции. Я обнаружил, что если файл открыт при отключении питания, все данные, которые были записаны в файл после последнего закрытия файла, теряются. Я не знаю, верно ли то же самое, если мощность теряется в середине последовательности записи.
Поскольку процедура записи происходит не очень часто, я могу открыть файл, записать данные, а затем закрыть файл, каждый раз, когда данные регистрируются. Повредит ли этот подход SD-карте со временем?
Другим подходом может быть сохранение файла открытым, но после каждых 10 или 50 операций записи я могу закрыть файл, а затем снова открыть его.
Я мог бы также буферизовать данные в памяти, а затем иногда сбрасывать данные, возможно, после килобайта или около того.
Последней идеей, которую я имел, было то, что в моей схеме я мог добавить большой конденсатор, который обеспечивал бы питание моей карты Pic / SD достаточно долго после отключения питания, чтобы быстро закрыть файл. Проблема этого подхода заключается в том, что время, необходимое для закрытия файла и / или сохранения данных, очень противоречиво. Насколько я понимаю, это время может сильно зависеть от текущего места на флэш-странице, в которой находится файл.
В любом случае, что бы вы предложили, ребята?