|
Intel Strata Flash + xps_mch_emc, не идет запись во флэш, JS28F128J3D75 и Microblaze |
|
|
|
Jul 2 2010, 15:53
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Подключил флэш к FPGA, подключил к Microblaze контроллер Flash/SRAM xps_mch_emc, сконфигурировал его по времянкам (с вдвое большими временами, чем требует даташит). Читаю данные из флэши вроде без проблем (по крайней мере, на отладочной плате Nexys2 считываю картинку, до этого записаную в эту флэш с помощью демонстрационного дизайна), а записать ничего не получается. Осциллографом вижу на шинах флэшки правильные времянки, адрес выставляется, данные поступают, сигналы записи формируются правильно, но данные во флэшке не меняются..
Записываю данные в виде:
*addr_flash = data; (вижу осциллографом отправляемые данные)
Во флэше по адресам, куда записываю FF храниться, вроде в этом случае не нужно стирать данные. Может чего в этом контроллере не реализовано для записи?
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Jul 3 2010, 16:07
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(Alex_VI @ Jul 2 2010, 19:53)  Подключил флэш к FPGA, подключил к Microblaze контроллер Flash/SRAM xps_mch_emc, сконфигурировал его по времянкам (с вдвое большими временами, чем требует даташит). Читаю данные из флэши вроде без проблем (по крайней мере, на отладочной плате Nexys2 считываю картинку, до этого записаную в эту флэш с помощью демонстрационного дизайна), а записать ничего не получается. Осциллографом вижу на шинах флэшки правильные времянки, адрес выставляется, данные поступают, сигналы записи формируются правильно, но данные во флэшке не меняются..
Записываю данные в виде:
*addr_flash = data; (вижу осциллографом отправляемые данные)
Во флэше по адресам, куда записываю FF храниться, вроде в этом случае не нужно стирать данные. Может чего в этом контроллере не реализовано для записи? Проверьте, может она просто "залочена".
|
|
|
|
|
Jul 5 2010, 04:30
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Mad_max @ Jul 3 2010, 20:07)  Проверьте, может она просто "залочена". Нет, не залочена.. Как мне примерно удалось понять, чтобы записать в память, нужно подать ей команду для переключения в режим записи, делается по аналогии с CFI интерфейсом для CF карточек, xps_mch_emc поддерживает два типа интерфейса (интеловский и еще один, забыл). Каким образом воспользоваться этим я пока не понял, есть пример для CF карточек, а для конкретно этой памяти нет (хотя в даташите есть описание подключения ее). Но зато получилось прошить флэшку с помощью Program Flash memory в XPS..
|
|
|
|
|
Jul 5 2010, 06:45
|
Местный
  
Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715

|
Приветствую. Скачайте отсюда реф. дизайн: http://www.xilinx.com/products/boards/ml40..._emb_ref_81.zipТам есть библиотека работы с параллельной флешь, с тестами и примерами. Мы использовали ее в своих разработках, все ОК. Удачи.
|
|
|
|
|
Jul 5 2010, 09:45
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 5-02-09
Пользователь №: 44 455

|
Цитата(Alex_VI @ Jul 5 2010, 08:30)  Нет, не залочена.. Как мне примерно удалось понять, чтобы записать в память, нужно подать ей команду для переключения в режим записи, делается по аналогии с CFI интерфейсом для CF карточек, xps_mch_emc поддерживает два типа интерфейса (интеловский и еще один, забыл). Каким образом воспользоваться этим я пока не понял, есть пример для CF карточек, а для конкретно этой памяти нет (хотя в даташите есть описание подключения ее). Но зато получилось прошить флэшку с помощью Program Flash memory в XPS.. Как раз пишу свой котроллер этой флэшки на фпга. Судя по тому что вы пишите - она у вас как раз залочена либо вы не дождались пока запись пройдёт (это около 110 мкс у моей флэшке). Каждый раз после ресета флэшка автоматически лочит все блоки. Цитата Как мне примерно удалось понять, чтобы записать в память, нужно подать ей команду для переключения в режим записи Чтобы записать в память, нужно сначало подать команду на анлок блока, потом сказать какой блок анлочить, потом подать команду на запись, потом данные на запись, потом считать статус операции (Кстати какой он у вас?). Если запись прошла успешно, статус у моей флэшки 0x80 Если флэш всё ещё в процессе записи, что-то вроде 0x20 (но точно не помню). Если все времянки правильные + выполнен анлок блока + программируемое слово == 0xFF + все напряжения правильные (а если у вас флэш прошивается другим инструментом, то они видимо правильные) => флэшь должна прошиться.
Сообщение отредактировал Arranje - Jul 5 2010, 10:06
|
|
|
|
|
Jul 5 2010, 18:09
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Arranje @ Jul 5 2010, 13:45)  Чтобы записать в память, нужно сначало подать команду на анлок блока, потом сказать какой блок анлочить, потом подать команду на запись, потом данные на запись, потом считать статус операции (Кстати какой он у вас?). Если запись прошла успешно, статус у моей флэшки 0x80 Если флэш всё ещё в процессе записи, что-то вроде 0x20 (но точно не помню). Вот, собственно этого я и не могу понять, как отправлять ей команды.. В адресном пространстве Microblaze она занимает 16Мб, а где находятся регистры не нашел информации. Может я, конечно, плохо читаю даташит на контроллер, но так и не дошло..
|
|
|
|
|
Jul 6 2010, 08:36
|
Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811

|
Цитата(Alex_VI @ Jul 5 2010, 22:09)  Вот, собственно этого я и не могу понять, как отправлять ей команды.. В адресном пространстве Microblaze она занимает 16Мб, а где находятся регистры не нашел информации. Может я, конечно, плохо читаю даташит на контроллер, но так и не дошло.. Эти 16Мб - отображение памяти Microblaze не для конкретно Вашей флэш, а для external memory controller, к которому может цепляться не только флэш, но и например SRAM. Соответственно про регистры надо читать в документации на Вашу IntelStrata. Вам кидали ссылку на reference design, там много примеров работы с флэш, рекомендую найти нужное Вам там, а не пытаться самому писать низкоуровневые драйвера для флэша.
|
|
|
|
|
Jul 6 2010, 09:24
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 5-02-09
Пользователь №: 44 455

|
Цитата(Alex_VI @ Jul 5 2010, 22:09)  Вот, собственно этого я и не могу понять, как отправлять ей команды.. В адресном пространстве Microblaze она занимает 16Мб, а где находятся регистры не нашел информации. Может я, конечно, плохо читаю даташит на контроллер, но так и не дошло.. Вам нужна документация не на контроллер, а на Intel Strata flash J3/P30/"Ваш тип". Боятся писать низкоуровневые драйверы не стоит - они пишутся быстро (т.к. нечего сложного в работе с флэш нет), но взяв готовые вы можете сэкономить немного времени.
|
|
|
|
|
Jul 6 2010, 18:44
|
Участник

Группа: Свой
Сообщений: 56
Регистрация: 17-11-08
Из: Москва
Пользователь №: 41 710

|
Цитата(Mad_max @ Jul 6 2010, 12:36)  Эти 16Мб - отображение памяти Microblaze не для конкретно Вашей флэш, а для external memory controller, к которому может цепляться не только флэш, но и например SRAM. Соответственно про регистры надо читать в документации на Вашу IntelStrata. Вам кидали ссылку на reference design, там много примеров работы с флэш, рекомендую найти нужное Вам там, а не пытаться самому писать низкоуровневые драйвера для флэша. Тем не менее, при чтении по этим адресам я вижу то, что записал во флэш... Документацию на память, понятное дело читал, там приведены диаграммы для входа в режим чтения/записи регистров. Тайминги отличаются от режимов чтения/записи данных. Поэтому мне и не понятно стало, как с помощью данного контроллера увидеть регистры. Референс посмотрю, конечно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|