|
|
  |
Отказ SD, SD SDIO Cortex-M |
|
|
|
May 17 2016, 07:55
|
Группа: Участник
Сообщений: 9
Регистрация: 29-11-14
Пользователь №: 83 894

|
Приветствую!
Разрабатываю устройства на связке Cortex-M4, SDIO, uSD, FatFS. Столкнулся с тем, что в редких случаях SD-карточка выходит из строя.
Симптомы отказа: штатные запросы к SD происходят нормально, но если считать сектор, записанный после отказа, то будет считан буфер нулей. Информация, записанная на карту до отказа - сохраняется, в т.ч. файловая система и содержимое файлов. Считал CSD и CID с двух карточек (исправной и неисправной) одной партии - отличия только в серийниках и дате производства.
Таких карточек накопилось уже штук 5. Похожие симптомы были у товарища, который работал с другим МК и по SPI. Карточки были разного объема и разных производителей. Какой-то системы с отказами не обнаружил. Не исключено, что были отказы устройства в целом - сбои по питанию, перезагрузки. SD запитана через ключ, соответственно при сбросе контроллера она теряет питание (в т.ч. во время выполнения операции).
Поделитесь, куда копать.
|
|
|
|
|
May 17 2016, 14:43
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(_4afc_ @ May 17 2016, 14:57)  отказывается писать А как проявляется отказ? SDIO выдает ошибку? Или все ок, но данные физически не пишутся. У меня беда была: если сразу же после записи попытаться считать, то карта не выходила из состояния "trans". Помогал только пересброс питания карты. Если снизить частоту CLK (до единиц МГц) или вставить задержку между предыдущим чтением и записью (~1мс), то все ок, но карту до дыр не затирал. Шины питания и сигнальные линии в порядке. Такое впечатление, что при чтении карта потребляет значительный ток, по какой-то причине внутренний повышающий преобразователь сбивается, а при попытке записи повышенное напряжение не готово и происходит какой-то клин внутри.
|
|
|
|
|
May 18 2016, 10:23
|
Группа: Участник
Сообщений: 9
Регистрация: 29-11-14
Пользователь №: 83 894

|
Цитата(adnega @ May 17 2016, 17:14)  Смотреть, что вам сообщает модуль SDIO. "Поношенные" карточки становятся очень медленными. Может, у вас по таймауту команда приостанавливается, а в буфере нули (или мусор), а не реальные данные с сектора SD-карты. Пользуюсь "родным" драйвером SDIO из состава библиотеки STM32F4xx HAL Drivers. Обмен с отказавшей карточкой происходит штатно, все статусы завершения операций приходят нормальные. Вот низкочастотная диаграмма обмена - видно, что отказавшая карточка возвращает нули.
Кроме того, при подключении через адаптер к PC та же история - карточка нормально открывается, можно создать файл с содержимым, но при переподключении карточки файл пропадает. Ладно бы, если это был единичный отказ. Но оно регулярно возникает снова.. И еще, вопрос до кучи: есть ли возможность узнать оставшийся ресурс SD-карточки на запись? Вдруг я ее действительно затер до дыр.
Сообщение отредактировал IlyaSergeev - May 18 2016, 11:42
|
|
|
|
|
May 18 2016, 11:47
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(IlyaSergeev @ May 18 2016, 13:23)  Кроме того, при подключении через адаптер к PC та же история - карточка нормально открывается, можно создать файл с содержимым, но при переподключении карточки файл пропадает. Ладно бы, если это был единичный отказ. Но оно регулярно возникает снова.. Чисто из практики бытового использования, впечатление, что 99% карточек контрафакт, но есть исключения, например у сандиск в поддержке по серийному номеру подтверждается подлинность, гарантия 10 лет, в случае неисправности крточка отправляется по почте, присылается новая в течении 10 дней, вот такие карточки в быту без вопросов работают.
|
|
|
|
|
May 24 2016, 19:29
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(adnega @ May 17 2016, 14:14)  Смотреть, что вам сообщает модуль SDIO. "Поношенные" карточки становятся очень медленными. Может, у вас по таймауту команда приостанавливается, а в буфере нули (или мусор), а не реальные данные с сектора SD-карты. Работал с imx6s именно такие вещи и были - задал маленькие таймауты, в результате более "путевые" карты, типа кингстона, трансенда и пр. работали хорошо, а вот всякие смартбэи и др. шлак - выдает ошибку. Исправил таймауты все стало нормально. Цитата(petrov @ May 18 2016, 14:47)  Чисто из практики бытового использования, впечатление, что 99% карточек контрафакт, Вы просто не умеете их готовить
|
|
|
|
|
May 24 2016, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

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