Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отказ SD
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
IlyaSergeev
Приветствую!

Разрабатываю устройства на связке Cortex-M4, SDIO, uSD, FatFS.
Столкнулся с тем, что в редких случаях SD-карточка выходит из строя.

Симптомы отказа: штатные запросы к SD происходят нормально, но если считать сектор, записанный после отказа, то будет считан буфер нулей. Информация, записанная на карту до отказа - сохраняется, в т.ч. файловая система и содержимое файлов. Считал CSD и CID с двух карточек (исправной и неисправной) одной партии - отличия только в серийниках и дате производства.

Таких карточек накопилось уже штук 5. Похожие симптомы были у товарища, который работал с другим МК и по SPI. Карточки были разного объема и разных производителей. Какой-то системы с отказами не обнаружил. Не исключено, что были отказы устройства в целом - сбои по питанию, перезагрузки. SD запитана через ключ, соответственно при сбросе контроллера она теряет питание (в т.ч. во время выполнения операции).

Поделитесь, куда копать.
adnega
Цитата(IlyaSergeev @ May 17 2016, 10:55) *
Поделитесь, куда копать.

Смотреть, что вам сообщает модуль SDIO. "Поношенные" карточки становятся очень медленными.
Может, у вас по таймауту команда приостанавливается, а в буфере нули (или мусор), а не реальные данные с сектора SD-карты.
_4afc_
Похожая беда: Cortex-M4 + SDIO, через некоторое время отказывается писать, только читать можно. Уже несколько таких.
Пишу/читаю сектора. Без TRIM.
В CSD и CID ничего интересного не добавляется.

Может их стереть жёстко, через secure? Кто какие команды посоветует?
adnega
Цитата(_4afc_ @ May 17 2016, 14:57) *
отказывается писать

А как проявляется отказ? SDIO выдает ошибку? Или все ок, но данные физически не пишутся.
У меня беда была: если сразу же после записи попытаться считать, то карта не выходила из состояния "trans".
Помогал только пересброс питания карты. Если снизить частоту CLK (до единиц МГц) или вставить задержку
между предыдущим чтением и записью (~1мс), то все ок, но карту до дыр не затирал.
Шины питания и сигнальные линии в порядке.
Такое впечатление, что при чтении карта потребляет значительный ток, по какой-то причине внутренний повышающий преобразователь
сбивается, а при попытке записи повышенное напряжение не готово и происходит какой-то клин внутри.
IlyaSergeev
Цитата(adnega @ May 17 2016, 17:14) *
Смотреть, что вам сообщает модуль SDIO. "Поношенные" карточки становятся очень медленными.
Может, у вас по таймауту команда приостанавливается, а в буфере нули (или мусор), а не реальные данные с сектора SD-карты.


Пользуюсь "родным" драйвером SDIO из состава библиотеки STM32F4xx HAL Drivers.
Обмен с отказавшей карточкой происходит штатно, все статусы завершения операций приходят нормальные.
Вот низкочастотная диаграмма обмена - видно, что отказавшая карточка возвращает нули.
Нажмите для просмотра прикрепленного файла

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

И еще, вопрос до кучи: есть ли возможность узнать оставшийся ресурс SD-карточки на запись? Вдруг я ее действительно затер до дыр.
petrov
Цитата(IlyaSergeev @ May 18 2016, 13:23) *
Кроме того, при подключении через адаптер к PC та же история - карточка нормально открывается, можно создать файл с содержимым, но при переподключении карточки файл пропадает. Ладно бы, если это был единичный отказ. Но оно регулярно возникает снова..


Чисто из практики бытового использования, впечатление, что 99% карточек контрафакт, но есть исключения, например у сандиск в поддержке по серийному номеру подтверждается подлинность, гарантия 10 лет, в случае неисправности крточка отправляется по почте, присылается новая в течении 10 дней, вот такие карточки в быту без вопросов работают.
mantech
Цитата(adnega @ May 17 2016, 14:14) *
Смотреть, что вам сообщает модуль SDIO. "Поношенные" карточки становятся очень медленными.
Может, у вас по таймауту команда приостанавливается, а в буфере нули (или мусор), а не реальные данные с сектора SD-карты.


Работал с imx6s именно такие вещи и были - задал маленькие таймауты, в результате более "путевые" карты, типа кингстона, трансенда и пр. работали хорошо, а вот всякие смартбэи и др. шлак - выдает ошибку. Исправил таймауты все стало нормально.

Цитата(petrov @ May 18 2016, 14:47) *
Чисто из практики бытового использования, впечатление, что 99% карточек контрафакт,

Вы просто не умеете их готовить biggrin.gif
adnega
Цитата(mantech @ May 24 2016, 22:29) *
Вы просто не умеете их готовить biggrin.gif

+1
Я коллекционирую "SD-уродцев". Карточки используются в серийной продукции, а пока всего два "достойных" экземпляра.
У одного: CID и CSD нулевые. У второго: работают только первые 128 МБ из 2ГБ.
Есть несколько карточек, у который готовность к чтению более 50 мс.
Прицепил статистику.
Для речевых информаторов с малым буфером важно воспроизведение в реальном времени.
Буфер из 256 байт должен прочитаться за 5.8мс; из 8192 байт за 185 мс.
Видно, что карта "2" не справляется. Позже начала тормозить и "16G".
Одиночное превышение условия реального времени не так критично, т.к. проигрывается предыдущий семпл.
Но есть карточка, которая периодически тормозит при этом в течение секунды все сектора считываются с >50 мс задержкой.
mantech
Цитата(adnega @ May 24 2016, 22:50) *
Есть несколько карточек, у который готовность к чтению более 50 мс.


Интересно, почему чтение такое тормозное у них? Запись - понимаю, сам процесс записи занимает много времени, плюс выравнивание износа и т.п. Но чтение rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.