реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> SD-card: выход из строя, не определяется компьютером, Выработан ресурс? как проверить?
Ruslan1
сообщение May 24 2018, 09:08
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Здравствуйте!

В одном из устройств произошел массовый выход из строя SD-карточек (8 из 10 тестируемых), причем странно себя ведут:
в устройстве (интерфейс SDIO, софт на базе FatFs)- карточка детектируется, файлы с них считываются корректно, но при попытке записи выдает ошибку.
В компьютере- карточка вообще не детектируется. (проверено на разных компьютерах с разными ридерами).

Проблема точно не в железе устройства- это же железо с другим софтом используется долгое время, проблем нет. То есть проблема в моем новом софте.
Есть поток данных, записываемых на карточку, примерно 25 килобайт в секунду. Данные пишутся в 15-минутные файлы, файлы старее пары суток удаляются. То есть получается кольцевой буфер данных.

Главный вопрос: как можно загнать карточку в такое "окирпичивание?"

Похоже на выработку ресурса: проблемы на всех карточках начались практически одновременно с разницей в 1-2 дня, после примерно 2 месяцев работы.
Как проверить эту версию? Есть ли какие-то средства чтобы проверить внутреннее здоровье SD-карточки, вроде того как это на SSD делается?

Ну и еще вопрос: Почему в устройстве эти SD карточки читаются (но не пишуться), а в компьютере даже не детектируется?

Каким софтом их поковырять? я кроме WinHex и не помню ничего приличного для внутреннего ковыряния дисков.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 24 2018, 11:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ May 24 2018, 12:08) *
Есть поток данных, записываемых на карточку, примерно 25 килобайт в секунду. Данные пишутся в 15-минутные файлы, файлы старее пары суток удаляются. То есть получается кольцевой буфер данных.
Главный вопрос: как можно загнать карточку в такое "окирпичивание?"

А в чём плюс такого кольцевого буфера?
В стандартном (без файлов, когда для кольца выделена цепочка последовательно-расположенных секторов) кольцевой буфер помогает распределить износ равномерно по всем секторам кольца.
А в вашем случае - какой смысл? При создании/удалении файлов очевидно, что каждый раз будет писаться одно и то же место в FAT и в записи директории. Эти места будут быстро изнашиваться.

Цитата(Ruslan1 @ May 24 2018, 12:08) *
Похоже на выработку ресурса: проблемы на всех карточках начались практически одновременно с разницей в 1-2 дня, после примерно 2 месяцев работы.

Если карта поддерживает wear leveling, то даже в вашем алгоритме не должно быть неравномерного износа. Но если нет: на месте FAT и месте записи директории будет дырка.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 24 2018, 13:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(jcxz @ May 24 2018, 13:17) *
А в чём плюс такого кольцевого буфера?

Данная структура используется не для оптимизации флешки, а для удобства работы с данными.
Эти данные (15-минутный отрезок) могут быть запрошены по времени и доставлены. И автоматически удаляться после окончания времени жизни файла. Время жизни разное может быть, от часа до пары недель.
Цитата(jcxz @ May 24 2018, 13:17) *
Если карта поддерживает wear leveling, то даже в вашем алгоритме не должно быть неравномерного износа. Но если нет: на месте FAT и месте записи директории будет дырка.

Ну, если SD вдруг не поддерживает внутри wear leveling то вообще все плохо с FAT. Но вот как узнать что и как оно там поддерживает? Карты Sandisk, вероятность того что не фейк очень большая (так как не я лично с территории завода-производителя вывозил, то 100% не могу дать, что не фейк, все возможно).

Нашел, кое-что, вот тут немного обсуждают про выравнивание, по аналогии можно попробовать найти материалы на современные карточки
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 29 2018, 15:56
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Скажите пожалуйста, какие могут быть варианты для такого поведения:
- у меня в устройстве (использую SDIO) карточка читается нормально, но не может быть записана
- в компьютере карточка вообще не определяется и не детектируется. На андроиде(в телефоне)- тоже просто не видна, будто и не вставлена.

Если читать посекторно в моем устройстве- то все сектора на месте, не вижу разницы между "нормальной" и "мертвой" карточками.

читал регистры SD- карточки - тоже нет разницы между карточками.

Как такое может быть: оно есть и я могу доступиться до карточки (пусть и только по чтению), а операционки не могут даже ее наличие определить ???
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2018, 16:25
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Ruslan1 @ May 29 2018, 18:56) *
Как такое может быть: оно есть и я могу доступиться до карточки (пусть и только по чтению), а операционки не могут даже ее наличие определить ???

