ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
924628 Топик полностью
maizezoidberg (31.05.2019 14:50, просмотров: 202) ответил Vit на стабильно
Вообще цикл записи максимально обезопасил.  Врубаю питание карты, инициализирую FS, пишу реально 16 блоков по 2048 байт (на нижнем уровне они бьются по 512 в выровненный буфер и летят на запись), двигаю файловые индексы, закрываю файл, размонтирую ФС и отключаю карту от линии. На линии питания карты стоит конденсатор 10 мкФ, смотрел осциллографом - дерганий на линии не увидел. Карты умирают разным образом. Либо карточка пуста и в ней выставляется ReadOnly флаг, что уже ничего не может её прочитать нигде, либо слетает FAT и на карте кучища файлов с битыми названиями, будто я продолжаю писать данные в "разметку" FAT. Всё осложнено редким проявлением бага. Если пускаю синтетику, например гоняя карту туда сюда в цикле "INIT -> WRITE(512) -> DEINIT" - данные не битые. В целом, прибор пишет на карту 1 полные сутки 24 часа данные с периодичностью раз в 1 минуту, объемом 1 мегабайт. Сейчас на всякий случай проверил себя по спецификации SD Association версии 3.00, каких-то новшеств в инициализации не заметил. Карточки Transcend HC Class 10 и KINGSTON такие же... Блок на карте размечен заголовком, описателем, данными и добиваю нулями до 2048 байт. Структура блока всегда остается целой, бьются именно данные в нем. Но непосредственно перед записью чекаю весь блок по CRC. Для дебага чекаю еще и после записи. PrevCRC == CurrCRC :(