Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-окт-18 10:20

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Работа с NAND-памятью
СообщениеДобавлено: 2017-окт-09 11:11 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 371
Добрый день.
Используется отладочная плата с установленным МК 1986ВЕ91Т. Серия МК 1538.
Пытаемся подключить NAND память.Столкнулись со следующей проблемой.
При попытке записать команду чтения ID процессор зависает.
В качестве примера взят код из спецификации.
Код:
int main (void)
{   
  GPIO_Init();
  // EBC Init
  MDR_RST_CLK->PER_CLOCK |= 1 << 30;
  MDR_EBC->CONTROL = ((0 << 12)
                    | (0 << 3)
                    | (1 << 2)); // NAND

  MDR_EBC->NAND_CYCLES = 0xFFFFFFF; // max Timing

  LedCicle (5); // Test Live
  // page 194 Specification;
  // Spec.Version 3.10.0
  // после выполнения следующей этой строки МК виснет
  *((volatile unsigned char *)(0x77200480)) = 0x00; // cmd Read ID
  // закоментировано, так, как все равно не доходит до этого места
//  unsigned char idl = *((volatile unsigned char *)(0x77080000)); // Data Read ID
//  unsigned char idh = *((volatile unsigned char *)(0x77080000)); // Data Read ID

  while (1)
   { LedCicle (1); // Test Live
    }
}

LedCicle (5); - мигание светодиодом - для контроля, что МК работает
если закоментировать строку с записью команды то мигание светодиодами выполняется
Если запись команды происходит, то мигание светодиодом прекращается
Что пробовали:
- устанавливали максимальные (NAND_CYCLES = 0xFFFFFFF) и минимальные (NAND_CYCLES = 0x0) тайминги работы с NAND
- увеличивали и уменьшали частоту ядра.
- Формировали обращение к разным диапазонам. Вместо 0x77200480 использовали адреса 0x10200480, 0x60200480, 0xA0200480
Всегда результат одинаковый. после выполнения команды чтения ID - МК зависает. Под отладкой после зависания невозможно просмотреть содержимое регистров и памяти. Повторное подключение отладчика возможно только после сброса МК (по питанию или от кнопки).
Ошибки в инициализации портов или таймингов не должны приводить к зависанию ядра (моё мнение). EBC должен сформировать сигналы согласно настройкам.Причина зависания - не понятна.
Что делается не так?

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с NAND-памятью
СообщениеДобавлено: 2017-окт-13 09:08 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 371
Читаю "многочисленные" ответы и спецификацию на микросхему.
Возникает подозрение, что с NAND никто еще не работал на этом контроллере.
Проблема не решена.
По спецификации (глава "Работа с внешней NAND" кроме ВЕ94) возникли следующие вопросы
Спецификация 3.10.0. от 04.10.16

1.На стр.190, после таблицы 140 есть фраза "Контроллер внешней системной шины
во всех режимах не формирует сигналов выборки чипа СЕ."
На стр.193, табл.144 графа ФАЗА ДАННЫХ, для поля ADR[23:21] есть указание
"A[21] сигнализирует о необходимости снятия сигнала выбора кристалла по
завершению текущей команды".
Скорее всего опечатка, так как нет на портах соответствующего вывода.

2.Для работы с ОЗУ, ПЗУ есть диаграммы формирования команд записи-чтения.
Для режима NAND такие диаграммы отсутствуют.Хотелось бы их видеть, упрощает понимание процесса.

3.По регистру MDR_EBC->NAND_CYCLES поле t_alea[3:0]
Описание "Время доступа к регистрам ID."
Правильно понимаю - что это доступ к Идентификационным Данным микросхемы??
Почему это выделено отдельно? Модуль отслеживает соответствующую последовательность, чтобы сформировать задержку?
В описании на микросхему памяти такого параметра не нашел, время чтения всех данных одинаково.
Подключаем микросхему S34ML08G1 (Cypress)

4.Участвует ли в логике работы контроллера EBC сигнал Busy. Или он только отображается в регистре MDR_EBC->CONTROL?

