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

 
 
 
Reply to this topicStart new topic
> загрузка программы в NIOS
billidean
сообщение Jun 5 2012, 09:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Создал систему Qsys в квартусе 11.1:
1. НИОС
2. on_chip_RAM - озу для НИОСа
3. сис.таймер
4. PIO - выходы, подключенные к лампочкам
RAM инициализирую hex-файлом по-умолчанию.
Компилю проект, получаю .sof-файл.
В NIOS II IDE создаю проект с использованием uC/OS, компилю, все ок.
Программирую квартусовским программером кристалл, заливаю из NIOS II IDE в НИОС программу, все тоже хорошо, лампочки мигают.

Задача: получить такой .sof-файл, чтобы не нужно было запускать программу НИОСа из NIOS II IDE.

Из доки "Developing NiosII Software" вычитал, что нужно расставить галочки в BSP Settings определенным образом, используя скрипт
"elf2hex <myapp>.elf <start_addr> <end_addr> --width=<data_width> <hex_filename>.hex" получить .hex-файл из .elf-файла,
в Qsys выставить инициализацию RAM своим сгенеренным .hex-ом, скомпилить, получить .sof-файл, и вроде как все.

Сделал все как там сказано, НО НИОС не заработал, лампочки не мигают.
<start_addr> и <end_addr> взял из Qsys, как begin и end для RAM-а.

Если после всех этих манипуляций я пытаюсь компилить проект в NIOS II IDE, то вылезает ошибка типа "multiple target ..." в файле mem_init.mk.
И тут я ваще ни.. не понимаю, что делать.

Кто занимался такими вещами ПЛЗЗЗ подскажите, в чем может быть мой косяк?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 5 2012, 14:22
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(billidean @ Jun 5 2012, 13:41) *
Сделал все как там сказано, НО НИОС не заработал, лампочки не мигают.
<start_addr> и <end_addr> взял из Qsys, как begin и end для RAM-а.

Это делается на совсем так.
В NiosII EDS, в Project Expolrer'е выделяйте Ваш софтовый проект и щелкайте по нему правой кнопкой. В меню выбирайте пункт Make Targets - Build.
Там выбираете mem_init_generate и жамкаете кнопку "Build".
Hex-файл создается в папке с вашим софтовым проектом, в поддиректории ..\mem_init
Добавьте файло meminit.qip из этой же папки в квартусовский проект и перекомпилируйте проект в квартусе.
После заливки вновь полученного sof'а проект должен сразу завестись.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
_Desh_
сообщение Jun 6 2012, 04:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 6-12-11
Пользователь №: 68 698



Цитата(Stewart Little @ Jun 5 2012, 18:22) *
Это делается на совсем так.
Там выбираете mem_init_generate и жамкаете кнопку "Build".
Hex-файл создается в папке с вашим софтовым проектом, в поддиректории ..\mem_init
Добавьте файло meminit.qip из этой же папки в квартусовский проект и перекомпилируйте проект в квартусе.
После заливки вновь полученного sof'а проект должен сразу завестись.


У меня в версии 9.1 такого пункта не было. Создал его вручную, в окне Create a new Make target в поле Target Name прописал mem_init, в поле Make Target прописал mem_init_generate. В поддиректории ..\mem_init создался файл .hex, но файла с расширением .qip нет. Подскажите, пожалуйста, в чем ошибка?
Go to the top of the page
 
+Quote Post
Копейкин
сообщение Jun 6 2012, 08:40
Сообщение #4


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

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



В 9.1 этот файл .hex и нужно подставить для квартуса, вместо созданного ранее.
И перекомпилировать проект.
Go to the top of the page
 
+Quote Post
billidean
сообщение Jun 6 2012, 13:54
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925



Цитата(Stewart Little @ Jun 5 2012, 17:22) *
Это делается на совсем так.
В NiosII EDS, в Project Expolrer'е выделяйте Ваш софтовый проект и щелкайте по нему правой кнопкой. В меню выбирайте пункт Make Targets - Build.
Там выбираете mem_init_generate и жамкаете кнопку "Build".
Hex-файл создается в папке с вашим софтовым проектом, в поддиректории ..\mem_init
Добавьте файло meminit.qip из этой же папки в квартусовский проект и перекомпилируйте проект в квартусе.
После заливки вновь полученного sof'а проект должен сразу завестись.


