реклама на сайте
подробности

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Снова SD/MMC, Вопросы, на которые не нащел пока ответов
InvisibleFed
сообщение May 4 2008, 05:22
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 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 мкс! Это ведь ненормально много?! Или я не прав?
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 15 2008, 20:51
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 234
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.

Не хотел создавать новую тему, так как эта показалась подходящей.

Вопрос в следующем.

При поиске имени файла в области каталогов, когда можно быть уверенным что дальше искать смысла нет. Имеется в виду, следующее. Есть гарантия что при обнаружении пустой записи ( например не все 32 байта обнулены, а только первый символ = 0) за ней не будет какой-нибудь еще валидной записи??? Просто когда флешка пустая (только форматнули), область каталогов занулена. И при поиске файла (на предмет похожего имени) на 8-битнике да 1 гиговой флешке (где секторов под корень отведено много), происходит долгий поиск. Вот думаю останавливать поиск при обнаружении в имени файла первого символа = 0. Правомерно ли это???


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 15 2008, 20:57
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 10 067
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AndreyS @ May 16 2008, 00:51) *
Вот думаю останавливать поиск при обнаружении в имени файла первого символа = 0. Правомерно ли это???

Правомерно: по стандарту FAT, 0x00 в первом символе имени файла является признаком конца директории.


--------------------
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 15 2008, 21:07
Сообщение #34


Местный
***

Группа: Участник
Сообщений: 234
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(aaarrr @ May 16 2008, 00:57) *
Правомерно: по стандарту FAT, 0x00 в первом символе имени файла является признаком конца директории.


Огромное спасибо за ответ.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Sep 10 2008, 08:10
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 234
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Добрый день.

Может быть я плохо искал по форуму или по документации на SD карты, но на свой вопрос ответа не нашел. Вернее что-то нашел. В частности у людей есть разброс во времени записи сектора от нескольких ms до сотен ms. В моем случае (мне необходимо при пропадании входного напряжения успеть скинуть свой промежуточный буфер в 512 байт на карту) карта за 20ms не успевает скинуть блок данных. Ток потребления и так на предельном минимуме, остается наращивать входную емкость. Вот и хочу понять какую минимально достаточную поставить (нехочу ставить банку в 1000uF smile.gif.

Сколько времени SD/MMC карты тратят максимально на запись блока в 512 байт???
Сколько минимально возможно времени тратят на запись???

В документации напоролся на фразу из которой я понял что на запись карта может потратить до 250mS времени. Ужасно много. Может есть более конкретные данные (то что я прочел оказалось где-то в середине документа, а не в таблице электрических и временных характеристик)?????


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Sep 10 2008, 10:19
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



С посекторной записью в SD вопрос неприятный. Мне попадались карты, куда писались данные посекторно со скоростью 7 кбайт/с, хотя другие писали 80 кбайт/с.
Go to the top of the page
 
+Quote Post
AndreyS
сообщение Sep 10 2008, 10:54
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 234
Регистрация: 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. Данные в файле получил. Но банка болшая получилась.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
М430
сообщение Sep 15 2008, 14:15
Сообщение #38





Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349



Доброго дня.

Имею аналогичную проблему с MicroSD картой.

Начинаю писать на нее поток данных со скоростью примерно один сектор в 110 мс. Пишет корректно, однако один раз в 28 секунд (это я замерял, какое-то магическое числ небось) карточка держит сигнал BUSY слишком долго (до 80 мс), хотя в остальное время BUSY пропадает практически сразу после записи.
Вот уже несколько дней думаю о причинах такого поведения, но как-то ничего не придумывается. Может кто знает?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 15 2008, 20:23
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 10 067
Регистрация: 11-12-04
Пользователь №: 1 448



28/0.11 = 254.
Ну очень похоже на 256 - размер какого-нибудь блока флеш.


--------------------
Go to the top of the page
 
+Quote Post
М430
сообщение Sep 16 2008, 06:13
Сообщение #40





Группа: Участник
Сообщений: 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.
Короче, полная загадка.
Go to the top of the page
 
+Quote Post
М430
сообщение Sep 16 2008, 08:11
Сообщение #41





Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349



И еще интересный момент.
В вышеописанных условиях первый сбой происходит на 373 секторе, а вот следующий сбой - на 629, т.е. с интервалом 256 секторов!!!
Из любопытства уменьшил интервал записи секторов с 110 мс до 96. Получил первый сбой на 253 секторе (как-то не пропорционально с интервалом получилось), а вот следующий - на 509 - снова через 256 секторов!!!

Что за магическое число 256 секторов для SD карты и почему так происходит вообще?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 16 2008, 09:25
Сообщение #42


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 140
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



У меня тоже проблемы с недетерменированностью времени записи 05.gif 05.gif Пока так и не решил проблемму.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 18 2008, 08:05
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 10 067
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(М430 @ Sep 16 2008, 12:11) *
Что за магическое число 256 секторов для SD карты и почему так происходит вообще?

На этой границе карта может выполнять стирание следующего блока, контроль целостности данных в только что записанном и т.п.
256 - магическое число только для данной конкретной карты. Контроллер SD-карты весьма сложная штука, ждать от него детерменированного времени записи нельзя, нужно буферизировать данные со своей стороны.


--------------------
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Sep 18 2008, 09:31
Сообщение #44


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 140
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(aaarrr @ Sep 18 2008, 12:05) *
На этой границе карта может выполнять стирание следующего блока, контроль целостности данных в только что записанном и т.п.
256 - магическое число только для данной конкретной карты. Контроллер SD-карты весьма сложная штука, ждать от него детерменированного времени записи нельзя, нужно буферизировать данные со своей стороны.

Я это безусловно и так делаю... вот только я никак не могу определить размер при котором все гарантироваано успеется записаться. Ну не мегабайт же мне выделять, при том, что я пишу пачками по 150 байт за раз и в 99% случаев он записать эти 150 байт успевает еще до того как новые 150 байт накопятся с АЦП. Весь вопрос в этом 1 % случаев... мегабайта конечно хватит, но я не готов в крохотном МСП430 выделять 1М памяти чтоб он простаивал попросту. smile.gif
Go to the top of the page
 
+Quote Post
LCD
сообщение Oct 2 2008, 20:14
Сообщение #45


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 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 килобайт ) Кол-во скачиваний: 132
 
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 5 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th March 2017 - 22:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016