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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Загрузка NIOS с флеш
Desmiles
сообщение Sep 11 2017, 14:44
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 11-09-17
Пользователь №: 99 236



Доброго времени суток! Возникла проблема с запуском программы NIOS из флеш памяти.
Создал конфигурацию ПЛИС, NIOS и написал программу. Всё работает, но только при непосредственном запуске из эклипса. Никак не получается записать на флеш и запустить с неё. При этому непосредственно логика ПЛИС работает после прошивки (перезагрузки).
Входная частота 20 МГц, после PPL в QSYS 100 МГц.
Делаю mem_init_generate и добавляю qip файл от этого mem_init_generate.

Следую данной иструкции:
1- Add EPCS Flash Controller in Qsys
2- Connect the Clk input of EPCS Flash Loader IP to a separate clock of < 25Mhz
3- Set Reset Vector offset of NiosII to the Base Address of EPCS Flash Loader.
4- Set Exception vector to any On Chip RAM
5- Generate Qsys
6- Open BSP Editor and set all linker regions to SDRAM / onchip memory
7- Generate BSP and Build the BSP project
8- Build Your C code and obtain *.elf
9- Goto make targets->Build and run "mem_init_generate"
10- From mem_init folder include *.qip file in your Quartus project and recompile to get *.SOF
11- copy *.SOF and *.elf files in a separate folder i.e /output
12- perform following in NiosII command Shell:

1. Create a flash file for the hardware and software image
sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose
elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose


2. Convert the flash images into Hex files

nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex
nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex


3. Generate *.JIC file

Create your jic file using Quartus® II Convert Programming File tool, add the Flash Loader and
both hex files with absolute addressing option selected.

Подскажите что может быть?







Go to the top of the page
 
+Quote Post
Swup
сообщение Sep 11 2017, 16:39
Сообщение #2


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

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Уберите flash контроллер. Он вам сейчас явно не нужен.
Поставьте вектор сброса тоже на ончип память.


Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 12 2017, 12:29
Сообщение #3


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

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



Цитата(Swup @ Sep 11 2017, 19:39) *
Уберите flash контроллер. Он вам сейчас явно не нужен.
Поставьте вектор сброса тоже на ончип память.

Уточню.
Топикстартер делает две взаимоисключающие вещи - mem_init_generate и вектор сброса на EPCS Flash Controller.

Mem_init_generate нужно выполнять в том случае, если хочется положить исполняемый код прямо в sof-файл - т.е. в этом случае сегмент кода располагается в OnChip RAM, туда же должен указывать вектор сброса.

Если же при старте хочется загружать исполняемый код из EPCS (например, во внешнее ОЗУ), то для этого служит EPSC Flash Controller, и вектор сброса должен указывать на него. При старте системы первой начнет выполняться программа-копировшик, которая живет внутри EPSC Flash Controller'а. И после того, как исполняемый код будет перелит в нужное ОЗУ, копировшик передаст управление этому коду.
Но в этом случае необходимо, чтобы в настройках BSP было бы запрещено исполнение кода приложения с адреса сброса (галка "Allow code at reset" должна быть сброшена).


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Desmiles
сообщение Sep 13 2017, 08:09
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 11-09-17
Пользователь №: 99 236



Цитата(Stewart Little @ Sep 12 2017, 12:29) *
Уточню.
Топикстартер делает две взаимоисключающие вещи - mem_init_generate и вектор сброса на EPCS Flash Controller.

Mem_init_generate нужно выполнять в том случае, если хочется положить исполняемый код прямо в sof-файл - т.е. в этом случае сегмент кода располагается в OnChip RAM, туда же должен указывать вектор сброса.

Если же при старте хочется загружать исполняемый код из EPCS (например, во внешнее ОЗУ), то для этого служит EPSC Flash Controller, и вектор сброса должен указывать на него. При старте системы первой начнет выполняться программа-копировшик, которая живет внутри EPSC Flash Controller'а. И после того, как исполняемый код будет перелит в нужное ОЗУ, копировшик передаст управление этому коду.
Но в этом случае необходимо, чтобы в настройках BSP было бы запрещено исполнение кода приложения с адреса сброса (галка "Allow code at reset" должна быть сброшена).


Спасибо за сведения!

Пробую всё таки сделать с mem_init, добавляю mem_init.qip к проекту и никаких результатов. Сброс естественно на он чип. И как определить где должен располагаться код, т.е. где эта настройка?


