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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 2-ух ядерный Nios II, написание сфота под нее
dim99
сообщение Feb 24 2009, 14:40
Сообщение #1


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Имеется:
Quartus 8.0
Nios II 8.0 IDE

В SOPC Buider сгенерил систему с 2-мя ядрами nios ii с общей памятью sram, для разделения использую mutex от altera.

Проблема заключается в компиляции проекта в nios ide, а именно при компиляции совместно двух проектов для разных ядер.
Может кто сталкивался с 2-мя ядрами, есть ли пример для них? буду благодарен за любую помощь.

Скачать с сайта альтеры пример - не помогло, они дают в качестве software лишь сишный файл, без всякого проекта.

Сообщение отредактировал dim99 - Feb 24 2009, 15:07
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 24 2009, 16:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dim99 - а не могли бы вы по подробнее описать этот самый процесс собирания прожекта и совместную компиляцию для 2-х ядер ??
Go to the top of the page
 
+Quote Post
dim99
сообщение Feb 24 2009, 18:26
Сообщение #3


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



А что конкретно интересует?

Процесс собирания в sopc не представляет ничего сложного, а вот компиляция в nios ii ide.
завтра постараюсь прилепить скрины, чтоб было понятно о чем идет речь, пока не могу этого сделать.
Go to the top of the page
 
+Quote Post
islavv
сообщение Feb 25 2009, 04:56
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-11-08
Пользователь №: 41 522



Цитата(dim99 @ Feb 24 2009, 18:40) *
Имеется:
Quartus 8.0
Nios II 8.0 IDE

В SOPC Buider сгенерил систему с 2-мя ядрами nios ii с общей памятью sram, для разделения использую mutex от altera.

Проблема заключается в компиляции проекта в nios ide, а именно при компиляции совместно двух проектов для разных ядер.
Может кто сталкивался с 2-мя ядрами, есть ли пример для них? буду благодарен за любую помощь.

А можно поинтересоваться где у Altera на сайте описано как работает процессор Nios-II с двумя ядрами?
И опять же где описано как два ядра используют общую память?
Мне самому было интересно что на Сусlon можно запихать множество Nios - однако как их интегрировать и как IDE может поддерживать несколько процов?
Go to the top of the page
 
+Quote Post
dim99
сообщение Feb 25 2009, 06:36
Сообщение #5


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Ссылка на источник прилагается десь

Само руководство есть tt_nios2_multiprocessor_tutorial.pdf
И где-то здесь пример
Go to the top of the page
 
+Quote Post
id_gene
сообщение Feb 25 2009, 09:51
Сообщение #6


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



Цитата(dim99 @ Feb 24 2009, 17:40) *
Проблема заключается в компиляции проекта в nios ide, а именно при компиляции совместно двух проектов для разных ядер.
Может кто сталкивался с 2-мя ядрами, есть ли пример для них? буду благодарен за любую помощь.
Проблема в чем заключается?
Когда создаете в IDE новый проект, указываете ptf и из списка выбираете процессор, для которого собирается софт. В итоге в ИДЕ у вас два проекта. Компилируете оба проекта.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 25 2009, 10:01
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dim99 - я вот что не могу понять - зачем вам 2 ядра выполняющие одну и ту же ф-цию ?? Вы что - ось собираетесь подымать на 2-х ядрах ??
Да и в той реализации , что по ссылкам - шина то у вас одна - кеша надо побольше в ниосы будет напихать , а то может системка подтормаживать.....
Go to the top of the page
 
+Quote Post
dim99
сообщение Feb 25 2009, 15:24
Сообщение #8


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Kuzmi4
Цитата
а не могли бы вы по подробнее описать этот самый процесс собирания прожекта и совместную компиляцию для 2-х ядер ??

Сам процесс собирания ничем не отличается от простого проекта с 1 ядром.
Нюансы, с которыми столкнулся при сборе 2-ух ядер:

матрица соединений - черные\белые точки на закладке connections - черненькая открывает канал, белая закрывает
irq (прерывания) - простенькая система присвоения приоритета (0-высший приоритет)

Собственно особых вопросов это у меня не вызвало. на рисунке показана сборка 2-ух ядер с матрицей соединений:
Прикрепленное изображение


id_gene
Цитата
Когда создаете в IDE новый проект, указываете ptf и из списка выбираете процессор, для которого собирается софт. В итоге в ИДЕ у вас два проекта. Компилируете оба проекта.


Проблемы возникли при компиляции, но вроде потихоньку разгребаю.
По примеру от альтеры получается, что каждое ядро будет дублировать один и тот же код программы, с этим пока вопрос завтра покопаю.

Цитата(Kuzmi4 @ Feb 25 2009, 13:01) *
2 dim99 - я вот что не могу понять - зачем вам 2 ядра выполняющие одну и ту же ф-цию ?? Вы что - ось собираетесь подымать на 2-х ядрах ??
Да и в той реализации , что по ссылкам - шина то у вас одна - кеша надо побольше в ниосы будет напихать , а то может системка подтормаживать.....


