|
|
  |
Тормоза при записи сектора СД/ММС |
|
|
|
Mar 28 2008, 14:28
|
Частый гость
 
Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907

|
Брал карточки прямо из упаковки - то ж самое. Резисторы стоят,16к Цитата(b-volkov @ Mar 28 2008, 17:26)  Брал карточки прямо из упаковки - то ж самое. Резисторы стоят,16к Пробовал WinHEXом забивать и нулями и FF - не помогает. Если только у нее какой-то свой признак стертости сектора (или там - блока)
|
|
|
|
|
Mar 28 2008, 15:12
|
Местный
  
Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765

|
Для FLASH-устройств запись происходит крупными блоками, зависящими от емкости карточки и микросхем памяти, сидящих в ней. Т.е. для записи даже 1-го сектора производится внутреннее чтение блока, модификация и обратная запись. Причем блок предварительно должен быть "стерт". Если он не "стерт", то производится автоматическое его "стирание", что требует уйму времени. В стандарте АТА, например, есть специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее..
|
|
|
|
|
Apr 1 2008, 09:59
|
Частый гость
 
Группа: Свой
Сообщений: 137
Регистрация: 10-04-07
Из: г. Троицк
Пользователь №: 26 907

|
Цитата(bve @ Mar 28 2008, 19:12)  есть специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее.. И так пробовал стирать - разницы не заметил. Видимо выход один: наращивать буфер.
|
|
|
|
|
Apr 12 2008, 04:56
|

Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349

|
Цитата(bve @ Mar 28 2008, 22:12)  Для FLASH-устройств запись происходит крупными блоками, зависящими от емкости карточки и микросхем памяти, сидящих в ней. Т.е. для записи даже 1-го сектора производится внутреннее чтение блока, модификация и обратная запись. Причем блок предварительно должен быть "стерт". Если он не "стерт", то производится автоматическое его "стирание", что требует уйму времени. В стандарте АТА, например, есть специальная команда ERASE SECTORS. После этой команды блок внутри помечается как "стертый" и запись идет намного быстрее. Найдите аналогичную команду для Вашей карточки, "сотрите" там все, что не надо и попробуите писать - скорость должна быть больше и равномернее.. У меня похожая проблема, но немного другая. Одинаковые карты пишут на разных задаваемых скоростях. Т.е. если частоту SCLK для SPI выбрать 10МГц, то одна карта пишется без проблем, а вторая - вообще отказывается. Уменьшаешь частоту до 1 МГц - пишет хорошо. Пишу блоками по 512К. Использую команду CMD25. При считывании параметров CSD карты сомандой CMD9 байт "TRAN_SPEED" показывает одинаковую скорость, например 25 МГЦ. Кстати что это за скорость? Я так поняла, что это и есть SCLK интерфейса SPI.
--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
|
|
|
|
|
Apr 12 2008, 09:02
|

Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349

|
Цитата(aaarrr @ Apr 12 2008, 16:00)  Да, это максимальная частота клоков. А симптомы, похоже, указывают на проблемы с железом. Не буду исключать. Но почему одинаковые карты ведут себя по разному? Как они могут на железо влиять?
--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
|
|
|
|
|
Apr 12 2008, 09:22
|

Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 11-06-07
Из: Российская империя, 1861г.
Пользователь №: 28 349

|
Цитата(aaarrr @ Apr 12 2008, 16:18)  Пардон, не заметил, что они одинаковые. Странно. Ну может одна использовалась более интенсивно и в ней много битых секторов, которые надо обходить? Но тогда при чем тут скорость SCKLK? Ведь карта просто не хочет работать на высокой частоте. В чем тут может быть дело? Не хочется работать на пониженных частотах.
--------------------
Итак увидел я, что нет ничего лучше, чем наслаждаться человеку делами своими (Еккл) .
|
|
|
|
|
May 5 2008, 05:29
|
Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469

|
Тоже не рад скорости записи на 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 байт в себя вмещает сектор?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|