По всей видимости, есть отличия в процедуре инициализации. Например, карта отваливается после переключения в HS, а ваше устройство этого не делает. Или что-нибудь еще в таком же роде. Операционки, кстати, ни при чем: инициализацией они не занимаются (если только SD-интрефейс не нативный).
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 29 2018, 20:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Ruslan1 @ May 29 2018, 18:56) *
Если читать посекторно в моем устройстве- то все сектора на месте, не вижу разницы между "нормальной" и "мертвой" карточками.

А запись этих секторов работает? Частоту понизить? По SPI обратиться?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2018, 20:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Ruslan1 @ May 24 2018, 12:08) *
Главный вопрос: как можно загнать карточку в такое "окирпичивание?"

Вообще, переход в read-only указывает на повреждение внутренних структур данных - тех, что отвечают за трансляцию адресов, выравнивание износа и т.п.
Возможные причины:
- низкое качество самих карт
- проблемы с питанием
- очень высокий износ из-за ошибок в софте МК

Случаются и совсем чудеса: был у меня лет 10 назад замечательный китайский кард-ридер, после общения с которым карты
совершенно разных производителей начинали жутко тормозить при записи (скорость падала примерно до ~25КБайт/с). Причина
так и осталась загадкой.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 30 2018, 07:52
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(aaarrr @ May 29 2018, 22:46) *
Вообще, переход в read-only указывает на повреждение внутренних структур данных - тех, что отвечают за трансляцию адресов, выравнивание износа и т.п.
Возможные причины:
- низкое качество самих карт
- проблемы с питанием
- очень высокий износ из-за ошибок в софте МК


Спасибо всем!
Уважаемый aaarrr собрал вместе то что озвучено в разных постах, именно из этого списка вероятностей я и исхожу.

Про низкое качество карточек- думаю стресс-тест провести (я их ем партиями по 100-200 штук, одну из партии всегда можно попробовать убить для тестов). Стресс-тест на запись прямо сейчас запущу, посмотрим сколько суток протянет (на писишке с USB3, чтоб побыстрее). (Upd: хороший тест еще поискать нужно, мда..)

Про питание- тоже возможно. Дело в том, что именно эти 10 приборов (из которых на многих SD карточка и "окирпичилась") питаются от одного общего внешнего блока питания (в других применениях устройства снабжены индивидуальными внешним БП). Через встроенный DCDC прибора в принципе много чего может пролезть короткого и злобного. Но опять же- это никак не сказалось на окружающей электронике на этой же плате, ни сбросов-зависаний процессора, ни каких-нибудь других проблем- только SD карточка.

Я сам склоняюсь к причине "очень высокий износ из-за ошибок в софте МК". Так как именно для этих 10 штук была разработана своя версия софта. Вроде бы не сильно отличается от стандартной применяемой в сотнях приборов, но все же.

Про "просто запланированный высокий износ":
Сделал счетчик записанных секторов- получилось что реально пишу около 41 сектора в секунду, это 3.5 миллиона секторов в сутки. Проверю точнее, но конкретно область FAT обновляю примерно раз в секунду.

Ну и риторический вопрос- имеет ли смысл следить, в какой сектор я пишу, или этот wear leveling все берет на себя?
Я так понимаю, при расчете нужно исходить от пустого пространства и ресурса на сектор?
У меня: примерно 10 гигабайт свободного пространства, и 2 гигабайта переписывается в сутки. Если выравнивание работает, то даже при ресурсе сектора "1 тысяча записей" должно продержаться 13 лет.

Конкретно у меня карточки микро-SD Сандиск 16G Ultra 10 класс (SDHC UHS-I)
Go to the top of the page
 
+Quote Post
Alex11
сообщение May 30 2018, 08:19
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



У современных карточек снаружи не нужно следить за равномерностью износа, это все делается внутри. Запрет записи, как уже было сказано, включается при невозможности восстановить ошибочные данные в служебных областях карты, чтобы не потерять данные. Почему это произошло так рано - не знаю. Не может ли быть это не Sandisk, а китайский контрафакт? Кроме этого, Вы неправильно считаете количество переписываний секторов при записи по кольцу. Если не говорить карточке при стирании файла, что место у нее свободно (что FAT не умеет делать, это только EXT4 в свежих реализациях и с опциями), то карточка начинает заниматься внутренними переписываниями секторов, что существенно замедляет скорость записи и уменьшает ресурс.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 30 2018, 08:22
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Ruslan1 @ May 30 2018, 10:52) *
Сделал счетчик записанных секторов- получилось что реально пишу около 41 сектора в секунду, это 3.5 миллиона секторов в сутки.
...
У меня: примерно 10 гигабайт свободного пространства, и 2 гигабайта переписывается в сутки. Если выравнивание работает, то даже при ресурсе сектора "1 тысяча записей" должно продержаться 13 лет.