Вообще, это тема моей бакалавриатской работы и параллельно по работе.

Речи ни о какой оси не идет, просто проверить возможности нескольких ядер в одном проекте, как себя поведут, вдруг что и пригодится.
Go to the top of the page
 
+Quote Post
id_gene
сообщение Feb 25 2009, 15:58
Сообщение #9


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



Цитата(dim99 @ Feb 25 2009, 18:24) *
Проблемы возникли при компиляции, но вроде потихоньку разгребаю.
По примеру от альтеры получается, что каждое ядро будет дублировать один и тот же код программы, с этим пока вопрос завтра покопаю.
Зачем один и тот же код. положите в каждый проект свои исходники. Удачи! Спрашивайте...
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 25 2009, 16:40
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 dim99 - вам же id_gene дал чёткий ответ - ложите в каждое ядро свой код и будет вам счастие biggrin.gif

А чем вам не нравится система , где каждый ниос со своей шиной + зашаренная область для всех ядер ? зачем вам всю эту гурьбу садить на 1 шину - чтоб потом 1 cpu ждал пока 2-й освободит ему шину (в смысле я про доступ в память например) ??
Go to the top of the page
 
+Quote Post
islavv
сообщение Feb 26 2009, 04:56
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-11-08
Пользователь №: 41 522



Цитата(Kuzmi4 @ Feb 25 2009, 19:40) *
2 dim99 - вам же id_gene дал чёткий ответ - ложите в каждое ядро свой код и будет вам счастие biggrin.gif

А чем вам не нравится система , где каждый ниос со своей шиной + зашаренная область для всех ядер ? зачем вам всю эту гурьбу садить на 1 шину - чтоб потом 1 cpu ждал пока 2-й освободит ему шину (в смысле я про доступ в память например) ??

Абсолютно согласен - в принципе самое эффективное решение задачи - это просто распараллелить логику и уложить ее просто хардверно в FPGA
Можно наверное специальным Си компиллятором который превращает код в HDL - гикогда сам не делал но вроде как пищут что работает
Процесоор нужен для коммуникации с внешним миром
Если уж сделаны два процессора и есть Shared memory то ее можно поделить пополам и в одну область пишет один процесс а другой читает и наоборот, Можно сделать третью откуда оба читают
Наверное можно еще прерывание завести по которому можно заставлять другой процессор читать
А так два ядра на FPGA это как ящик водки украсть и продать чтобы пропить деньги
Go to the top of the page
 
+Quote Post
dim99
сообщение Feb 26 2009, 06:30
Сообщение #12


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Спасибо за предложения, но моя задача на сегодняшний день просто разобраться как оно работает, а дальше уже буду рассматриваться варианты что и как smile.gif

Насчет кода каждому ядру:
смутило, что альтеровский исходник представляет собой только 1 файл .c и описание, что его нужно везде копироват в проект и будет вам счастье.
Сегодня добью что и как, тогда и посмотрим.

Kuzmi4
Цитата
А чем вам не нравится система , где каждый ниос со своей шиной?

Что-то не пойму, в явном виде разве есть компоненты шины авалон или речь идет о Avalon-MM Pipeline Bridge?

Сообщение отредактировал dim99 - Feb 26 2009, 06:40
Go to the top of the page
 
+Quote Post
dim99
сообщение Feb 26 2009, 13:37
Сообщение #13


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

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Выяснил интересную деталь при компиляции software для 2 ядер.
В общем удачно компиляция проходит, только если память для каждого ядра больше 10 Кб, с чем это конкретно связано непонятно.
При компиляции 1 ядра память не влияет на компиляцию, при 2 получается такая ерунда.

По поводу программного кода, кто писал, что можно использовать разные исходники оказался прав smile.gif
в общем, каждое ядро выполняет свой исходный код.

В общем, у меня только один полувопрос smile.gif почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.
Go to the top of the page
 
+Quote Post
id_gene
сообщение Feb 27 2009, 08:43
Сообщение #14


carpe manana
***

Группа: Свой
Сообщений: 321
Регистрация: 2-06-05
Пользователь №: 5 659



Цитата(dim99 @ Feb 26 2009, 16:37) *
В общем, у меня только один полувопрос smile.gif почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.
Сказать невозможно, пока вы не покажете целиком проект и логи компиляции. Скорее всего, вы неправильно настроили размещение секций. Для первого процессора все секции кода должны лежать в onchip, для второго - в onchip2. Настраивается в свойствах syslib.
Go to the top of the page
 
+Quote Post
slog
сообщение Feb 27 2009, 15:03
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Цитата(dim99 @ Feb 26 2009, 16:37) *
В общем, у меня только один полувопрос smile.gif почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.

Если вы не укажете в свойствах библиотеки что нужно использовать Lightweight device driver API, Small C library, Reduced device driver, Program never exits - то 10кБ это минимальный объём который занимает простейший HelloWorld!. laughing.gif


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post

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

 


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


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