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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> NAND, битовые ошибки (вероятность появления)
savver
сообщение Aug 27 2014, 21:38
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



Всем привет. Столкнулся со следующей проблемой.

Тест nand: стираю блок, записываю несколько страниц нулями, читаю (запись/чтение без использования ECC). Имею ошибки, т.е. не все биты равны 0. Частота ошибок - порядка 8...20 на 64 страницы по 8192 байт. Не особо часто, но и не редко...

Насколько я понимаю, для NAND характерны битовые ошибки, они появляются в процессе юзания NAND, для их устранения применяется ECC.
-- Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть?

В datasheet-е не нашел информации какой должна быть вероятность (BER, Bit Error Rate), в статьях в интернете натыкался на цифры 10^(-8)... 10^(-11), т.е. значительно реже, чем я наблюдаю (2 * 10^(-6) и выше).

В тесте работаю с корректными блоками ( 1. не помеченные как битые с завода, 2. проверка после стирания показывает, что все байты равны 0xFF), проверял тест на нескольких блоках.
Повторные чтения уже записанных данных, показывают что ошибки остаются на своих местах, т.е. в тех же страницах, по тем же смещениям в пределах страницы, ошибка в том же бите. В разных ошибочных байтах ошибки могут быть в разных битах.
Если еще раз стереть блок и заново обнулить страницы, то часть ошибок остается (те же страницы, те же смещения в пределах страницы...), часть пропадает/появляется в новых местах.
чтение ID, страницы параметров - верно читается.

память Micron mt29f512g08, MLC

Сообщение отредактировал savver - Aug 27 2014, 21:41
Go to the top of the page
 
+Quote Post
billidean
сообщение Aug 28 2014, 03:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.
Так что при применении ЕСС можно использовать страницу с одним постоянно испорченным битом, а при появлении второго испорченного бита блокировать(помечать) страницу.
Но, если у Вас иногда ошибочные биты появляются и пропадают в разных местах, то можно случайно забраковать и небитую страницу, а затем следующую ... и так у Вас не останется страниц вообще.
При случайных появлениях и пропаданиях неверных данных при чтении (не совпадающих с записанными), дело может быть в НЕстабильности работы интерфейса с флэшкой, какой-нибудь дребезг на линии данных или тактовой, и т.п.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Aug 28 2014, 04:37
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



В первую очередь я бы проверил времянки в циклах доступа к памяти, их соответствие требованиям из даташита.
Go to the top of the page
 
+Quote Post
SM
сообщение Aug 28 2014, 05:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(billidean @ Aug 28 2014, 07:36) *
ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.


Это не так. Если взять MTD в линуксе (конкретно для TI AM3517) - то там используются коды БЧХ, корректирующие 4 или 8 бит в 512-байтном блоке (а это 16 или 32 бита в 2048-байтном). Но я за все время работы с ним не видел в логе ни разу, чтобы произошла коррекция ошибки!

для ТС:
Так что, ищите баги где-то в другом месте, во времянках, в питании, и т.п.
Go to the top of the page
 
+Quote Post
MSL
сообщение Aug 28 2014, 06:01
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382



Цитата(savver @ Aug 28 2014, 01:38) *
Тест nand: стираю блок, записываю несколько страниц нулями, читаю (запись/чтение без использования ECC). Имею ошибки, т.е. не все биты равны 0. Частота ошибок - порядка 8...20 на 64 страницы по 8192 байт. Не особо часто, но и не редко... Насколько я понимаю, для NAND характерны битовые ошибки, они появляются в процессе юзания NAND, для их устранения применяется ECC. Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть? В datasheet-е не нашел информации какой должна быть вероятность (BER, Bit Error Rate), в статьях в интернете натыкался на цифры 10^(-8)... 10^(-11), т.е. значительно реже, чем я наблюдаю (2 * 10^(-6) и выше).


Не то чтобы "должно быть"... Все зависит от флэшки и технологии. В одной может быть от пара ощибок (или вообще не быть) на всю флэш, в другой их могут быть сотни. Много ошибок в основном в дешевых с 8кб страницами. Из даташита вы ничего не узнаете про "реальное примерное" количество ошибок. Использовать и проверять ECC придется в любом случае. Вопрос в другом - нужны ли вам такие флэшки с кучами ошибок и так ли важна такая экономия? Будет ли ваш контроллер корректировать ECC ошибки автоматически или переложите это на софт? В общем, это ваш выбор. Да и вообще, на данный момент, проще возложить все это на eMMC и не использовать нанд в чистом виде.

з.ы. Как вам советовали - проверяйте все времянки и сигналы для уверенности.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 28 2014, 06:31
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(savver @ Aug 28 2014, 00:38) *
-- Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть?

память Micron mt29f512g08, MLC


Это не большая частота.
Гораздо опасней если в NAND в которой должны быть ошибки вы их не видите. Тогда вопросы к вашему софту.

NAND-ы от Micron использую периодически.

И заметил одну странную вещь.
Когда закупил партию 100 шт. NAND для индустриального диапазона MT29F2G08ABDHC-ET:D TR (от -40), то в ней была плотность ошибок примерно как у вас. В среднем около 128 кБ памяти было неработоспособно.
Когда же закупил 100 шт. с коммерческим диапазоном MT29F2G08ABAEAH4:E-ND они все были без ошибок.

Go to the top of the page
 
+Quote Post
SM
сообщение Aug 28 2014, 06:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(AlexandrY @ Aug 28 2014, 10:31) *
то в ней была плотность ошибок примерно как у вас. В среднем около 128 кБ памяти было неработоспособно.

