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

 
 
 
Reply to this topicStart new topic
> Два NIOSa с разными шинами
en-valb
сообщение Aug 4 2015, 16:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Всем доброго времени суток!
Пытаемся разделить два ниоса так чтобы из общего у них оставалась только тактовая частота и все. Принято такое решение потому что попытки реализовать многоядерную систему на одной общей шине приводило к тому что система очень сильно тормозила. Пришли к выводу что процессоры делили между собой шину. Решили разделить шину, каждому свою. На плате планируется оставить две SDRAM и одну EPCS. Но ни как не получается перекачать программу из EPCS в SDRAM второго ядра. В данный момент пробуем использовать SGDMA.
В Qsys собрана система NIOS II, on-chip, sysid, jtag_uart, pio, SDRAM_controller. Вторая система такая же. Все разделено, включая линии reset, первое ядро сбрасывается через clock_source, второе через reset_bridge. EPCS подключена к первому ядру. Задумка такая: сначала программа для второго ядра с помощью самодельного boot_loaderа закачивается из EPCS в SDRAM1 от туда данные перегоняются с помощью SGDMA в SDRAM2, и производиться сброс второй системы от PIO первой системы на reset_bridge второй. Далее программа для первой системы с помощью того же boot_loaderа перекачивается в SDRAM1 и для запуска первой системы выполняется переход на программу по адресу в SDRAM1. Если наблюдать из первой системы то все в порядке, программы перегружаются по очереди из EPCS, SGDMA благополучно отправляет данные в SDRAM2, производиться сброс второй системы, программа для первой системы благополучно выкачивается из EPCS и происходит переход первой системы на выполнение программы уже из SDRAM1. На первой и второй системе к PIO подключены по одному светодиоду, если все успешно, должны мигать оба светодиода, но мигает только один который подключен к первой системе. Вторая система. Для анализа зашли в дебаг второй системы и обнаружили что данные которые должны были с помощью SGDMA попасть в SDRAM2 туда не попали. Уже всю голову сломаль, возможно не правильно используем SGDMA? Еще есть идея сделать два SGDMA, один из первой системы mm to st, другой во вторую систему st to mm, или вообще перегнать данные через SPI, но эти два способа требуют наличие программы во втором ядре, программу можно разместить на on-chip через meminit, и запускаться через call на SDRAM2, но все это как то через чур. Хотелось бы перекачать данные с помощью одного ядра в каждую SDRAM и запустить обе системы на выполнение своих прграмм.Может кто ни будь сталкивался с подобной проблеммой, у кого есть какие решения, Еще одну флешку ставить не хочеться, лишни корпус на плате, плата маленькая.
Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 4 2015, 17:59
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



У меня похожая система.
Два Ниоса, у каждого свой нобор переферии.
Первый Ниос грузиться из epcs, код выполняется в SDRAM.
Второй ниос имеет два блока SRAM. В одном режит исполняемый код программы, второй блок используется как ОЗУ.
Go to the top of the page
 
+Quote Post
en-valb
сообщение Aug 5 2015, 02:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Цитата(COMA @ Aug 4 2015, 22:59) *
У меня похожая система.
Два Ниоса, у каждого свой нобор переферии.
Первый Ниос грузиться из epcs, код выполняется в SDRAM.
Второй ниос имеет два блока SRAM. В одном режит исполняемый код программы, второй блок используется как ОЗУ.


А как из EPCS грузится программа во второе ядро?
Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 5 2015, 04:49
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Никак.
Код второго ядра расположен в SRAM.
SRAM инициализируется при включении FPGA.
Go to the top of the page
 
+Quote Post
en-valb
сообщение Aug 5 2015, 05:19
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Цитата(COMA @ Aug 5 2015, 09:49) *
Никак.
Код второго ядра расположен в SRAM.
SRAM инициализируется при включении FPGA.



Т.е. SRAM имеется ввиду on-chip которая?
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 5 2015, 06:45
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Для второго ставите он-чип и пишите, примерно, это http://electronix.ru/forum/index.php?showt...=90394&st=0
Go to the top of the page
 
+Quote Post
en-valb
сообщение Aug 5 2015, 08:05
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Цитата(gosu-art @ Aug 5 2015, 11:45) *
Для второго ставите он-чип и пишите, примерно, это http://electronix.ru/forum/index.php?showt...=90394&st=0


Тут вы предлагаете из EPCS забирать программу для второго ядра по авалону, но EPCS ни как не соединяется со вторым ядром. Цель перекачать данные из EPCS в SDRAM второго ядра как то по другому, в первом посте описал как пытаемся реализовать и какие еще есть идеи.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Aug 5 2015, 11:22
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Мой вариант такой:
1. мультиплексор линий EPCS на 2 проца. (нужно будет за пределами Qsys сделать)
2. как только только загрузился master, он отдает линии EPCS, slave процу.
3. на slave крутится программа из on-chip и ждет флаг разрешения (PIO, например) что можно загрузить программу по данной методике (http://electronix.ru/forum/index.php?showt...=90394&st=0 ) в свою SDRAM из той же EPCS
У каждого процессора будет совой EPCS контроллер. В чем проблема добавить его для второго?
Go to the top of the page
 
+Quote Post
en-valb
сообщение Aug 5 2015, 11:43
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Цитата(gosu-art @ Aug 5 2015, 16:22) *
Мой вариант такой:
1. мультиплексор линий EPCS на 2 проца. (нужно будет за пределами Qsys сделать)
2. как только только загрузился master, он отдает линии EPCS, slave процу.
3. на slave крутится программа из on-chip и ждет флаг разрешения (PIO, например) что можно загрузить программу по данной методике (http://electronix.ru/forum/index.php?showt...=90394&st=0 ) в свою SDRAM из той же EPCS
У каждого процессора будет совой EPCS контроллер. В чем проблема добавить его для второго?


Хорошая идея, завтра попробую ее реализовать, я о чем то подобном думал, только я смотрел в сторону SDRAM, про EPCS как то не подумал!
Go to the top of the page
 
+Quote Post
prussta
сообщение Aug 6 2015, 11:34
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-02-12
Из: Екатеринбург
Пользователь №: 70 003



Попробовали с en-valb на простом проекте, все отлично заработало. Внесли аналогичные изменения в основной проект, пока не работает, что то slave как то не корректно загружается, то ли bootloader, то ли qsys, завтра продолжим разбираться.

Сообщение отредактировал prussta - Aug 6 2015, 11:36
Go to the top of the page
 
+Quote Post
en-valb
сообщение Aug 7 2015, 11:30
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 18-04-14
Из: Екатеринбург
Пользователь №: 81 446



Все, запустилось! 08.gif Дело было в файле mem_init, подключали его через .qip файл, не работало, когда скопировали в корень проекта сам .hex и подключили его все заработало. При чем в простом проекте через .qip работает. Не первый раз замечаю что mem_init файл от проекта к проекту успешно инициализируется по разному. В понедельник будем думать как разложить .sof и .hexы в нужных местах адресного пространства EPCS чтобы при корректировках ПО любого ядра не переделывать mem_init файл. Огромнейшее спасибо gosu-art за подсказку, целый месяц бились как сделать, решение оказалось тривиальным. a14.gif
Go to the top of the page
 
+Quote Post

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

 


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


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