Нет такого понятия, как ресурс сектора. Флеш стирается блоками, а здесь все плохо: у карты 16G будет порядка 125 тысяч блоков,
а ресурс каждого - несколько тысяч записей.

Цитата(Ruslan1 @ May 30 2018, 10:52) *
Конкретно у меня карточки микро-SD Сандиск 16G Ultra 10 класс (SDHC UHS-I)

Я бы проверил на ПК скорость записи. У подделки она наверняка будет сильно занижена.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 30 2018, 08:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(aaarrr @ May 30 2018, 11:22) *
Нет такого понятия, как ресурс сектора. Флеш стирается блоками, а здесь все плохо: у карты 16G будет порядка 125 тысяч блоков,
а ресурс каждого - несколько тысяч записей.

Тогда лучше отказаться от ФС, создать несколько кольцевых буферов блоков данных (по количеству значений времени жизни блока данных) и размер этих кольцевых буферов сделать разным. Например нужно иметь блок_данных_тип_1 (TTL=15мин), блок_данных_тип_2 (TTL=30мин), блок_данных_тип_3 (TTL=1час). Соответственно создаём:
очередь_1 = N*4 блоков_данных; очередь_2 = N*2 блоков_данных; очередь_3 = N блоков_данных. И число N подбираем таким, чтобы был занят весь объём карты.
Каждая очередь - выравнена на целое число блоков_стирания + 1 блок_стирания.
И если частота генерации разных типов блоков одинакова, то получим равномерный износ. Без закладывания на внутренние механизмы карты.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 30 2018, 08:53
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jcxz @ May 30 2018, 11:43) *
Тогда лучше отказаться от ФС...

Не всегда возможно такое. В файловой системе нет ничего страшного, если оперировать достаточно большими блоками и максимально редко.
Правда тут есть грабли:
- Нужен большой объем ОЗУ
- "Народная" FatFS не имеет развитых механизмов кэширования и буферизации (но можно свою прослойку добавить между FatFS и картой)
Go to the top of the page
 
+Quote Post
HardEgor
сообщение May 30 2018, 09:16
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Ruslan1 @ May 30 2018, 14:52) *
Про низкое качество карточек- думаю стресс-тест провести (я их ем партиями по 100-200 штук, одну из партии всегда можно попробовать убить для тестов). Стресс-тест на запись прямо сейчас запущу, посмотрим сколько суток протянет (на писишке с USB3, чтоб побыстрее). (Upd: хороший тест еще поискать нужно, мда..)

Зачем хороший тест, не лучше ли использовать ваш алгоритм записи.
Кстати, ускоренными тестами стоит острожнее пользоваться - может перегреваться чип и ускоренно умирать.

Цитата(Ruslan1 @ May 30 2018, 14:52) *
Конкретно у меня карточки микро-SD Сандиск 16G Ultra 10 класс (SDHC UHS-I)

Отправить в sandisk серийные номера, с целью проверки на контрафактность, не пробовали?
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 30 2018, 09:30
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Точно. Сильно стормозил. Флеш-то про сектора не знает.
в Интернете говорят про размер страницы флеш в карточках 8-128 килобайт, ну и с другой стороны оно еще вдруг целыми кластерами переносит, а не посекторно, опять же ограничение.

Из 10 карточек нашлись некоторые, которые компьютер видит, но не может записать. То есть то что тут мне и говорили- карты перешли в read-only, но еще определяются работают. На вид- очень медленно, скорость чтения 15 килобайт/c, причем именно если с корневой директории копировать. если внутри директории работать- то все быстрее.

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

Ну и понятно куда копать. В первую очередь кэширование FAT.

Цитата(HardEgor @ May 30 2018, 11:16) *
Отправить в sandisk серийные номера, с целью проверки на контрафактность, не пробовали?

Не отправил, но собираюсь. Уже накопилось. Вдруг и ответят.

Хорошую статью нашел, там народ даже лез анализатором чтоб проверить как контроллер распихивает данные на трех флешках разных производителей. Речь про USB стики, но думаю что SD карточки не сильно другие.
Write Endurance in Flash Drives: Measurements and Analysis
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 30 2018, 10:22
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Маловероятно, конечно, но.
- Нет ли "просадки" питания на карту в момент записи и не находится ли оно на пороге работоспособности по напряжению.
- Соблюдаются ли временные диаграммы (если таковые имеются) при записи.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 22:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016