Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: правильная работа с Flash
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
billidean
Добрый день всем.
Недавно занимался разработкой контроллера для NADN-Flash, при этом стояла задача минимальной потери данных вследствие "битости" ячеек. Т.е. пришлось реализовывать алгоритм контроля целостности используемых ячеек флэшки. В результате получился довольно серъезный алгоритм.
Сейчас стоит задача использования обычной флэшки(её еще предстоит выбрать) для хранения каких-то данных, и будет нехорошо, если часть данных пропадет.
На сколько мне известно у флэшек периодически бъются ячейки, и после этого с ними нельзя работать.
Вопрос к тем, кто работал с флэшками в подобных проектах: Вы также занимались контролем целостности используемых ячеек флэшки? Неужели и здесь придется городить эту немалую систему контроля?
З.Ы.: с Flash-памятями мало знаком, буду благодарен за полезные ссылки.
Corner
Цитата(billidean @ Sep 6 2013, 09:21) *
Добрый день всем.
Недавно занимался разработкой контроллера для NADN-Flash, при этом стояла задача минимальной потери данных вследствие "битости" ячеек. Т.е. пришлось реализовывать алгоритм контроля целостности используемых ячеек флэшки. В результате получился довольно серъезный алгоритм.
Сейчас стоит задача использования обычной флэшки(её еще предстоит выбрать) для хранения каких-то данных, и будет нехорошо, если часть данных пропадет.
На сколько мне известно у флэшек периодически бъются ячейки, и после этого с ними нельзя работать.
Вопрос к тем, кто работал с флэшками в подобных проектах: Вы также занимались контролем целостности используемых ячеек флэшки? Неужели и здесь придется городить эту немалую систему контроля?
З.Ы.: с Flash-памятями мало знаком, буду благодарен за полезные ссылки.


Обычно если сектор побился, его блочат целиком и используют следующий. Список битых секторов обычно пишут в несколько секторов. Это так называемая "неперемещаемая память". Блочить отдельные ячейки это очень странно.
billidean
Да само собой не отдельные ячейки блокирую, а страницу. И вопрос вообще не про это, а про то: кто как работает с флэшками???
billidean
Народ, 160 просмотров, и ни одного посетителя, кто работал с флэш-памятью???

Что успел накопать:
1. NAND - память применяется при работе с большими объемами данных, имеет малую стабильность сохранности ячеек, поэтому необходим дополнительный контроллер, завязанный на контроль данных. Имеет большие времена записи/чтения/стирания по причине больших блоков/секторов. Также довольно небольшой ресурс около 10,000 записей.
2. NOR - довольно быстрая память, имеет не большие блоки для записи/чтения, НО имеет относительно малые объемы, из-за чего для больших объемов данных придется ставить несколько корпусов. А самое интересное, что я вычитал на эту память - она не нуждается в контроле битых ячеек!!! Вот эту последнюю информацию я не понимаю, ведь ресурс у них тоже ограничен, около 100,000 записей. (Кто что может сказать по этому вопросу, прошу высказаться, чем больше инфы, тем лучше!!!)

Прошу поделиться опытом использования тех или иных флэшек для хранения/перезаписи данных.
aaarrr
Цитата(billidean @ Sep 12 2013, 14:18) *
Вот эту последнюю информацию я не понимаю, ведь ресурс у них тоже ограничен, около 100,000 записей.

Просто NOR крайне редко используется для оперативного хранения информации в силу медленного стирания (2-3 порядка по сравнению с NAND), поэтому
ресурс просто не будет выбран. Там, где NOR используется в качестве оперативного хранилища, используют и wear leveling и контроль целостности данных.
DmitryR
Ресурс NAND очень различается в зависимости от типа. SLC, которые хранят по одному биту в ячейке, выдерживают тоже сто тысяч записей. Сектор там 528 байт. Кажется туда помещается 512 байт, завёрнутые в код Рида-Соломона, исправляющий две ошибки. Как мы конфигурили Рида-Соломона под чётное число символов - не помню, кажется извращались с длиной символа. Поэтому если вам не надо делать SSD (то есть иметь неограниченный лимит записи) то вероятно вы без перемещения секторов сможете обойтись.
billidean
Спасибо за отклики.
По SLC/MLC я прочитал в Вики.
Далее по существу моей задачи.
Мне необходимо постоянно писать данные в энергонезависимую память, т.е., как сказал aaarrr, использовать память в качестве оперативного хранилища. Объем, который должен быть сохранен после сброса питания, не очень большой, около 10МБайт.
Почитав в инете, я понял, что выбирать придется между NAND с однобитной структурой(т.е. SLC), NOR и FRAM.
Кстати, последняя по своим характеристикам очень даже хороша, практически неограниченный ресурс, высокое быстродействие. НО очень малые объемы на одном кристалле.

