Перейти к содержанию
    

правильная работа с Flash

Добрый день всем.

Недавно занимался разработкой контроллера для NADN-Flash, при этом стояла задача минимальной потери данных вследствие "битости" ячеек. Т.е. пришлось реализовывать алгоритм контроля целостности используемых ячеек флэшки. В результате получился довольно серъезный алгоритм.

Сейчас стоит задача использования обычной флэшки(её еще предстоит выбрать) для хранения каких-то данных, и будет нехорошо, если часть данных пропадет.

На сколько мне известно у флэшек периодически бъются ячейки, и после этого с ними нельзя работать.

Вопрос к тем, кто работал с флэшками в подобных проектах: Вы также занимались контролем целостности используемых ячеек флэшки? Неужели и здесь придется городить эту немалую систему контроля?

З.Ы.: с Flash-памятями мало знаком, буду благодарен за полезные ссылки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день всем.

Недавно занимался разработкой контроллера для NADN-Flash, при этом стояла задача минимальной потери данных вследствие "битости" ячеек. Т.е. пришлось реализовывать алгоритм контроля целостности используемых ячеек флэшки. В результате получился довольно серъезный алгоритм.

Сейчас стоит задача использования обычной флэшки(её еще предстоит выбрать) для хранения каких-то данных, и будет нехорошо, если часть данных пропадет.

На сколько мне известно у флэшек периодически бъются ячейки, и после этого с ними нельзя работать.

Вопрос к тем, кто работал с флэшками в подобных проектах: Вы также занимались контролем целостности используемых ячеек флэшки? Неужели и здесь придется городить эту немалую систему контроля?

З.Ы.: с Flash-памятями мало знаком, буду благодарен за полезные ссылки.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да само собой не отдельные ячейки блокирую, а страницу. И вопрос вообще не про это, а про то: кто как работает с флэшками???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ, 160 просмотров, и ни одного посетителя, кто работал с флэш-памятью???

 

Что успел накопать:

1. NAND - память применяется при работе с большими объемами данных, имеет малую стабильность сохранности ячеек, поэтому необходим дополнительный контроллер, завязанный на контроль данных. Имеет большие времена записи/чтения/стирания по причине больших блоков/секторов. Также довольно небольшой ресурс около 10,000 записей.

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

 

Прошу поделиться опытом использования тех или иных флэшек для хранения/перезаписи данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот эту последнюю информацию я не понимаю, ведь ресурс у них тоже ограничен, около 100,000 записей.

Просто NOR крайне редко используется для оперативного хранения информации в силу медленного стирания (2-3 порядка по сравнению с NAND), поэтому

ресурс просто не будет выбран. Там, где NOR используется в качестве оперативного хранилища, используют и wear leveling и контроль целостности данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ресурс NAND очень различается в зависимости от типа. SLC, которые хранят по одному биту в ячейке, выдерживают тоже сто тысяч записей. Сектор там 528 байт. Кажется туда помещается 512 байт, завёрнутые в код Рида-Соломона, исправляющий две ошибки. Как мы конфигурили Рида-Соломона под чётное число символов - не помню, кажется извращались с длиной символа. Поэтому если вам не надо делать SSD (то есть иметь неограниченный лимит записи) то вероятно вы без перемещения секторов сможете обойтись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за отклики.

По SLC/MLC я прочитал в Вики.

Далее по существу моей задачи.

Мне необходимо постоянно писать данные в энергонезависимую память, т.е., как сказал aaarrr, использовать память в качестве оперативного хранилища. Объем, который должен быть сохранен после сброса питания, не очень большой, около 10МБайт.

Почитав в инете, я понял, что выбирать придется между NAND с однобитной структурой(т.е. SLC), NOR и FRAM.

Кстати, последняя по своим характеристикам очень даже хороша, практически неограниченный ресурс, высокое быстродействие. НО очень малые объемы на одном кристалле.

 

Вывод: при использовании любого из этих типов необходимо городить контроллер памяти для анализа целостности данных, что очень огорчает, так как чем сложнее система, тем сложнее её отладка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне необходимо постоянно писать данные в энергонезависимую память, т.е., как сказал aaarrr, использовать память в качестве оперативного хранилища. Объем, который должен быть сохранен после сброса питания, не очень большой, около 10МБайт.

Почитав в инете, я понял, что выбирать придется между NAND с однобитной структурой(т.е. SLC), NOR и FRAM.

Кстати, последняя по своим характеристикам очень даже хороша, практически неограниченный ресурс, высокое быстродействие. НО очень малые объемы на одном кристалле.

Вывод: при использовании любого из этих типов необходимо городить контроллер памяти для анализа целостности данных, что очень огорчает, так как чем сложнее система, тем сложнее её отладка.

Если необходимо записывать всего 10 МБ данных, то я бы использовал NOR-флэш: предсказуемое и постоянное время записи в ячейку памяти; ячейки памяти не портятся так быстро как у NAND-флэшки, поэтому проверять целостность данных нужды нет; алгоритм записи в ячейку памяти довольно простой; на рынке присутствует несколько производителей совместимых по выводам микросхем. Успехов!

Изменено пользователем Enthusiast

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если необходимо записывать всего 10 МБ данных, то я бы использовал NOR-флэш: предсказуемое и постоянное время записи в ячейку памяти; ячейки памяти не портятся так быстро как у NAND-флэшки, поэтому проверять целостность данных нужды нет; алгоритм записи в ячейку памяти довольно простой; на рынке присутствует несколько производителей совместимых по выводам микросхем. Успехов!

 

Спасибо за совет. Посмотрю повнимательней в этом направлении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы ещё посмотрел PRAM - она уже бывает подходящих вам размеров, и выдерживает миллион перезаписей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ячейки памяти не портятся так быстро как у NAND-флэшки....

Но ведь ячейки памяти не портятся просто так, а портятся в зависимости от количества перезаписей...т.е. все зависит от частоты перезаписи данной информации...туту уже вопрос к ТС..насколько часто ему надо скидывать эти 10 Мб...если один раз - то и проверять ничего не надо, как мне кажется....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но ведь ячейки памяти не портятся просто так, а портятся в зависимости от количества перезаписей...т.е. все зависит от частоты перезаписи данной информации...туту уже вопрос к ТС..насколько часто ему надо скидывать эти 10 Мб...если один раз - то и проверять ничего не надо, как мне кажется....

При работе со страницами/блоками перед записью нужно стереть записываемую область памяти, а стирание+запись это и есть "нехорошие" факторы, влияющие на долговечность ячейки.

Для моей же задачи необходимо скидывать информацию может всего один раз, но вот перезаписывать нужно постоянно. Я конечно пока не расчитываю общее время жизни флэшки в моем проекте, т.е. частоту записей в секунду/минуту/час; пока я разбираюсь с вариантами выбора в целом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При работе со страницами/блоками перед записью нужно стереть записываемую область памяти, а стирание+запись это и есть "нехорошие" факторы, влияющие на долговечность ячейки.

Для моей же задачи необходимо скидывать информацию может всего один раз, но вот перезаписывать нужно постоянно. Я конечно пока не расчитываю общее время жизни флэшки в моем проекте, т.е. частоту записей в секунду/минуту/час; пока я разбираюсь с вариантами выбора в целом.

 

Если вы выбираете флэш, то зачем вам весь этот цирк. Используйте нанд с eMMC интерфейсом, нужно будет вам две команды - читать и писать, всем остальным за вас будет заниматься контроллер... пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...