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

 
 
 
Reply to this topicStart new topic
> Проблема с последовательным чтением, Nand flash K9F1208U0C PIB0
Serg_el
сообщение Sep 27 2010, 13:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Судя по даташиту данная память имеет режим Sequential Row Read, т.е. последовательного чтения внутри блока с автоматическим инкрементом адреса страницы. После считывания первой страницы вместе с резервной областью (512+16 байт) выставляется Busy, ожидаю Ready, затем считываю следующую страницу, а в ответ 0xFF, т.е. доступа к памяти нет. Если же после появления Ready повторить команду на Чтение + Адрес следующей страницы, то все прекрасно работает. Кто-нибудь сталкивался с подобным поведением памяти?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Sep 28 2010, 06:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



CE случайно не снимаете?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Sep 28 2010, 07:32
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Цитата(Dron_Gus @ Sep 28 2010, 10:51) *
CE случайно не снимаете?


Точно не снимаю.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Oct 5 2010, 16:35
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Совсем запутался. Постранично читает нормально. Записываю Самбой файл, вычитываю все как надо. Но при этом, во-первых не вижу в 517 байте маркер битого блока (который на самом деле битый и обнаружен Самбой), во-вторых, при 4х байтной адресации (1ый байт - номер байта в странице, 3 остальных - номер блока) 2ой по счету байт не задействован. Т.е. номер 1го блока должен задаваться как 0x00 0x01 0x00 0x00, а реально первую страницу 1го блока определяет адрес 0x00 0x00 0x01 0x00. Такое ощущение, что работа идет не с 8ми, а 16ю разрядами. Взгляд на программу уже замылен, может кто внесет свежий поток мыслей?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 5 2010, 17:51
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Код покаывайте. На вскидку: для чтения разных областей одной страницы используются три команды (0x00, 0x01, 0x50). Вы их правильно используете?


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Oct 5 2010, 18:10
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Цитата(Dron_Gus @ Oct 5 2010, 21:51) *
Код покаывайте. На вскидку: для чтения разных областей одной страницы используются три команды (0x00, 0x01, 0x50). Вы их правильно используете?


Да код, собственно, это переработанный атмеловский пример, выкинул лишнее, добавил DMA с переносом из NAND в SDRAM.
Последовательность такая команда 0x0, затем адрес 0x0 0x0 0x0 0x0 (читаем страница 0, блока 0), затем жду busy, потом читаю 528 байт, появляется снова busy. Если пытаться читать далее, то имеем 528 0xFF, затем опять появляется busy. Если же после окончания чтения страницы опять команда-адрес, то читается опять нормально, но только снова одна страница. Могу завтра этот кусок кода выложить.
Что сильно смущает - в даташите указано, что гарантированно минимум - 4026 рабочих блоков, а Самба до первого Erase all выдает 0 bad blocks, а после уже 256!!!

По настройкам EBI - питание 3.3 и подтяжка линий (включенная по-умолчанию)

SMC - тайминги, управление по RD и WE, 8 -bit data bus.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Oct 6 2010, 07:28
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Выяснил сегодня, что атмеловский пример обнаруживает bad страницы в моей NAND следующим образом:

Команда 0x0, адрес 0x0 0x2 0x0 0x0 - блок 0, страница 0
Команда 0x0, адрес 0x0 0x2 0x1 0x0 - блок 0, страница 1

Команда 0x0, адрес 0x0 0x2 0x20 0x0 - блок 1, страница 0
Команда 0x0, адрес 0x0 0x2 0x21 0x0 - блок 1, страница 1

Dron_Gus
А вы работали именно с этой микросхемой?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Oct 6 2010, 08:29
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Это вполне логично. маркер может быть или на первой или на второй странице блока. Только вот команда не та.

Нет, с конкретно этой не работал. Работал с 2 К блоками.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Oct 6 2010, 09:34
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Цитата(Dron_Gus @ Oct 6 2010, 12:29) *
Это вполне логично. маркер может быть или на первой или на второй странице блока. Только вот команда не та.

Нет, с конкретно этой не работал. Работал с 2 К блоками.


Не совсем логично именно для этой микросхемы, т.к. по даташиту номер байта в странице задается первыми 8 битами. Остальные 3 байта адреса это номер страницы и блока. Вот и с командой я не понимаю ситуацию, если давать команду 0x50 (чтение spare области), то не нахожу маркера битого блока. Такое ощущение, что работаю с другой микросхемой.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Oct 6 2010, 11:32
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Вот и разобрался я с этой проблемой. Возможно кому-то поможет.
Все читалось на самом деле нормально (в том числе последовательно), проблема оказалась в записи. Samba версии 2.9 работала с апплетом для микросхемы NAND с другой адресацией, т.е. получалось, что страницы записывались во флеш не последовательно. Соответственно только Самба могла их правильно и вычитать из памяти. В этом была и причина некорректного определения битых блоков. Скачал версию 2.10, она скорее всего более универсальная и умеет определять по ID тип микросхемы и правильно с ней работать.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:47
Рейтинг@Mail.ru


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