Доброго дня! К АРМ2388 с FreeRTOS пристегнул FatFS. Юзаю Sd-карту SDHC Transcent 4Gb. Столкнулся с проблемой определения количества свободных кластеров на карточке. С помощью функции FatFS f_mkfs(0, 0, 1024) в устройстве форматирую карточку под FAT32. Затем мне надо было заполнить часть памяти мусором- стал записывать на компе (ОС WinXP) на карточку авишки. В процессе экспериментов выяснилось, что количество свободных кластеров, которые считываются с сектора 64 по смещению 0x1E8(Структура FSInfo), не изменяется. Причем сначала вроде меняются, а потом стопорится на каком-либо числе, даже стирания всех файлов не приводит к изменению этого числа. После записи каждого файла проверяю этот сектор с помощью Victoria, но при этом средствами Windows (свойства логическог диска) я вижу, что размер-то свободного места на карточке меняется... А в устройстве функция FatFS f_getfree("0:/", &SDMemoryRemains, &fs) дает такое же число(которое неизменяемое, т.е. неправильное). Почему такое происходит? Почему перестает обновляться количество свободных секторов в секторе 64 ? Я ж в устройстве на арме не могу каждый раз полностью пересчитывать кол-во свободных секторов- это занимает слишком много времени.
Сообщение отредактировал M0HAX - May 16 2013, 13:27
|