Я, вообще, тоже нарывался на память с большим кол-вом ошибок, но дело в том, что там были помечены заводом куча блоков! И не 128 кБ (это всего-то один блок), а десятки блоков, причем не один десяток. При этом в рабочих блоках фактов срабатывания ECC-коррекции так же не было замечено. А вот прямо сейчас - MT29F4G16ABBEAH4-IT:E - из 250 микросхем всего ОДИН блок помечен в одной из них.

PS
А что за -ET? Индустриальные, они -IT

PPS
Кстати, у меня тоже в AHC-корпусе была партия с кучей плохих блоков. Этот корпус мне на плату еле-еле влез (пришлось купить, так как AH4 не было в разумный срок) sm.gif Разводил то под AH4 sm.gif , поэтому больше опытов с AHC не ставил. Подозреваю, что там кристалл по более старой технологии сделан, иначе бы зачем ему такой слоновый корпус.
Go to the top of the page
 
+Quote Post
savver
сообщение Aug 28 2014, 09:31
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



Спасибо за ответы!
Есть пища для размышлений...

Как будут новые результаты / прояснится ситуация отпишусь.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Aug 28 2014, 14:16
Сообщение #9


Гуру
******

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



Для MLC частота появления ошибок довольно высока. В Вашем случае посмотрите еще у Микрона файл DSV на конкретную микросхему, там отклонения от DS в худшую сторону для -ET. Возможно, что это отклонения по времянкам. Обычно, когда возникают ошибки, они повторяются на тех же местах после стирания.
Go to the top of the page
 
+Quote Post
savver
сообщение Aug 29 2014, 10:27
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



Ошибки во времянках "чтения" исключаю.
Read Parameter Page, Read Uniq ID, чтение более 5000 раз подряд не выдало ни одной ошибки (т.е. всегда считывается одно и то же).
-- Интересно, если например в Features писать-читать кучу раз для проверки правильности обращения к nand при записи, наверное ж там ничего не испортится/не затрется? (писать естественно адекватные значения, чтоб не сбоить работу nand).

Пробовал запись-чтение нулей в timing_mode 0...5 (выставление в features в nand), результаты примерно одинаковые.

Доп.задержки в софте при выполнении команд, использование read status enhanced вместо read statusnдля отдельного LUN-а чтоб всякие конфликты исключить, успехов не дало. "Мучить" софтовую библиотеку пока перестаю.
на выходных попробую ее на МК запустить, нашел платку с nand, hardware_level правда другой будет, но хотя бы убежусь что с командами нормально работаю.

Собираю статистику по каждому типу ошибок (сколько остаются на своих местах при повторных стираниях-записях, сколько остаются при повторных чтениях...).
Ну и буду внимательнее времянки смотреть...

Go to the top of the page
 
+Quote Post
Torpeda
сообщение Aug 29 2014, 14:25
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(savver @ Aug 29 2014, 13:27) *
Ошибки во времянках "чтения" исключаю.
Read Parameter Page, Read Uniq ID, чтение более 5000 раз подряд не выдало ни одной ошибки (т.е. всегда считывается одно и то же).

Чем вы читаете из памяти?
В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.

" чтение более 5000 раз подряд не выдало ни одной ошибки" - не есть критерием правильности работы!
Go to the top of the page
 
+Quote Post
savver
сообщение Aug 29 2014, 16:55
Сообщение #12





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



Цитата(Torpeda @ Aug 29 2014, 18:25) *
В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.


угу, придется) спасибо.
Да, напряжения питания и уровни сигналов проверяли, в норме, 1.8 В как и должно быть, фронты не завалены.
Остаются времянки и помехи...

доступ к nand - через самописный контроллер nand-памяти (писал другой разработчик, я реализую софт под microblaze). Поначалу прочли ID, параметры, записали-прошли маленький буфер, все совпало и успокоились. Времянки на 1й взгляд тоже нормальные были (но теперь понимаю надо детальнее посмотреть). Потом начал писать по несколько страниц, и как раз вылезли битовые ошибки...


Сообщение отредактировал savver - Aug 29 2014, 16:55
Go to the top of the page
 
+Quote Post
savver
сообщение Sep 5 2014, 15:36
Сообщение #13





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



давно не писал, переключался на другие задачи.

Проверил софтовую часть общения с nand (на уровне команд nand) на другой плате. там стоял SLC чип от micron MT29F2G08(ABD) + ARM. Те же тесты, 8 битых "заводских" блоков, битовых ошибок нет вообще(!) (запись-чтение нулей, отладочных счетчиков...) без всяких ECC. Т.о. софтовая ошибка отпадает...
Go to the top of the page
 
+Quote Post
billidean
сообщение Sep 5 2014, 16:08
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



ну...тогда статистика по указанным нанд'ам Вам в помощь.
Go to the top of the page
 
+Quote Post
savver
сообщение Jan 16 2015, 10:57
Сообщение #15





Группа: Участник
Сообщений: 11
Регистрация: 28-06-11
Пользователь №: 65 945



Возвращаюсь к данной теме... вспоминаем понемного...

Тест:
стираем, пишем нули. Несколько раз считываем уже записанные данные.
( стираем nand, проверяем что после стирания == 0xFFFF, всегда норм, нет ошибок )

Типы ошибок:
-- есть ошибки которые при каждом чтении остаются на своих местах, (их большинство)
-- есть ошибки, которые при повторных чтениях - то есть, то нет (их меньше)
если перезалить плису и прочесть ранее записанные нули, ошибки остаются на тех же местах,

- повторное стирание и запись этого же блока
-- есть ошибки которые остаются на тех же местах, что и при прошлой записи
-- есть ошибки, которые возникают на новых местах

скриншот прилагается.

To be continue...

Сообщение отредактировал savver - Jan 16 2015, 10:58
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 00:46
Рейтинг@Mail.ru


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