Спасибо большое!
Ваши рекомендации рабочие (а Альтеровские - нет sad.gif )
Go to the top of the page
 
+Quote Post
FLTI
сообщение May 31 2014, 18:06
Сообщение #6


Местный
***

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



Цитата(Stewart Little @ Jun 5 2012, 22:32) *
Это делается на совсем так.
В NiosII EDS, в Project Expolrer'е выделяйте Ваш софтовый проект и щелкайте по нему правой кнопкой. В меню выбирайте пункт Make Targets - Build.
Там выбираете mem_init_generate и жамкаете кнопку "Build".
Hex-файл создается в папке с вашим софтовым проектом, в поддиректории ..\mem_init
Добавьте файло meminit.qip из этой же папки в квартусовский проект и перекомпилируйте проект в квартусе.
После заливки вновь полученного sof'а проект должен сразу завестись.

Предыдущие свои вопросы удалил, наверное дальше сам разберусь.
P.S. Да разобрался.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Jun 1 2014, 13:40
Сообщение #7


Местный
***

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



Мне в этой теме непонятно - насколько данный HEX-файл, описывающий программную часть проекта, является зависимым или независимым от аппаратной части всего проекта, ведь он получен в Эклипсе с использованием .sof конкретного проекта. Но при этом из этого проекта в BSP используется только .sopcinfo.
Значит ли это, что я без проблем могу пользоваться данным HEX-файлом для любого проекта, в котором имеется та же самая программная часть при условии, что если я не буду менять QSYS-часть проекта ( в которой и находится On-chip Memory )?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 2 2014, 06:05
Сообщение #8


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(FLTI @ Jun 1 2014, 21:50) *
Мне в этой теме непонятно - насколько данный HEX-файл, описывающий программную часть проекта, является зависимым или независимым от аппаратной части всего проекта, ведь он получен в Эклипсе с использованием .sof конкретного проекта. Но при этом из этого проекта в BSP используется только .sopcinfo.

В создании elf-файла (и, соответственно, hex-а) sof никоим образом не участвует. Информацию об аппаратном составе системы компилятор получает из sopcinfo (как справедливо отмечено). А sof предназначен только для конфигурации FPGA.

Цитата(FLTI @ Jun 1 2014, 21:50) *
Значит ли это, что я без проблем могу пользоваться данным HEX-файлом для любого проекта, в котором имеется та же самая программная часть при условии, что если я не буду менять QSYS-часть проекта ( в которой и находится On-chip Memory )?
Что-то я не постиг глубину мысли.
Если у Вас не изменяется ни программная, ни аппаратная части, то о каком "любом проекте" тут может идти речь???


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
FLTI
сообщение Jun 2 2014, 06:19
Сообщение #9


Местный
***

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



Цитата(Stewart Little @ Jun 2 2014, 14:15) *
Что-то я не постиг глубину мысли.
Если у Вас не изменяется ни программная, ни аппаратная части, то о каком "любом проекте" тут может идти речь???

Судя по названию .sopcinfo описывает только QSYS (SOPC) часть проекта где и находится NIOS, для программы которого получен .hex файл.
Если программная часть не меняется, QSYS (SOPC) часть проекта тоже не меняется, а меняется только та часть проекта, которая не затрагивает QSYS (SOPC), то значит ли это что я могу использовать полученный .hex файл не меняя его, хотя сам проект в целом поменялся?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jun 2 2014, 06:28
Сообщение #10


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(FLTI @ Jun 2 2014, 14:29) *
Судя по названию .sopcinfo описывает только QSYS (SOPC) часть проекта где и находится NIOS, для программы которого получен .hex файл.
Если программная часть не меняется, QSYS (SOPC) часть проекта тоже не меняется, а меняется только та часть проекта, которая не затрагивает QSYS (SOPC), то значит ли это что я могу использовать полученный .hex файл не меняя его, хотя сам проект в целом поменялся?
Правильно ли я понимаю, что в Вашем квартусовском проекте есть система с ниосом, и кроме нее еще какие-то другие цифровые блоки?
И Вас интересует, можн ли использовать имеющийся hex для ниосовской системы при внесении изменений в эти другие блоки?
Если я правильно протелепатировал, то таки да - имеющийся hex использовать можно, т.к. ни состав, ни распределение адресного пространстав в ниосовской системе не изменилось.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
krux
сообщение Jun 2 2014, 06:35
Сообщение #11


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



