yurmala 0 6 ноября, 2012 Опубликовано 6 ноября, 2012 · Жалоба Тут еще зависит от конкретного компилятора (возможности оптимизатора). Действительно, ASM-листинги в помощь. Хотя бы для типовых операций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M0HAX 0 16 мая, 2013 Опубликовано 16 мая, 2013 (изменено) · Жалоба Доброго дня! К АРМ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 ? Я ж в устройстве на арме не могу каждый раз полностью пересчитывать кол-во свободных секторов- это занимает слишком много времени. Изменено 16 мая, 2013 пользователем M0HAX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 16 мая, 2013 Опубликовано 16 мая, 2013 · Жалоба А если в винде карточку "безопасно извлечь" и снова вставить - тоже не меняется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M0HAX 0 17 мая, 2013 Опубликовано 17 мая, 2013 (изменено) · Жалоба не зависит. может перестать обновлять даже,если 2 файла подряд запишишь на карточку. Между 2-мя файлами проверишь кол-во свободных кластеров,вроде норм, потом после 2-ого файла(карточку вообще не извлекал) проверяю - осталось прежнее число. Извлекаешь методом безопасного извлечения,втыкаешь, результат тот же ,печальный. Стираешь все файлы с карточки - тоже число не меняется, пока не отформатируешь заново. Счас поменяю кардридер,может здесь закрался подвох.. ПС. Точно, кардридер на компе - дерьмо, подключил другой кардридер - все ок. Пока такого эффекта не обнаружилось Изменено 17 мая, 2013 пользователем M0HAX Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться