|
|
|
Снова SD/MMC, Вопросы, на которые не нащел пока ответов |
|
|
|
May 4 2008, 05:22
|
Местный
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469
|
Идем дальше, как говорится... Имею на руках две флешки: 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 мкс! Это ведь ненормально много?! Или я не прав?
|
|
|
|
|
May 15 2008, 21:07
|
Местный
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276
|
Цитата(aaarrr @ May 16 2008, 00:57) Правомерно: по стандарту FAT, 0x00 в первом символе имени файла является признаком конца директории. Огромное спасибо за ответ.
--------------------
Удачи.
|
|
|
|
|
Sep 10 2008, 08:10
|
Местный
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276
|
Добрый день. Может быть я плохо искал по форуму или по документации на SD карты, но на свой вопрос ответа не нашел. Вернее что-то нашел. В частности у людей есть разброс во времени записи сектора от нескольких ms до сотен ms. В моем случае (мне необходимо при пропадании входного напряжения успеть скинуть свой промежуточный буфер в 512 байт на карту) карта за 20ms не успевает скинуть блок данных. Ток потребления и так на предельном минимуме, остается наращивать входную емкость. Вот и хочу понять какую минимально достаточную поставить (нехочу ставить банку в 1000uF . Сколько времени SD/MMC карты тратят максимально на запись блока в 512 байт??? Сколько минимально возможно времени тратят на запись??? В документации напоролся на фразу из которой я понял что на запись карта может потратить до 250mS времени. Ужасно много. Может есть более конкретные данные (то что я прочел оказалось где-то в середине документа, а не в таблице электрических и временных характеристик)?????
--------------------
Удачи.
|
|
|
|
|
Sep 10 2008, 10:54
|
Местный
Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276
|
Цитата(sergeeff @ Sep 10 2008, 14:19) С посекторной записью в SD вопрос неприятный. Мне попадались карты, куда писались данные посекторно со скоростью 7 кбайт/с, хотя другие писали 80 кбайт/с. Да, но это все же больше чем 2 ms на запись куска в 512 байт. Я столкнулся с тем, что за 2 ms карточка данные на флешь не сбросила, хотя и "всосала" их в себя. Время работы всего процесса 4 ms. За 2 ms я все выплевываю в SD, и по осцилограмме вижу еще 2.4 ms до момента пропадания питания есть у карты. Но после прочтения данных, своего куска информации в файле не обнаруживаю. Затянул процесс до сотен ms. Данные в файле получил. Но банка болшая получилась.
--------------------
Удачи.
|
|
|
|
|
Sep 15 2008, 14:15
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349
|
Доброго дня.
Имею аналогичную проблему с MicroSD картой.
Начинаю писать на нее поток данных со скоростью примерно один сектор в 110 мс. Пишет корректно, однако один раз в 28 секунд (это я замерял, какое-то магическое числ небось) карточка держит сигнал BUSY слишком долго (до 80 мс), хотя в остальное время BUSY пропадает практически сразу после записи. Вот уже несколько дней думаю о причинах такого поведения, но как-то ничего не придумывается. Может кто знает?
|
|
|
|
|
Sep 16 2008, 06:13
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349
|
Цитата(aaarrr @ Sep 15 2008, 23:23) 28/0.11 = 254. Ну очень похоже на 256 - размер какого-нибудь блока флеш. Ну в таком случае это какой-то блок из 256 секторов - но я нигде не видел упоминание об этом. И еще - я пишу непрерывно, начиная с 66 сектора в файле на карте, а этот 66 сектор файла смещен относительно начала карточки на 95 секторов. Получаем начало в 161 секторе от начала карточки. Отладчикм посмотрел, что длительное ожидание происходит на 373 секторе файла, т.е. на 534 секторе от начала карточки. Но ведь это явно не блок, и явно не кратно 256. Короче, полная загадка.
|
|
|
|
|
Sep 16 2008, 08:11
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349
|
И еще интересный момент. В вышеописанных условиях первый сбой происходит на 373 секторе, а вот следующий сбой - на 629, т.е. с интервалом 256 секторов!!! Из любопытства уменьшил интервал записи секторов с 110 мс до 96. Получил первый сбой на 253 секторе (как-то не пропорционально с интервалом получилось), а вот следующий - на 509 - снова через 256 секторов!!!
Что за магическое число 256 секторов для SD карты и почему так происходит вообще?
|
|
|
|
|
Oct 2 2008, 20:14
|
Частый гость
Группа: Участник
Сообщений: 92
Регистрация: 1-06-08
Пользователь №: 37 959
|
Здравствуйте. Делаю поддержку флешек microSD на MSP430. Сначала использовал легкодоступный Sham176.zip. Все работало практически без глюков, но флешки более 512 МБ эта библиотека не видела, поэтому я решил портировать FatFs (не tiny). Взял diskio отсюда, переделал, чтобы он работал на F1611 и получил кучу глюков, убив кучу времени. Один из них - карточка инициализируется строго через раз, или каждый раз, если ее вынуть-вставить. А сначала вообще инициализировалась когда хотела, обычно на 10 неудачных попыток была одна удачная. После чего она стала работать через раз - уже не помню. Конечно, можно всю инициализацию засунуть в цикл, но мне кажется, что это - "костыли". Есть две флешки: PQI на 512 МБ и Kingston на 1 ГБ. Инициализируются обе в разных "ветках" (см. ниже). Компьютер и другие девайсы работают с ними без всяких проблем. Спецификации читал, вроде у меня все правильно. С чтением тоже проблемы: вместо сектора всегда получаю одни нули.
Сообщение отредактировал LCD - Oct 2 2008, 20:17
Прикрепленные файлы
diskio.zip ( 2.06 килобайт )
Кол-во скачиваний: 157
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|