InvisibleFed 0 4 мая, 2008 Опубликовано 4 мая, 2008 · Жалоба Идем дальше, как говорится... Имею на руках две флешки: SanDisk TransFlash через переходник 32 мб и Kingston 1гб (SD, естественно). При записи на флешь наблюдаю странную картину. После подачи пары CRC-байт в конце посылки сектора (шлю FF, т. к. CRC не использую), шлю холостые байты в ожидании Data Response (в случае успешной записи должно быть XXX00101). Так вот SanDisk такое выдает, а Kingston - нет. Последняя вообще ничего не выдает вслед за парой CRC - один лишь вечный '0'. Хотя в обоих случаях фактическая запись происходит (потом считывал). В случае с Kingston, правда, не понятно пока с какого раза - там в программе в случае неполучения правильного Data Response производится повторная запись с самого начала команды (и так 4 раза). В чем может быть причина? И еще вопрос. Для SanDisk после того как карта вернула XXX00101, заряжаю "пустышки" (байты с FF), пока не получу в ответ что-нибудь отличное от нуля (карта висит в Busy, как я понимаю). Так вот это время ну уж очень болшое! Команду и 512 байт информации выпуливаются у меня меньше чем за 500 мкс. А busy висит все 3000 мкс! Это ведь ненормально много?! Или я не прав? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 15 мая, 2008 Опубликовано 15 мая, 2008 · Жалоба Добрый день. Не хотел создавать новую тему, так как эта показалась подходящей. Вопрос в следующем. При поиске имени файла в области каталогов, когда можно быть уверенным что дальше искать смысла нет. Имеется в виду, следующее. Есть гарантия что при обнаружении пустой записи ( например не все 32 байта обнулены, а только первый символ = 0) за ней не будет какой-нибудь еще валидной записи??? Просто когда флешка пустая (только форматнули), область каталогов занулена. И при поиске файла (на предмет похожего имени) на 8-битнике да 1 гиговой флешке (где секторов под корень отведено много), происходит долгий поиск. Вот думаю останавливать поиск при обнаружении в имени файла первого символа = 0. Правомерно ли это??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 15 мая, 2008 Опубликовано 15 мая, 2008 · Жалоба Вот думаю останавливать поиск при обнаружении в имени файла первого символа = 0. Правомерно ли это??? Правомерно: по стандарту FAT, 0x00 в первом символе имени файла является признаком конца директории. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 15 мая, 2008 Опубликовано 15 мая, 2008 · Жалоба Правомерно: по стандарту FAT, 0x00 в первом символе имени файла является признаком конца директории. Огромное спасибо за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 10 сентября, 2008 Опубликовано 10 сентября, 2008 · Жалоба Добрый день. Может быть я плохо искал по форуму или по документации на SD карты, но на свой вопрос ответа не нашел. Вернее что-то нашел. В частности у людей есть разброс во времени записи сектора от нескольких ms до сотен ms. В моем случае (мне необходимо при пропадании входного напряжения успеть скинуть свой промежуточный буфер в 512 байт на карту) карта за 20ms не успевает скинуть блок данных. Ток потребления и так на предельном минимуме, остается наращивать входную емкость. Вот и хочу понять какую минимально достаточную поставить (нехочу ставить банку в 1000uF :). Сколько времени SD/MMC карты тратят максимально на запись блока в 512 байт??? Сколько минимально возможно времени тратят на запись??? В документации напоролся на фразу из которой я понял что на запись карта может потратить до 250mS времени. Ужасно много. Может есть более конкретные данные (то что я прочел оказалось где-то в середине документа, а не в таблице электрических и временных характеристик)????? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 10 сентября, 2008 Опубликовано 10 сентября, 2008 · Жалоба С посекторной записью в SD вопрос неприятный. Мне попадались карты, куда писались данные посекторно со скоростью 7 кбайт/с, хотя другие писали 80 кбайт/с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyS 0 10 сентября, 2008 Опубликовано 10 сентября, 2008 · Жалоба С посекторной записью в SD вопрос неприятный. Мне попадались карты, куда писались данные посекторно со скоростью 7 кбайт/с, хотя другие писали 80 кбайт/с. Да, но это все же больше чем 2 ms на запись куска в 512 байт. Я столкнулся с тем, что за 2 ms карточка данные на флешь не сбросила, хотя и "всосала" их в себя. Время работы всего процесса 4 ms. За 2 ms я все выплевываю в SD, и по осцилограмме вижу еще 2.4 ms до момента пропадания питания есть у карты. Но после прочтения данных, своего куска информации в файле не обнаруживаю. Затянул процесс до сотен ms. Данные в файле получил. Но банка болшая получилась. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yachnyymaxim 0 15 сентября, 2008 Опубликовано 15 сентября, 2008 · Жалоба Доброго дня. Имею аналогичную проблему с MicroSD картой. Начинаю писать на нее поток данных со скоростью примерно один сектор в 110 мс. Пишет корректно, однако один раз в 28 секунд (это я замерял, какое-то магическое числ небось) карточка держит сигнал BUSY слишком долго (до 80 мс), хотя в остальное время BUSY пропадает практически сразу после записи. Вот уже несколько дней думаю о причинах такого поведения, но как-то ничего не придумывается. Может кто знает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 15 сентября, 2008 Опубликовано 15 сентября, 2008 · Жалоба 28/0.11 = 254. Ну очень похоже на 256 - размер какого-нибудь блока флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yachnyymaxim 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба 28/0.11 = 254. Ну очень похоже на 256 - размер какого-нибудь блока флеш. Ну в таком случае это какой-то блок из 256 секторов - но я нигде не видел упоминание об этом. И еще - я пишу непрерывно, начиная с 66 сектора в файле на карте, а этот 66 сектор файла смещен относительно начала карточки на 95 секторов. Получаем начало в 161 секторе от начала карточки. Отладчикм посмотрел, что длительное ожидание происходит на 373 секторе файла, т.е. на 534 секторе от начала карточки. Но ведь это явно не блок, и явно не кратно 256. Короче, полная загадка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yachnyymaxim 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба И еще интересный момент. В вышеописанных условиях первый сбой происходит на 373 секторе, а вот следующий сбой - на 629, т.е. с интервалом 256 секторов!!! Из любопытства уменьшил интервал записи секторов с 110 мс до 96. Получил первый сбой на 253 секторе (как-то не пропорционально с интервалом получилось), а вот следующий - на 509 - снова через 256 секторов!!! Что за магическое число 256 секторов для SD карты и почему так происходит вообще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 16 сентября, 2008 Опубликовано 16 сентября, 2008 · Жалоба У меня тоже проблемы с недетерменированностью времени записи :05: :05: Пока так и не решил проблемму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 сентября, 2008 Опубликовано 18 сентября, 2008 · Жалоба Что за магическое число 256 секторов для SD карты и почему так происходит вообще? На этой границе карта может выполнять стирание следующего блока, контроль целостности данных в только что записанном и т.п. 256 - магическое число только для данной конкретной карты. Контроллер SD-карты весьма сложная штука, ждать от него детерменированного времени записи нельзя, нужно буферизировать данные со своей стороны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 18 сентября, 2008 Опубликовано 18 сентября, 2008 · Жалоба На этой границе карта может выполнять стирание следующего блока, контроль целостности данных в только что записанном и т.п. 256 - магическое число только для данной конкретной карты. Контроллер SD-карты весьма сложная штука, ждать от него детерменированного времени записи нельзя, нужно буферизировать данные со своей стороны. Я это безусловно и так делаю... вот только я никак не могу определить размер при котором все гарантироваано успеется записаться. Ну не мегабайт же мне выделять, при том, что я пишу пачками по 150 байт за раз и в 99% случаев он записать эти 150 байт успевает еще до того как новые 150 байт накопятся с АЦП. Весь вопрос в этом 1 % случаев... мегабайта конечно хватит, но я не готов в крохотном МСП430 выделять 1М памяти чтоб он простаивал попросту. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LCD 0 2 октября, 2008 Опубликовано 2 октября, 2008 (изменено) · Жалоба Здравствуйте. Делаю поддержку флешек microSD на MSP430. Сначала использовал легкодоступный Sham176.zip. Все работало практически без глюков, но флешки более 512 МБ эта библиотека не видела, поэтому я решил портировать FatFs (не tiny). Взял diskio отсюда, переделал, чтобы он работал на F1611 и получил кучу глюков, убив кучу времени. Один из них - карточка инициализируется строго через раз, или каждый раз, если ее вынуть-вставить. А сначала вообще инициализировалась когда хотела, обычно на 10 неудачных попыток была одна удачная. После чего она стала работать через раз - уже не помню. Конечно, можно всю инициализацию засунуть в цикл, но мне кажется, что это - "костыли". Есть две флешки: PQI на 512 МБ и Kingston на 1 ГБ. Инициализируются обе в разных "ветках" (см. ниже). Компьютер и другие девайсы работают с ними без всяких проблем. Спецификации читал, вроде у меня все правильно. С чтением тоже проблемы: вместо сектора всегда получаю одни нули. diskio.zip Изменено 2 октября, 2008 пользователем LCD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться