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

Работа с плохими секторами/страницами в NAND FLASH.

Вопрос к специалистам с опытом работы с NAND FLASH. Есть такая NAND FLASH - TC58CVG2S0HxAIx.

Стирается она блоками. В каждом блоке 64 страницы. Как выявлять какая страница повреждена а какая нет? Допустим стер блок и что потом? Перебирать все страницы, считывать и проверять если какой нибудь байт не равен 0xFF - страница плохая? А где хранить информацию о плохих страницах? 2048 блоков и в каждом 64 страницы - это uint64_t pages[2048] - чтоб сохранить всю информацию.

TC58CVG2S0HxAIx_Rev1.1_2016_11_08.pdf

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

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


Ссылка на сообщение
Поделиться на другие сайты
Стирается она блоками. В каждом блоке 64 страницы. Как выявлять какая страница повреждена а какая нет?

И бракуется блоками, а не страницами. Подробности на стр.37-38 даташита.

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


Ссылка на сообщение
Поделиться на другие сайты
И бракуется блоками, а не страницами. Подробности на стр.37-38 даташита.

спасибо за наводку.то есть исходя из описания

Regarding invalid blocks, the bad block mark is in the whole page. Please read one column of any page in each

block. If the data of the column is 00 (Hex), define the block as a bad block

достаточно прочесть любую строку на любой странице блока и если есть 0х00 - блок плохой? а что в плохом блоке вся дата на странице читается 0х00?

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

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


Ссылка на сообщение
Поделиться на другие сайты
достаточно прочесть любую строку на любой странице блока и если есть 0х00 - блок плохой? а что в плохом блоке вся дата на странице читается 0х00?

Сolumn - это и есть страница. То есть в плохом блоке все данные читаются как 0x00.

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


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

При поставке все данные читаются 0, но если попытаться стереть BadBlock, то никто не гарантирует, что все данные будут читаться как 0. Скорее всего, будут отдельные битовые нули. Но по инструкции BadBlock'и стирать запрещено. Также BadBlock'и могут образовываться при работе. Диагностика - возникновение ошибки стирания или ошибки записи.

 

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


Ссылка на сообщение
Поделиться на другие сайты
При поставке все данные читаются 0, но если попытаться стереть BadBlock, то никто не гарантирует, что все данные будут читаться как 0. Скорее всего, будут отдельные битовые нули. Но по инструкции BadBlock'и стирать запрещено. Также BadBlock'и могут образовываться при работе. Диагностика - возникновение ошибки стирания или ошибки записи.

 

проблема вот в чем. если память не писанная то все хорошо. но если на эту страницу уже писАли? там наверняка будут нули. и как тогда понять какой блок плохой какой хороший?

и кстати они пишут что в BadBlock ошибки стирания может и не быть.

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

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


Ссылка на сообщение
Поделиться на другие сайты
проблема вот в чем. если память не писанная то все хорошо. но если на эту страницу уже писАли? там наверняка будут нули. и как тогда понять какой блок плохой какой хороший?

На всей странице нули, включая дополнительную область? Тогда руки обрывать писАтелям.

 

и кстати они пишут что в BadBlock ошибки стирания может и не быть.

Может и не быть. Возникновение ошибки стирания - это просто один из поводов забраковать ранее исправный блок,

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


Ссылка на сообщение
Поделиться на другие сайты
На всей странице нули, включая дополнительную область? Тогда руки обрывать писАтелям.

 

 

Может и не быть. Возникновение ошибки стирания - это просто один из поводов забраковать ранее исправный блок,

 

нули не на всей странице. сделал дам пару страниц - да есть области нулей, что ж тут такого. какой алгоритм проверки? если есть данные не нули и не FF - блок в порядке?

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


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

Если все данные на странице - нули, значит, блок битый. Какой еще нужен алгоритм?

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


Ссылка на сообщение
Поделиться на другие сайты
Если все данные на странице - нули, значит, блок битый. Какой еще нужен алгоритм?

 

то есть считал допустим 100 байт. если встретился хотя бы один не ноль - блок не битый?

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

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


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

Да почему 100 байт-то?! ВСЮ СТРАНИЦУ.

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


Ссылка на сообщение
Поделиться на другие сайты
Да почему 100 байт-то?! ВСЮ СТРАНИЦУ.

понял. спасибо. попробую.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация