savver
Aug 27 2014, 21:38
Всем привет. Столкнулся со следующей проблемой.
Тест 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
billidean
Aug 28 2014, 03:36
ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.
Так что при применении ЕСС можно использовать страницу с одним постоянно испорченным битом, а при появлении второго испорченного бита блокировать(помечать) страницу.
Но, если у Вас иногда ошибочные биты появляются и пропадают в разных местах, то можно случайно забраковать и небитую страницу, а затем следующую ... и так у Вас не останется страниц вообще.
При случайных появлениях и пропаданиях неверных данных при чтении (не совпадающих с записанными), дело может быть в НЕстабильности работы интерфейса с флэшкой, какой-нибудь дребезг на линии данных или тактовой, и т.п.
Bad0512
Aug 28 2014, 04:37
В первую очередь я бы проверил времянки в циклах доступа к памяти, их соответствие требованиям из даташита.
Цитата(billidean @ Aug 28 2014, 07:36)

ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.
Это не так. Если взять MTD в линуксе (конкретно для TI AM3517) - то там используются коды БЧХ, корректирующие 4 или 8 бит в 512-байтном блоке (а это 16 или 32 бита в 2048-байтном). Но я за все время работы с ним не видел в логе ни разу, чтобы произошла коррекция ошибки!
для ТС:
Так что, ищите баги где-то в другом месте, во времянках, в питании, и т.п.
Цитата(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 и не использовать нанд в чистом виде.
з.ы. Как вам советовали - проверяйте все времянки и сигналы для уверенности.
AlexandrY
Aug 28 2014, 06:31
Цитата(savver @ Aug 28 2014, 00:38)

-- Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть?
память Micron mt29f512g08, MLC
Это не большая частота.
Гораздо опасней если в NAND в которой
должны быть ошибки вы их не видите. Тогда вопросы к вашему софту.
NAND-ы от Micron использую периодически.
И заметил одну странную вещь.
Когда закупил партию 100 шт. NAND для индустриального диапазона MT29F2G08ABDHC-ET:D TR (от -40), то в ней была плотность ошибок примерно как у вас. В среднем около 128 кБ памяти было неработоспособно.
Когда же закупил 100 шт. с коммерческим диапазоном MT29F2G08ABAEAH4:E-ND они все были без ошибок.
Цитата(AlexandrY @ Aug 28 2014, 10:31)

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

Разводил то под AH4

, поэтому больше опытов с AHC не ставил. Подозреваю, что там кристалл по более старой технологии сделан, иначе бы зачем ему такой слоновый корпус.
savver
Aug 28 2014, 09:31
Спасибо за ответы!
Есть пища для размышлений...
Как будут новые результаты / прояснится ситуация отпишусь.
Alex11
Aug 28 2014, 14:16
Для MLC частота появления ошибок довольно высока. В Вашем случае посмотрите еще у Микрона файл DSV на конкретную микросхему, там отклонения от DS в худшую сторону для -ET. Возможно, что это отклонения по времянкам. Обычно, когда возникают ошибки, они повторяются на тех же местах после стирания.
savver
Aug 29 2014, 10:27
Ошибки во времянках "чтения" исключаю.
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 правда другой будет, но хотя бы убежусь что с командами нормально работаю.
Собираю статистику по каждому типу ошибок (сколько остаются на своих местах при повторных стираниях-записях, сколько остаются при повторных чтениях...).
Ну и буду внимательнее времянки смотреть...
Torpeda
Aug 29 2014, 14:25
Цитата(savver @ Aug 29 2014, 13:27)

Ошибки во времянках "чтения" исключаю.
Read Parameter Page, Read Uniq ID, чтение более 5000 раз подряд не выдало ни одной ошибки (т.е. всегда считывается одно и то же).
Чем вы читаете из памяти?
В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.
" чтение более 5000 раз подряд не выдало ни одной ошибки" - не есть критерием правильности работы!
savver
Aug 29 2014, 16:55
Цитата(Torpeda @ Aug 29 2014, 18:25)

В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.
угу, придется) спасибо.
Да, напряжения питания и уровни сигналов проверяли, в норме, 1.8 В как и должно быть, фронты не завалены.
Остаются времянки и помехи...
доступ к nand - через самописный контроллер nand-памяти (писал другой разработчик, я реализую софт под microblaze). Поначалу прочли ID, параметры, записали-прошли маленький буфер, все совпало и успокоились. Времянки на 1й взгляд тоже нормальные были (но теперь понимаю надо детальнее посмотреть). Потом начал писать по несколько страниц, и как раз вылезли битовые ошибки...
давно не писал, переключался на другие задачи.
Проверил софтовую часть общения с nand (на уровне команд nand) на другой плате. там стоял SLC чип от micron MT29F2G08(ABD) + ARM. Те же тесты, 8 битых "заводских" блоков, битовых ошибок нет вообще(!) (запись-чтение нулей, отладочных счетчиков...) без всяких ECC. Т.о. софтовая ошибка отпадает...
billidean
Sep 5 2014, 16:08
ну...тогда статистика по указанным нанд'ам Вам в помощь.
savver
Jan 16 2015, 10:57
Возвращаюсь к данной теме... вспоминаем понемного...
Тест:
стираем, пишем нули. Несколько раз считываем уже записанные данные.
( стираем nand, проверяем что после стирания == 0xFFFF, всегда норм, нет ошибок )
Типы ошибок:
-- есть ошибки которые при каждом чтении остаются на своих местах, (их большинство)
-- есть ошибки, которые при повторных чтениях - то есть, то нет (их меньше)
если перезалить плису и прочесть ранее записанные нули, ошибки остаются на тех же местах,
- повторное стирание и запись этого же блока
-- есть ошибки которые остаются на тех же местах, что и при прошлой записи
-- есть ошибки, которые возникают на новых местах
скриншот прилагается.
To be continue...
длины дорожек выравнены на плате?
блоки задержке на пинах в заданы?
фаза тактовый сигнала правильная?
частоту транзакций и общую скорость работы уменьшали?
Ruslan1
Jan 17 2015, 23:03
Извините, а чем закончилось-то, Вы ECC, рекомендованную изготовителем, применяете? Зачем столько сил тратить на бесполезные исследования, если можно просто применить механизм?
Ваши исследования мало чем Вам помогут. Может, одна микросхема хранилась в худших условиях или термопрофиль при пайке был другой, вот и вылезли ошибки сразу. А у другой вылезут через неделю после того как Вы тестирование закончите.
У меня был проект кажется на большой NAND, при разработке не было проблем, зато после термопрогонов появились ошибки, пришлось срочно ECC по полной делать. И никаких проблем.
Mikhalych
Jan 23 2015, 06:44
Согласно документации на Micron mt29f512g08, MLC Вам необходимо иметь код коррекции ошибок с _минимальной_ исправляющей способностью 24 бита на каждые 1080 байт данных.
Нажмите для просмотра прикрепленного файла
Цитата(Mikhalych @ Jan 23 2015, 13:44)

