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

Возникла проблема с SDXC 128Gb.

Для записи потока использую CMD25.

С начала карты до адреса блока 0х17FFF (первые 48Мб) все прекрасно работает.

В адресах от 18000 и выше происходит затык. После записи первого блока по DAT0 получаю CRC Status: '010' - Data accepted, вроде все нормально.

А на второй блок карта реагирует вхождением в ступор. На DAT0 висит "1", данные не принимает.

Я примерно представляю, что проблема связана с CMD20, но во всех шареварных даташитах написано:

"This section is a blank for the Simplified Specification."

Плиз хелп!

 

ЗЫ. Пробовал CMD20 с нулевым аргументом, получил "BLOCK_LEN_ERROR".

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


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

А разве не нормально, что на DAT0 выставляется сигнал BUSY для операции записи? Через полсекунды отпустит и запись продолжится дальше.

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


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

Какие еще полсекунды? У меня поток видео 4Mb/сек пишется.

Написал же - проблема с картой 128G. С картами на 64G и меньше все в порядке.

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


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

По спецификации при записи возможны паузы в полсекунды, даже если средняя скорость записи 10 МБайт в секунду (так что твои 4 МБита в секунду ни о чем не говорят).

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


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

4 Мбайта.

Даташит в студию пожалуста!

Да, в описании CMD20 есть такое.

4.13.2.8.1 Definition of Each Function

(1) Start Recording

This function indicates that Speed Class host starts stream recording. When the card receives CMD20 Start Recording function, the card indicates busy up to 1 second to prepare recording (Garbage collection, clean-up of internal status, etc).

Но к WRITE_MULTIPLE_BLOCK это не относится.

Я с SD-картами более 5 лет работаю.

А вообще, разговор ни о чем. Работал с SDXC128G???

Тебе отвечать на подобные советы больше не буду.

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


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

Не обижайся ;) Я руководствуюсь документом SD Specifications Part 1 Physical Layer Simplified Specification Version 3.01 (см. вложение). Глава 4.6.2.2 (стр. 56):

While the card should try to maintain that busy indication of write operation does not exceed 250ms in the case of SDXC card, if the card is not possible to maintain operations with 250ms busy, the card can indicate write busy up to 500ms

including single and multiple block write in the following scenarios:

и т.д.

На практике все совпадает. На некоторых карточках таких больших пауз нет, на некоторых до 750mS замечал. Так что без обид, меряться годами программирования как и языками программирования глупо, надеюсь это не наш с тобой уровень :)

Part_1_Physical_Layer_Simplified_Specification_Ver_3.01_Final_100518.pdf

Изменено пользователем Ozelot

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


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

На практике все совпадает. На некоторых карточках таких больших пауз нет, на некоторых до 750mS замечал.

C этим согласен. Паузы на некоторых картах есть, причем возникают при первых записях после подачи питания и инициализации.

Затем поток пишется ровно, даже на картах 4 класса.

128-я становится в ступор навсегда, DAT0 держит пока не пересбросишь.

Подозреваю, что она находится в каком-то неправильном режиме, который в "Simplified" не описан.

 

К стати вот свежий даташит 2013г.

part1_410.pdf

 

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


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

Спасибо за свежую версию спецификации.

С карточками SDXC128 у меня проблем нет (аппаратная платформа NX6500), у коллеги вроде бы тоже все нормально (LPC2468). Средний объем потока данных при записи 2MB (тоже видео). Возможно это проблема или нюансы аппаратного контроллера SD-шины вашего процессора (например в используемом мной процессоре для мультиблочной записи нужно инициализировать специальный Pending-режим).

Изменено пользователем Ozelot

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


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

В том то и дело, что до адреса 0х18000 все работает.

Проблемы в аппаратной или програмной части нет, так как SDXC64 ведет себя адекватно на всем диапазоне адресов.

 

зы. Добился записи двух блоков подряд.

Перед CMD25 подал CMD20 с параметром 0х40000000 (опять был "BLOCK_LEN_ERROR").

Но на третьем блоке опять DAT0 встал.

Результат стабильный и под Jtag-ом в пошаговом режиме и в R.T.

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


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

А без CMD20 в режиме мультиблочной записи карточка себя ведет аналогично? Может не стОит использовать такую специфическую команду?

Изменено пользователем Ozelot

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


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

Да, один блок только проходит.

Еще эта карта отказывается работать без ACMD23.

Т.е. без ACMD23 карта ведет себя так начиная с нулевого адреса.

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


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

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

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

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

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

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

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

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

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

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