Перейти к содержанию
    

Имеется:

Quartus 8.0

Nios II 8.0 IDE

 

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

 

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

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

 

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

Изменено пользователем dim99

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Процесс собирания в sopc не представляет ничего сложного, а вот компиляция в nios ii ide.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется:

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 может поддерживать несколько процов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Само руководство есть tt_nios2_multiprocessor_tutorial.pdf

И где-то здесь пример

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Проблема в чем заключается?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 dim99 - я вот что не могу понять - зачем вам 2 ядра выполняющие одну и ту же ф-цию ?? Вы что - ось собираетесь подымать на 2-х ядрах ??

Да и в той реализации , что по ссылкам - шина то у вас одна - кеша надо побольше в ниосы будет напихать , а то может системка подтормаживать.....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Kuzmi4

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

Сам процесс собирания ничем не отличается от простого проекта с 1 ядром.

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

 

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

irq (прерывания) - простенькая система присвоения приоритета (0-высший приоритет)

 

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

post-44580-1235575397_thumb.jpg

 

id_gene

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

 

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

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

 

2 dim99 - я вот что не могу понять - зачем вам 2 ядра выполняющие одну и ту же ф-цию ?? Вы что - ось собираетесь подымать на 2-х ядрах ??

Да и в той реализации , что по ссылкам - шина то у вас одна - кеша надо побольше в ниосы будет напихать , а то может системка подтормаживать.....

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Зачем один и тот же код. положите в каждый проект свои исходники. Удачи! Спрашивайте...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Абсолютно согласен - в принципе самое эффективное решение задачи - это просто распараллелить логику и уложить ее просто хардверно в FPGA

Можно наверное специальным Си компиллятором который превращает код в HDL - гикогда сам не делал но вроде как пищут что работает

Процесоор нужен для коммуникации с внешним миром

Если уж сделаны два процессора и есть Shared memory то ее можно поделить пополам и в одну область пишет один процесс а другой читает и наоборот, Можно сделать третью откуда оба читают

Наверное можно еще прерывание завести по которому можно заставлять другой процессор читать

А так два ядра на FPGA это как ящик водки украсть и продать чтобы пропить деньги

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Насчет кода каждому ядру:

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

Сегодня добью что и как, тогда и посмотрим.

 

Kuzmi4

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

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

Изменено пользователем dim99

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выяснил интересную деталь при компиляции software для 2 ядер.

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

При компиляции 1 ядра память не влияет на компиляцию, при 2 получается такая ерунда.

 

По поводу программного кода, кто писал, что можно использовать разные исходники оказался прав :)

в общем, каждое ядро выполняет свой исходный код.

 

В общем, у меня только один полувопрос :) почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, у меня только один полувопрос :) почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.
Сказать невозможно, пока вы не покажете целиком проект и логи компиляции. Скорее всего, вы неправильно настроили размещение секций. Для первого процессора все секции кода должны лежать в onchip, для второго - в onchip2. Настраивается в свойствах syslib.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, у меня только один полувопрос :) почему необходимо не менее 10 кб на on-chip memory каждому из ядер? и так ram памяти мало.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...