Go to the top of the page
 
+Quote Post
doom13
сообщение Sep 13 2017, 11:23
Сообщение #5


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

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



Цитата(Desmiles @ Sep 11 2017, 17:44) *
8- Build Your C code and obtain *.elf
9- Goto make targets->Build and run "mem_init_generate"
10- From mem_init folder include *.qip file in your Quartus project and recompile to get *.SOF
3. Generate *.JIC file

Вам нужно только это, должно работать.
Go to the top of the page
 
+Quote Post
Swup
сообщение Sep 13 2017, 11:28
Сообщение #6


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

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Настройки линкера в bsp editor.
Если у вас есть еще какая-то память проекте, то может там указано не туда куда нужно.

ПС Там еще отдельно в main есть настройка указателей на стек прерываний и стек исключений.


Go to the top of the page
 
+Quote Post
doom13
сообщение Sep 13 2017, 11:29
Сообщение #7


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

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



Если не работает попробуйте выполнитьProcessing->Update Memory Initialization File, иногда помогало.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 13 2017, 11:49
Сообщение #8


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

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



Цитата(Desmiles @ Sep 13 2017, 11:09) *
Пробую всё таки сделать с mem_init, добавляю mem_init.qip к проекту и никаких результатов. Сброс естественно на он чип. И как определить где должен располагаться код, т.е. где эта настройка?

После того, как qip к проекту добавляете, не забываете проект перекомпилировать? Ну или, как минимум, ассемблер в квартусе запустить?
Все это нужно, чтобы в sof-файле содержимое OnChip RAM было проинициализировано исполняемым кодом.

Вот после заливки в микрросхему такого sof'а Ваш исполняемый код должен сразу начать выполняться (если, конечно, с ресетом косяков не имеется).

Ну и не забываем про настройки BSP (которые необходимо сделать перед компиляцией исполняемого кода в эклипсе), как коллега выше советовал.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 13 2017, 12:23
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



А в настройках памяти указали файл инициализации?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 13 2017, 12:38
Сообщение #10


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

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



Цитата(_Anatoliy @ Sep 13 2017, 15:23) *
А в настройках памяти указали файл инициализации?

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


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 13 2017, 13:00
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Stewart Little @ Sep 13 2017, 15:38) *
Он там по умолчанию указывается, со стандартным наименованием.

Я имел ввиду память системную в кусисе. Странно, у меня всегда требует флажок поставить и путь указать. Пардон, видимо ключевое слово non-default...
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Desmiles
сообщение Sep 13 2017, 13:10
Сообщение #12





Группа: Участник
Сообщений: 5
Регистрация: 11-09-17
Пользователь №: 99 236



Цитата(Stewart Little @ Sep 13 2017, 11:49) *
После того, как qip к проекту добавляете, не забываете проект перекомпилировать? Ну или, как минимум, ассемблер в квартусе запустить?
Все это нужно, чтобы в sof-файле содержимое OnChip RAM было проинициализировано исполняемым кодом.

Вот после заливки в микрросхему такого sof'а Ваш исполняемый код должен сразу начать выполняться (если, конечно, с ресетом косяков не имеется).

Ну и не забываем про настройки BSP (которые необходимо сделать перед компиляцией исполняемого кода в эклипсе), как коллега выше советовал.


Проект перекомпилирую полностью, но безрезультатно.
Файл с настройками BSP:



Non-default я ставлю без галки. Как я понимаю, если делать mem-init и добавлять этот qip, то галочка там и не нужна.

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


Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Sep 13 2017, 18:35
Сообщение #13


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

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



Цитата(Desmiles @ Sep 13 2017, 16:10) *
При обновлении памяти у меня выскакивает следующее, может ли это как-то повлиять. На форуме видел, что вроде как на это не надо обращать внимания, но все же.

Не открывается картинка. Вставьте ее прямо в сообщение.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Desmiles
сообщение Sep 14 2017, 05:41
Сообщение #14





Группа: Участник
Сообщений: 5
Регистрация: 11-09-17
Пользователь №: 99 236



Цитата(Stewart Little @ Sep 13 2017, 18:35) *
Не открывается картинка. Вставьте ее прямо в сообщение.



Go to the top of the page
 
+Quote Post
doom13
сообщение Sep 14 2017, 07:00
Сообщение #15


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

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



С этими сообщениями все нормально, ошибок нет, в моем проекте аналогичные варнинги.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 19:57
Рейтинг@Mail.ru


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