?

Log in

No account? Create an account

[icon] Живучесть флеша - Segmentation fault
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.

Tags:,
Security:
Subject:Живучесть флеша
Time:07:53 pm
Для одного из проектов у нас используется внутренняя флешка в качестве хранилища файловой системы. Внутренней EEPROM нет. Стоял вопрос понять, насколько живуча внутренняя флешка.

Процессор серии Freescale Kinetis MK22. На внутренней флешке поднята виртуальная файловая система поверх BER (block error rate). Последнее - это уровень абстракции поверх физического флеша, позволяющий высокоуровневой файловой системе равномерно записывать флеш, не допуская затирания определенных блоков. Все это на базе RexOS, естественно.

Тесты проводились следующим образом - открывался файл, в файл записывались данные < размера кластера. Файл вычитывался и проверялся.

Флешка успешно крутилась больше недели и только сегодня я получил ответ - спустя 5.6 миллионов циклов записи файла в консоль вылетело сообщение об ошибке CRC. Retry исправило ситуацию, но, я так понимаю, до завтра флешка уже не доживет.

5.6 миллионов циклов записи файла - это примерно 100к циклов записи в каждый сектор.

При minimal 10k и typical 50k цифра в 100k выглядит весьма неплохо.
comments: Оставить комментарий Previous Entry Поделиться Next Entry


mimimizhivotnoe
Link:(Link)
Time:2017-03-23 05:12 pm
рабская экслуатация флешки :)
(Ответить) (Thread)


dimoheha
Link:(Link)
Time:2017-03-23 05:44 pm

еще бы ssd диски живучими были...

(Ответить) (Thread)


Sergey Gimaev
Link:(Link)
Time:2017-03-24 03:07 am
матерое "радиолюбительство" в худшем его проявлении. из серии "мы не нашли AVR на 24 мгц, поэтому взяли с 16 мгц и разогнали подъемом питания".
написано 50к циклов - не превышай. я тоже пользовательские данные сохраняю в флэху, прикинули, что на 2-3 года хватит. а там или ишак, или эмир помрет. в более дорогих проектах использую такую методу - как ошибка CRC всего блока произошла - использую следующий. блоков три. дешево и сердито.
(Ответить) (Thread)


mbr
Link:(Link)
Time:2017-03-24 05:40 am
В даташите указано значение на отъебись. К реальности оно мало общего имеет. Поэтому стояла цель проверить как оно выглядит на практике.

Подобное "матерое радиолюбительство", как ты говоришь, активно применяется производителями SSD и USB Flash. Более того, куча недорогих устройств идет изначально с бракованным nand'ом и софтовым ремапом блоков. Так что тут ты сильно неправ.
(Ответить) (Parent) (Thread)


Sergey Gimaev
Link:(Link)
Time:2017-03-24 05:53 am
ну мы как бы сейчас не о копеешных усб флэшках говорим, а об индастиале. ресурс у нанда падает при повышении температуры. по-тому и пишут typical.

накопители опять-же имеют некоторую границу после которой принимается решение об отказе от дальнейшей записи. и файловая система там очень сильно роялит.

изначально бэдовый нанд это издержки производства. особо не попляшешь. либо тотальный чек, что увеличит стоимость.
(Ответить) (Parent) (Thread)


mbr
Link:(Link)
Time:2017-03-24 05:59 am
Ты все правильно говоришь. Но еще есть маркетинг. Когда, например, NXP пишет в процессоре 96 килобайт SRAM, а по факту самый большой непрерывный блок, доступный для пользователя - 32 КБ. А остальное - кэши AHB, которые в теории можно отключить и клочки памяти в трех разных местах.

Поэтому что под typical подразумевалось и какие условия эксплуатации - да хрен его знает. К слову, многие вендоры даже typical не пишут, а пишут minimal. Вот потому и идет тест партии на typical перед серийным производством.
(Ответить) (Parent) (Thread)

(Удалённый комментарий)

mbr
Link:(Link)
Time:2017-03-26 04:22 pm
Мы поднимаем это значение на 2 порядка, делая дополнительный логический уровень, добиваясь равномерного затирания. Как выяснилось дополнительно, бьются определенные блоки, когда остальные еще вполне живы. Так что эта цифра не предельна.
(Ответить) (Parent) (Thread)

(Удалённый комментарий)

mbr
Link:(Link)
Time:2017-03-27 04:39 am
Да, в каждый блок. Мне кажется typical внесли исключительно ради перестраховки - 100к прошло. Суть в том, что в один блок пишется 6 миллионов раз. В другой - никогда. Дополнительный уровень это выравнивает и получаются средние 100к. В принципе, в любом SSD контроллере подобное должно быть
(Ответить) (Parent) (Thread)

(Удалённый комментарий)

[icon] Живучесть флеша - Segmentation fault
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.