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

 
 
> NAND flash initial invalid block(s), Как с ними борятся??
Гяук
сообщение Jan 23 2007, 09:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 213
Регистрация: 6-12-04
Из: г. Таганрог
Пользователь №: 1 346



Цитата №1 из datasheet на NAND flash K9WAG08U1A:
Цитата
An initial invalid block(s) does not affect the performance of valid block(s) because it is isolated from the bit line and the common source line by a select transistor.

Из чего я делаю вывод: в структуре NAND при производстве могут возникать некоторые глюки, которые отлавливаются на этапе заводского тестирования и после их нахождения блок, который их содержит отключается от шины IO. Обращение к этим блокам должно возвращать какое-то значение (скорее всего 0х00). При стирании этих блоков возвращаемое значение меняться не должно: они ж отключены (..is isolated from the bit line and the common source line by a select transistor)!!
Цитата №2 из datasheet на NAND flash K9WAG08U1A:
Цитата
The initial invalid block(s) status is defined by the 1st byte in the spare area. Samsung makes sure that either the 1st or 2nd page of every initial invalid block has non-FFh data at the column address of 2048. Since the initial invalid block information is also erasable in most cases, it is impossible to recover the information once it has been erased. Therefore, the system must be able to recognize the initial invalid block(s) based on the original initial invalid block information and create the initial invalid block table[..]. Any intentional erasure of the original initial invalid block information is prohibited.

Тут уже неувязочка получается... Как же они отключены, если информацию о них можно стереть? И какие же они invalid block, если они стираемые? sad.gif

Переходя от теории к практике... Есть платка - на ней одна flash на гиг, ПЛИС, которую научили писать, читать, стирать эту flash. Самопальное тестирование этой flash производится следующим образом:
а. Стираем всю flash.
б. Пишем в нее (в каждую ячейку) 0хАА.
в. Читаем и стравниваем. Если считанное значение не совпало - пишем в лог адрес ячейки в котором есть несовпадение.
г. Стираем всю flash.
д. Пишем в нее (в каждую ячейку) 0х55.
е. Читаем и стравниваем. Если считанное значение не совпало - пишем в лог адрес ячейки в котором есть несовпадение.
ж. Стираем всю flash.

Результат - все пространство flash чувствует себя прекрасно за исключением четырех блоков. Именно блоков - проверяли адресацию. Так вот - значение КАЖДОЙ ячейки в этих блоках - 0х00! И оно не стирается!

Вот, подобрался к вопросам: smile.gif

1. Если кто работал с flash - расскажите пожалуйста, всегда ли bad block возвращает значения 0х00 для каждой ячейки блока?
2. Эти самые initial invalid block'и - они если не работают - они всегда не работают? Или все дело в том, что через раз? (то есть один раз считывает правильно, но после стирания и записи может прочесться что-то не то, а потом опять нормально?)

Пока вроде все... Заранее спасибо за ответы. biggrin.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VslavX
сообщение Jan 23 2007, 11:14
Сообщение #2


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Гяук @ Jan 23 2007, 08:59) *
Цитата №1 из datasheet на NAND flash K9WAG08U1A:
Цитата
An initial invalid block(s) does not affect the performance of valid block(s) because it is isolated from the bit line and the common source line by a select transistor.

Из чего я делаю вывод: в структуре NAND при производстве могут возникать некоторые глюки, которые отлавливаются на этапе заводского тестирования и после их нахождения блок, который их содержит отключается от шины IO.

ИМХО, здесь немного неверное прочтение - не отключается при"на заводе", а блокирован в процессе работы закрытым транзистором - это что-то вроде сигнала Chip Select. То есть, при обращении к рабочему блоку, активируется "select transistor" для этого блока, для всех остальных блоков (включая дефектные) - "select transistor" закрыты и блоки никак не влияют на обращение к активному блоку.
Цитата(Гяук @ Jan 23 2007, 08:59) *
Переходя от теории к практике... Есть платка - на ней одна flash на гиг, ПЛИС, которую научили писать, читать, стирать эту flash. Самопальное тестирование этой flash производится следующим образом:
а. Стираем всю flash.

А вот выполнять операции с дефектными блоками Самсунг не рекомендует. В каком-то из даташитов я читал, что заводское тестирование массива намного более полное чем возможно выполнить на упакованном чипе через интерфейс, и не факт что дефект удастся обнаружить простой записью моделей и последующим сравнением. Например - утечка заряда в блоке. Записали-прочитали - все OK. Через полчаса - половина битов в блоке принимает левые значения. И никакой Хэмминг тут не поможет. Так что самый ценный ресурс чипа NAND - это его карта битых блоков smile.gif
Цитата(Гяук @ Jan 23 2007, 08:59) *
1. Если кто работал с flash - расскажите пожалуйста, всегда ли bad block возвращает значения 0х00 для каждой ячейки блока?
2. Эти самые initial invalid block'и - они если не работают - они всегда не работают? Или все дело в том, что через раз? (то есть один раз считывает правильно, но после стирания и записи может прочесться что-то не то, а потом опять нормально?)

Не знаю, может быть как-то поменялась технология. При разработке у меня были случаи затирания информации о битых блоках от производителя - для 128Mbit и 1Gbit чипов, но потом часть маркированных битыми блоков работала нормально. Корректирующий софт был правда мощный - Хэмминг, верификация, резервирование и ремаппинг. Но сплошных нулей в битых блоках вроде не было.
Go to the top of the page
 
+Quote Post



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

 


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


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