Вывод: при использовании любого из этих типов необходимо городить контроллер памяти для анализа целостности данных, что очень огорчает, так как чем сложнее система, тем сложнее её отладка.
Enthusiast
Цитата(billidean @ Sep 13 2013, 10:35) *
Мне необходимо постоянно писать данные в энергонезависимую память, т.е., как сказал aaarrr, использовать память в качестве оперативного хранилища. Объем, который должен быть сохранен после сброса питания, не очень большой, около 10МБайт.
Почитав в инете, я понял, что выбирать придется между NAND с однобитной структурой(т.е. SLC), NOR и FRAM.
Кстати, последняя по своим характеристикам очень даже хороша, практически неограниченный ресурс, высокое быстродействие. НО очень малые объемы на одном кристалле.
Вывод: при использовании любого из этих типов необходимо городить контроллер памяти для анализа целостности данных, что очень огорчает, так как чем сложнее система, тем сложнее её отладка.

Если необходимо записывать всего 10 МБ данных, то я бы использовал NOR-флэш: предсказуемое и постоянное время записи в ячейку памяти; ячейки памяти не портятся так быстро как у NAND-флэшки, поэтому проверять целостность данных нужды нет; алгоритм записи в ячейку памяти довольно простой; на рынке присутствует несколько производителей совместимых по выводам микросхем. Успехов!
billidean
Цитата(Enthusiast @ Sep 13 2013, 19:13) *
Если необходимо записывать всего 10 МБ данных, то я бы использовал NOR-флэш: предсказуемое и постоянное время записи в ячейку памяти; ячейки памяти не портятся так быстро как у NAND-флэшки, поэтому проверять целостность данных нужды нет; алгоритм записи в ячейку памяти довольно простой; на рынке присутствует несколько производителей совместимых по выводам микросхем. Успехов!


Спасибо за совет. Посмотрю повнимательней в этом направлении.
DmitryR
Я бы ещё посмотрел PRAM - она уже бывает подходящих вам размеров, и выдерживает миллион перезаписей.
ADA007
Цитата(Enthusiast @ Sep 13 2013, 19:13) *
ячейки памяти не портятся так быстро как у NAND-флэшки....

Но ведь ячейки памяти не портятся просто так, а портятся в зависимости от количества перезаписей...т.е. все зависит от частоты перезаписи данной информации...туту уже вопрос к ТС..насколько часто ему надо скидывать эти 10 Мб...если один раз - то и проверять ничего не надо, как мне кажется....
billidean
Цитата(ADA007 @ Sep 16 2013, 17:48) *
Но ведь ячейки памяти не портятся просто так, а портятся в зависимости от количества перезаписей...т.е. все зависит от частоты перезаписи данной информации...туту уже вопрос к ТС..насколько часто ему надо скидывать эти 10 Мб...если один раз - то и проверять ничего не надо, как мне кажется....

При работе со страницами/блоками перед записью нужно стереть записываемую область памяти, а стирание+запись это и есть "нехорошие" факторы, влияющие на долговечность ячейки.
Для моей же задачи необходимо скидывать информацию может всего один раз, но вот перезаписывать нужно постоянно. Я конечно пока не расчитываю общее время жизни флэшки в моем проекте, т.е. частоту записей в секунду/минуту/час; пока я разбираюсь с вариантами выбора в целом.
MSL
Цитата(billidean @ Sep 17 2013, 07:29) *
При работе со страницами/блоками перед записью нужно стереть записываемую область памяти, а стирание+запись это и есть "нехорошие" факторы, влияющие на долговечность ячейки.
Для моей же задачи необходимо скидывать информацию может всего один раз, но вот перезаписывать нужно постоянно. Я конечно пока не расчитываю общее время жизни флэшки в моем проекте, т.е. частоту записей в секунду/минуту/час; пока я разбираюсь с вариантами выбора в целом.


Если вы выбираете флэш, то зачем вам весь этот цирк. Используйте нанд с eMMC интерфейсом, нужно будет вам две команды - читать и писать, всем остальным за вас будет заниматься контроллер... пример.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.