|
|
  |
Проблема с последовательным чтением, Nand flash K9F1208U0C PIB0 |
|
|
|
Oct 5 2010, 16:35
|

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

|
Совсем запутался. Постранично читает нормально. Записываю Самбой файл, вычитываю все как надо. Но при этом, во-первых не вижу в 517 байте маркер битого блока (который на самом деле битый и обнаружен Самбой), во-вторых, при 4х байтной адресации (1ый байт - номер байта в странице, 3 остальных - номер блока) 2ой по счету байт не задействован. Т.е. номер 1го блока должен задаваться как 0x00 0x01 0x00 0x00, а реально первую страницу 1го блока определяет адрес 0x00 0x00 0x01 0x00. Такое ощущение, что работа идет не с 8ми, а 16ю разрядами. Взгляд на программу уже замылен, может кто внесет свежий поток мыслей?
|
|
|
|
|
Oct 5 2010, 18:10
|

Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Oct 6 2010, 07:28
|

Местный
  
Группа: Свой
Сообщений: 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 А вы работали именно с этой микросхемой?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|