5.По примеру кода в спецификации.
Комментарии указывают, что частота контроллера 100 МГц, хотя разрешенная частота работы 80 МГц.
Издержки копипаста (наверное)?

секция "Чтение ID"

*((volatile unsigned char *) (0x77200480)) = 0x00;
состав команды понятен (согласно таблице 144) - одна проблема останавливает ядро МК.Причины не выяснены.

Секция "Стирание блока"

// Фаза команды
*((volatile unsigned char *)(0x70768300))=0x11;
*((volatile unsigned char *)(0x70768301))=0x22;
*((volatile unsigned char *)(0x70768302))=0x33;
по первой строке все понятно (согласно таблице 144)
вопросы ко второй и третьей строкам.
Изменение значения в младшей тетраде - это "для себя" обозначить номер цикла?
Почему в каждом обращении задается 3 адресных цикла? И в каждом обращении код выполнения завершающей команды
Контроллер EBC отслеживает их количество по внутреннему счетчику (для формирования завершающей команды)?
Поэтому во втором и третьем обращении это поле не имеют значения?
Сразу дурацкий вопрос, если я записал первую строку, контроллер EBC будет обязательно ждать 2-ю и 3-ю,
Или эту операцию можно прервать (например командой записи данных).

6.Можно ли записывать данные в контроллер EBC обращаясь к данным бОльшей разрядности, например
*((volatile unsigned int *)(0x70088000))=0x12345678;

7.Будет ли контроллер EBC работать через каналы DMA при обращении к области памяти 0x3000_0000 –0x3FFF_FFFF
(или 0x:6000_0000 – xDFFF_FFFF) Согласно таблице 142 DMA имеет доступ к этим областям.
С учетом ERRATA ошибка 22 наверное правильно отредактировать таблицу 142(запретить доступ к области памяти 0x:5000_0000 – x5FFF_FFFF)

8.Кто нибудь работал на этом МК с NAND-флешь?

9.Есть отечественные микросхемы памяти объемом от 256 МБайт?

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с NAND-памятью
СообщениеДобавлено: 2017-окт-13 09:20 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 996
Откуда: Тула
У LDM-Systems есть отладочная плата на 1986ВЕ1 с такой памятью. В разделе "Документация" есть "Демонстрационный пример(1.45 МБ)" в котором, вроде как есть работа с этой памятью. Может это Вам поможет.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с NAND-памятью
СообщениеДобавлено: 2017-окт-13 11:35 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 371
Посмотрел пример работы. Функции nand_flash_Init, nand_flash_ReadID.
Если отбросить обертки, то все сводится к следующему
Инициализация EBC
MDR_RST_CLK->PER_CLOCK |= 1 << 30;
MDR_EBC->CONTROL = 4; // ((0 << 12)| (0 << 3) |(1 << 2)); // NAND
запись команды на чтение ID
cmd_addr = 0x77200480;
*(volatile unsigned char*)cmd_addr = 0x00;
в моем случае сразу используется константа.
Настройка выводов GPIO не должна влиять на работу EBC.
ps.в данном примере есть ошибка (или опечатка). В функции nand_flash_ReadID первая строка кода (после объявления локальных переменных).Код команды записан в 10-м формате, должен быть HEX. Если это принципиальное отличие - тогда нет слов.
*(volatile unsigned char*)77080000 = 0x00;

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с NAND-памятью
СообщениеДобавлено: 2017-окт-13 12:58 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 371
Разобрался. МК не виснет.
Причина - неверная настройка регистра MDR_EBC->NAND_CYCLES.
в ходе ряда экспериментов установил следующее
поле t_wp не должно быть равно 15 (0xF). все остальные поля этого регистра установлены 0xF.
то есть с настройкой
MDR_EBC->NAND_CYCLES = 0x0FFFEFFF; работает
с настройкой
MDR_EBC->NAND_CYCLES = 0x0FFFFFFF; не работает
MDR_EBC->NAND_CYCLES = 0x00000000; тоже не работает (но это мой косяк 0 тактов на длительность) Хотя не сказано что задавать нельзя.
возможно есть и другие ограничения. На соотношение между полями (типа как в CAN SJV строго меньше SEG2).
Главное EBC не вешает МК.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB