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

 
 
> Remote Update Xilinx 7 series FPGAs
doom13
сообщение Jan 13 2016, 07:51
Сообщение #1


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Хочу реализовать поддержку удалённого обновления ПО для Virtex-7 (XC7VX690T) с возможностью хранения в конфигурационном девайсе нескольких прошивок. В качестве конфигурационного девайса используется Flash Micron G18 (MT28GU01GAAX1E) 1024 Mb, режим конфигурации Master BPI.
Пока основной вопрос - есть ли какое-то стандартное ядро для чтения/записи BPI flash (Parallel NOR Flash)? Или тут придётся делать свой контроллер для Parallel NOR Flash памяти (возможно позаимствовать из примеров xapp1081, xapp518)?
Спасибо.

Ещё вопрос, для прошивки в конфигурационную память будет использоваться BIN-файл?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
jojo
сообщение Jan 14 2016, 12:33
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 574
Регистрация: 9-10-04
Из: FPGA-city
Пользователь №: 827



Я сильно не думал над этим, взял модель микросхемы памяти на Verilog от Micron и конвертировал оттуда тест на язык Си.
То, что было на Verilog регистрами, вывел из FPGA через GPIO.
Чисто софтовое решение, bitbang.

Когда несколько bin зашиты в ПЗУ, по адресу любой прошивки можно сделать горячую перезагрузку.

Что нужно шить я сейчас не помню, нужно уточнить. По идее это BIN или его производные в формате Hex.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 14 2016, 13:05
Сообщение #3


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Похоже, ядро AXI EMC v3.0 можно использовать для чтения/записи флэшки. Но пока не могу понять как его законнектить, если кто с ним работал просьба подсказать. Схема в pdf-файле.
Память подключена для синхронной записи/чтения (рисунок из ug470), ногу FPGA CCLK_0_AE34 не могу подключить к линии CCLK_FPGA, что-то её выкидывает
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  flash.pdf ( 2.68 мегабайт ) Кол-во скачиваний: 18
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 20 2016, 19:21
Сообщение #4


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Разобрался, подключение контроллера к памяти можно посмотреть тут (AXI_EMC_IP_STARTUPE3.zip). Далее используем библиотеку XilFlash или драйвер от Micron.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 22 2016, 09:02
Сообщение #5


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(doom13 @ Jan 13 2016, 10:51) *
Ещё вопрос, для прошивки в конфигурационную память будет использоваться BIN-файл?

Для удалённого обновления используется BIN-файл.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 25 2016, 13:54
Сообщение #6


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Есть ли возможность выдать сигнал на пин INIT_B? Хочу после загрузки прошивки выдать сигнал сброса на flash-память.
Go to the top of the page
 
+Quote Post
Maksim
сообщение Jan 25 2016, 21:26
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



Цитата(doom13 @ Jan 25 2016, 16:54) *
Приветствую.
Есть ли возможность выдать сигнал на пин INIT_B? Хочу после загрузки прошивки выдать сигнал сброса на flash-память.


он после загрузки ПЛИС, вроде становится пользовательским выводом - "делай, что хочешь"


--------------------
qwerty
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 26 2016, 07:43
Сообщение #8


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Maksim @ Jan 26 2016, 00:26) *
он после загрузки ПЛИС, вроде становится пользовательским выводом - "делай, что хочешь"

В доке тип ноги INIT_B указан как Dedicated, при попытке назначения Vivado выбрасывает ошибку. CCLK также Dedicated (при попытке назначения выдаст ошибку), но к нему возможно получить доступ через STARTUPE2. Есть ли что-то аналогичное для INIT_B?

Есть проблема в работе конфигурационной памяти. Конфигурационная флэшка нормально работает в случае закрузки FPGA по JTAG. Есть AXI EMC плюс софтовый драйвер (XilFlash или драйвер от Micron, работают одинаково хорошо), можем писать/читать данные в/с флэш-памяти. Но вот если система стартовала при включении питания, конфигурационная память использовалась загрузчиком FPGA, то есть какая-то проблема. Софтовый драйвер не может пройти процедуру инициализации памяти. Кусок кода, где происходит ошибка:
Код
   /* Step 1: Send the Read CFI Command */
   FLASH_WRITE(0x0055, CMD(0x0098));

   /* Step 2: Check that the CFI interface is operable */
   if( (FLASH_READ(0x0010) != CMD(0x0051)) ||
       (FLASH_READ(0x0011) != CMD(0x0052)) ||
       (FLASH_READ(0x0012) != CMD(0x0059)) )
      return Flash_CfiFailed;

FLASH_READ(0x0010) выдаст 0, если поставить breakpoint и вернуться прочитать всё повторно, то условие выполнится. Вот и пытаюсь найти различия в вариантах загрузки FPGA.
Go to the top of the page
 
+Quote Post
Maksim
сообщение Jan 27 2016, 11:10
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



ПЛИС загрузилась из флэш памяти, а потом внутри неё процессор не может получить к ней доступ?
Чипскопом посмотреть, что выдаётся на ноги флэш, пробовали?


--------------------
qwerty
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 27 2016, 12:25
Сообщение #10


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Maksim @ Jan 27 2016, 14:10) *
ПЛИС загрузилась из флэш памяти, а потом внутри неё процессор не может получить к ней доступ?

Да, ПЛИС загрузилась с флэша и работает. Есть MicroBlaze, AXI EMC и др. В программе MicroBlaze используется библиотека для работы с флэш-памятью ( 1.XilFlash или 2.либа от Micron, выше был кусок кода для функции инициализации флэша из либы Micron). Если ПЛИС стартовала с флэша, то функция инициализации флэша не проходит (кусок кода, где получается ошибка, - выше).
Цитата(Maksim @ Jan 27 2016, 14:10) *
Чипскопом посмотреть, что выдаётся на ноги флэш, пробовали?

Пробовал повесить на ноги флэша ILA (использую Vivado 2015.2), но не вышло, всё время выдаёт ошибку (ILA подключался в сечении порты модуля AXI EMC - выходные буферы FPGA).
Go to the top of the page
 
+Quote Post
Maksim
сообщение Jan 27 2016, 14:20
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



[/quote]
Пробовал повесить на ноги флэша ILA (использую Vivado 2015.2), но не вышло, всё время выдаёт ошибку (ILA подключался в сечении порты модуля AXI EMC - выходные буферы FPGA).
[/quote]
Если есть свободные "ноги", то можно на них вывести что идёт флэш, а уже к ним попробовать чипскоп подключить, иногда, помогает, когда чипскоп не хочет подключаться


--------------------
qwerty
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jan 27 2016, 16:34
Сообщение #12


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

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(Maksim @ Jan 27 2016, 16:20) *
Пробовал повесить на ноги флэша ILA (использую Vivado 2015.2), но не вышло, всё время выдаёт ошибку (ILA подключался в сечении порты модуля AXI EMC - выходные буферы FPGA).

Если есть свободные "ноги", то можно на них вывести что идёт флэш, а уже к ним попробовать чипскоп подключить, иногда, помогает, когда чипскоп не хочет подключаться

Надо цеплять ILA не к внешим портам (он такого не позволяет так как физически не подключится) а к линия идущим ко входам OBUF,IOBUF, и от выходов IBUF IOBUF.
Если буфера уже расположенны в корке то легким движенеим рук это не сделать - приходится "рыть" gate-level после синтеза.

Успехов! Rob.

Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 27 2016, 18:04
Сообщение #13


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(RobFPGA @ Jan 27 2016, 19:34) *
Надо цеплять ILA не к внешим портам (он такого не позволяет так как физически не подключится) а к линия идущим ко входам OBUF,IOBUF, и от выходов IBUF IOBUF.
Если буфера уже расположенны в корке то легким движенеим рук это не сделать - приходится "рыть" gate-level после синтеза.

Так и делал. После выполнения анализа открыл схему и натыкал Debug point-ов между портами модуля AXI EMC и входными/выходными буферами FPGA. Пробовал поставить Debug point-ы внутри самого модуля AXI EMC, но результат тот же - ошибки. Решил, что Vivado не может прикрутить ILA к шине флэша (завтра ещё раз перепроверю).
Go to the top of the page
 
+Quote Post
Maksim
сообщение Jan 27 2016, 20:50
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 164
Регистрация: 27-06-04
Пользователь №: 194



так подключали?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
qwerty
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2016, 08:22
Сообщение #15


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Maksim @ Jan 27 2016, 23:50) *
так подключали?

Такой вариант сейчас опробую, но пока было так: на рисунке 1 показано сечение, куда ставятся Debug point-ы.
Выкидывает ошибку на этапе Bitstream Generation (Synthesis & Implementation проходят нормально):
Цитата
[DRC 23-20] Rule violation (RTSTAT-2) Partially routed net - 45 net(s) are partially routed. The problem bus(es) and/or net(s) are CPU/axi_emc_0/U0/mem_a[30:0], CPU/axi_emc_0/U0/EMC_CTRL_I/IO_REGISTERS_I/mem_cen[0], CPU/axi_emc_0/U0/EMC_CTRL_I/IO_REGISTERS_I/mem_dq_o[15:0], CPU/axi_emc_0/U0/EMC_CTRL_I/IO_REGISTERS_I/mem_oen[0], CPU/axi_emc_0/U0/EMC_CTRL_I/IO_REGISTERS_I/mem_wen_reg.

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2016, 13:06
Сообщение #16


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Maksim @ Jan 27 2016, 23:50) *
так подключали?

Спасибо, так собралось.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 28 2016, 19:07
Сообщение #17


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Проблема с работой флэш-памяти при загрузке FPGA с флэшки остаётся. Получается в данной ситуации после операции записи, операция чтения проходит со второй попытки, о чём и писал в сообщении №8 данной темы. Думаю, ресет тут помог бы, но он идёт с ножки INIT_B, по схеме Master BPI всё правильно, но не работает.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 29 2016, 13:31
Сообщение #18


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



1. Если ПЛИС загружалась по JTAG, то память работает нормально (рисунок 1), MicroBlaze выполняет код:
Код
/* Step 1: Send the Read CFI Command */
FLASH_WRITE(0x0055, CMD(0x0098));

/* Step 2: Check that the CFI interface is operable */
if( (FLASH_READ( 0x0010 ) != CMD(0x0051)) ||
       (FLASH_READ( 0x0011 )  != CMD(0x0052)) ||
       (FLASH_READ( 0x0012 )  != CMD(0x0059)) )
      return Flash_CfiFailed;

2. Если ПЛИС стартовала с флэша, то память работает криво (рисунок 2), MicroBlaze выполняет код:
Код
/* Step 1: Send the Read CFI Command */
FLASH_WRITE(0x0055, CMD(0x0098));

/* Step 2: Check that the CFI interface is operable */
data = FLASH_READ( 0x0010 );
if( (FLASH_READ( 0x0010 )  != CMD(0x0051)) ||
       (FLASH_READ( 0x0011 )  != CMD(0x0052)) ||
       (FLASH_READ( 0x0012 ) != CMD(0x0059)) )
      return Flash_CfiFailed;

Во втором случае, чтобы пройти инициализацию памяти, добавлена дополнительная операция чтения.
Для ядра AXI EMC есть настройки таймингов (рисунок 3), их взял из pg100, там как раз аналогичная память используется. Пробовал их менять, влияния не оказывают. Ещё пробовал менять частоту тактирования памяти, источник тактирования, разрешать тактирующую частоту через определённый интервал времени после загрузки прошивки - результат такой же.
Нужна помощь. Какие будут идеи?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 29 2016, 20:14
Сообщение #19


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Дальнейшее обсуждение вопроса тут.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Mar 31 2016, 13:40
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Я с этой XilFlash чего-то намучился, в итоге забил и написал почти все сам.
Go to the top of the page
 
+Quote Post
doom13
сообщение Mar 31 2016, 14:20
Сообщение #21


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

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Koluchiy @ Mar 31 2016, 16:40) *
Я с этой XilFlash чего-то намучился, в итоге забил и написал почти все сам.

Лучше взять драйвер у Micron, там уже всё сделано и без привязки к конкретной платформе (у меня используется из Linux User Space, пришлось подправить одну строчку в исходниках Micron).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 13:38
Рейтинг@Mail.ru


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