для корректной работы вашего hex он должен быть собран с соответствующим вашей системе BSP., полученным из sopcinfo.
т.е. если вы пересобрали sof с добавлением каких-то ещё блоков, но при этом не переделывали qsys-компонент, то следовательно sopcinfo и BSP будут те же. И, соответственно, уже собранный до этого hex "сломаться" не может.
Это если код программы в On-chip Memory.

если есть EPCS Flash Controller то это отдельная история


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Jun 2 2014, 06:41
Сообщение #12


Местный
***

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



Цитата(Stewart Little @ Jun 2 2014, 14:38) *
Правильно ли я понимаю, что в Вашем квартусовском проекте есть система с ниосом, и кроме нее еще какие-то другие цифровые блоки?
И Вас интересует, можн ли использовать имеющийся hex для ниосовской системы при внесении изменений в эти другие блоки?

Да, именно так.
Цитата(Stewart Little @ Jun 2 2014, 14:38) *
Если я правильно протелепатировал, то таки да - имеющийся hex использовать можно, т.к. ни состав, ни распределение адресного пространстав в ниосовской системе не изменилось.

Большое спасибо!


Цитата(krux @ Jun 2 2014, 14:45) *
для корректной работы вашего hex он должен быть собран с соответствующим вашей системе BSP., полученным из sopcinfo.
т.е. если вы пересобрали sof с добавлением каких-то ещё блоков, но при этом не переделывали qsys-компонент, то следовательно sopcinfo и BSP будут те же. И, соответственно, уже собранный до этого hex "сломаться" не может.
Это если код программы в On-chip Memory.

Да, код программы в On-chip Memory.
Спасибо, я понял!

Go to the top of the page
 
+Quote Post
FLTI
сообщение Feb 27 2015, 05:44
Сообщение #13


Местный
***

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



Цитата(Stewart Little @ Jun 5 2012, 18:22) *
Это делается на совсем так.
В NiosII EDS, в Project Expolrer'е выделяйте Ваш софтовый проект и щелкайте по нему правой кнопкой. В меню выбирайте пункт Make Targets - Build.
Там выбираете mem_init_generate и жамкаете кнопку "Build".
Hex-файл создается в папке с вашим софтовым проектом, в поддиректории ..\mem_init
Добавьте файло meminit.qip из этой же папки в квартусовский проект и перекомпилируйте проект в квартусе.
После заливки вновь полученного sof'а проект должен сразу завестись.

А если выполняемая программа хранилась бы не в OnChip Memory, а в EPCS, то приведённая Вами процедура остаётся такой же, только вектора NIOSа будут направлены не на OnChip Memory, а на EPCS Flash Controller?

И ещё вопрос - в чём разница хранения выполняемой программы в OnChip Memory и в EPCS с точки зрения расходования блочной памяти ПЛИС ( M9K )?
Ведь даже если выполняемую программу хранить в EPCS, то для непосредственного выполнения она всё равно будет загружаться в OnChip Memory и расход блочной памяти ПЛИС ( M9K ) в обоих случаях будет одинаковым?
Если так, то как сделать, чтобы выполняемую программу хранить в EPCS и при этом не выделять OnChip Memory размером с эту программу?

Другими словами, можно ли выполняемую программу хранить в EPCS и оттуда же её и запускать?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 27 2015, 06:15
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



почему обязательно в ончип? программу можно и в ДДР перетолкать, и работать оттуда.
Go to the top of the page
 
+Quote Post
FLTI
сообщение Feb 27 2015, 06:19
Сообщение #15


Местный
***

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



Цитата(Golikov A. @ Feb 27 2015, 10:15) *
почему обязательно в ончип? программу можно и в ДДР перетолкать, и работать оттуда.

У меня нет на плате ДДР, поэтому такой вариант не рассматриваю.
Go to the top of the page
 
+Quote Post

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

 


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


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