необходимо иметь код коррекции ошибок с _минимальной_ исправляющей способностью 24 бита на каждые 1080 байт данных.
Вопрос с точки зрения увеличения образованности (с). А какое именно кодирование используют для MLC ? судя по размеру напрашивается укороченный БЧХ на 8191 бит. Но может быть используют что-то другое ?
Mikhalych
Jan 26 2015, 07:22
Для повышения образованности могу посоветовать 3 книги:
Error Correction Codes for Non-Volatile Memories (
http://link.springer.com/book/10.1007/978-1-4020-8391-4 )
Inside NAND Flash Memories (
http://link.springer.com/book/10.1007/978-90-481-9431-5 )
Inside Solid State Drives (
http://link.springer.com/book/10.1007/978-94-007-5146-0 )
Книги доступны на SpringerLink (если зайти через sci-hub)
Цитата(Mikhalych @ Jan 26 2015, 14:22)

Для повышения образованности могу посоветовать 3 книги:
Спасибо
Цитата(Ruslan1 @ Jan 18 2015, 03:03)

Извините, а чем закончилось-то, Вы ECC, рекомендованную изготовителем, применяете? Зачем столько сил тратить на бесполезные исследования, если можно просто применить механизм?
Ваши исследования мало чем Вам помогут. Может, одна микросхема хранилась в худших условиях или термопрофиль при пайке был другой, вот и вылезли ошибки сразу. А у другой вылезут через неделю после того как Вы тестирование закончите.
У меня был проект кажется на большой NAND, при разработке не было проблем, зато после термопрогонов появились ошибки, пришлось срочно ECC по полной делать. И никаких проблем.
Стояла "задача" убедится, что это не мы где-то накосячили... перепроверяли возможные варианты...
Закончилось, точнее в процессе заканчивания - да, делаем ECC (microblaze, в дальнейшем fpga), она с лихвой исправляет имеющиеся ошибки.
Спасибо за совет по повод термопрогона,(надо будет отнести в климат.камеру, интересно будет потом посмотреть больше ошибок станет или нет). Да, у нас бывают косяки с пайкой, возможно действительно перегрели микросхемы...
Цитата(Mikhalych @ Jan 26 2015, 11:22)

Для повышения образованности могу посоветовать 3 книги:
Error Correction Codes for Non-Volatile Memories (
http://link.springer.com/book/10.1007/978-1-4020-8391-4 )
Inside NAND Flash Memories (
http://link.springer.com/book/10.1007/978-90-481-9431-5 )
Inside Solid State Drives (
http://link.springer.com/book/10.1007/978-94-007-5146-0 )
Книги доступны на SpringerLink (если зайти через sci-hub)
Спасибо! думаю пригодятся.
Цитата(savver @ Feb 6 2015, 16:05)

делаем ECC (microblaze, в дальнейшем fpga), она с лихвой исправляет имеющиеся ошибки.
если будете делать БЧХ, сорцы в соседней теме
Цитата(des00 @ Feb 6 2015, 16:13)

если будете делать БЧХ, сорцы в соседней теме

Доброго дня! А можно ссылочку. Я 2 варианта нашел. Один на системверилоге, другой на верилоге -
https://github.com/russdill/bch_verilog . Интересно рассмотреть и другой ресурс. Хотелось бы исправлять 12 битовых ошибок в блоке размером 256 байт.
Цитата(axalay @ Feb 6 2015, 23:34)

Один на системверилоге
не из этой темы вы находили ?
http://electronix.ru/forum/index.php?showt...p;#entry1313112 для вашего случая надо только сконфигурировать правильно параметры декодера.
axalay
Feb 11 2015, 12:35
Цитата(des00 @ Feb 6 2015, 20:03)

не из этой темы вы находили ?
http://electronix.ru/forum/index.php?showt...p;#entry1313112 для вашего случая надо только сконфигурировать правильно параметры декодера.
он к сожалению на систем верилоге.... а я в айсе работаю. НА установку симплифая пока не решился
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.