Перейти к содержанию
    

Тормоза при записи сектора СД/ММС

При последовательной записи секторов на СД (как, впрочем, и ММС) карту иногда время записи возрастает с единиц миллисекунд до десятков, а то и переваливает за сто. Причем, сектор записывается нормально. Особой регулярности не замечено, каждый раз тормозит на разных секторах. Перепробовал все имеющиеся карточки, время притормаживанияя меняется, частота повторения то же, но сам факт остается. Это норма?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Был у меня замечательный китайский карт-ридер, после общения с которым карточки начинали вести себя именно таким вот образом: все работает, но с дикими тормозами в случайных местах. Попробуйте взять новую карту и другой картовод, на всякий случай.

 

Еще могут быть глюки, если не установлены pull-up резисторы на интерфейсе, но у меня они проявлялись как полное зависание карты, помогала только повторная инициализация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может это зависит от того, чистый сектор или записанный?

Ведь если в нём чё-то было, то надо сначала стереть, а на это нужно время.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Брал карточки прямо из упаковки - то ж самое.

Резисторы стоят,16к

 

Брал карточки прямо из упаковки - то ж самое.

Резисторы стоят,16к

Пробовал WinHEXом забивать и нулями и FF - не помогает. Если только у нее какой-то свой признак стертости сектора (или там - блока)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для FLASH-устройств запись происходит крупными блоками, зависящими от емкости карточки и микросхем памяти, сидящих в ней. Т.е. для записи даже 1-го сектора производится внутреннее чтение блока, модификация и обратная запись. Причем блок предварительно должен быть "стерт". Если он не "стерт", то производится автоматическое его "стирание", что требует уйму времени. В стандарте АТА, например, есть

специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и

запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее..

И так пробовал стирать - разницы не заметил. Видимо выход один: наращивать буфер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для FLASH-устройств запись происходит крупными блоками, зависящими от емкости карточки и микросхем памяти, сидящих в ней. Т.е. для записи даже 1-го сектора производится внутреннее чтение блока, модификация и обратная запись. Причем блок предварительно должен быть "стерт". Если он не "стерт", то производится автоматическое его "стирание", что требует уйму времени. В стандарте АТА, например, есть

специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и

запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее..

У меня похожая проблема, но немного другая. Одинаковые карты пишут на разных задаваемых скоростях. Т.е. если частоту SCLK для SPI выбрать 10МГц, то одна карта пишется без проблем, а вторая - вообще отказывается. Уменьшаешь частоту до 1 МГц - пишет хорошо. Пишу блоками по 512К. Использую команду CMD25. При считывании параметров CSD карты сомандой CMD9 байт "TRAN_SPEED" показывает одинаковую скорость, например 25 МГЦ. Кстати что это за скорость? Я так поняла, что это и есть SCLK интерфейса SPI.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так поняла, что это и есть SCLK интерфейса SPI.

Да, это максимальная частота клоков. А симптомы, похоже, указывают на проблемы с железом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это максимальная частота клоков. А симптомы, похоже, указывают на проблемы с железом.

Не буду исключать. Но почему одинаковые карты ведут себя по разному? Как они могут на железо влиять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но почему одинаковые карты ведут себя по разному?

Пардон, не заметил, что они одинаковые. Странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пардон, не заметил, что они одинаковые. Странно.

Ну может одна использовалась более интенсивно и в ней много битых секторов, которые надо обходить? Но тогда при чем тут скорость SCKLK? Ведь карта просто не хочет работать на высокой частоте. В чем тут может быть дело? Не хочется работать на пониженных частотах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Они точно одинаковые? У карт одного производителя могут быть внутренности из разных источников.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоже не рад скорости записи на SD. На одной и той же карте в оин и тот же блок пишу и получаю разброс от 1.4 мс до 7 мс. На других чуть быстрее или медленнее, но разброс тот же. Тут давалась рекомендация стрирать сектор (установленное количество блоков). Пробовал - результат неоднозначный (что-то изменилось, одни блоки (обычно 512 байт) пишутся быстрее с "чистого" листа, другие так же медленно). Вообще, я несколько в затруднении по части того, как определить количество блоков в секторе (или секторов в блоке? - терминология для SD и MMC разнится). Если исходить из SD Prod Manual 1.9, все размеры задаются тремя параметрами регитсра CSD: C_SIZE, MULT и BLOCK_LEN (обычно 512 байт). Общее количество блоков (секторов, в случае MMC) определяется как произведение C_SIZE и MULT. Если еще умножить на BLOCK_LEN, получим емкость карты в байтах. Так где граница сектора? C_SIZE или MULT? Сколько блоков по 512 байт в себя вмещает сектор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...