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

 
 
> Загрузка 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
 
Start new topic
Ответов
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
Stewart Little
сообщение Sep 13 2017, 11:49
Сообщение #5


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

Группа: Свой
Сообщений: 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
Сообщение #6


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

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



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


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

Группа: Свой
Сообщений: 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
Сообщение #8


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

Группа: Свой
Сообщений: 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   Загрузка NIOS с флеш   Sep 11 2017, 14:44
|- - Desmiles   Цитата(Stewart Little @ Sep 13 2017, 11:4...   Sep 13 2017, 13:10
|- - Stewart Little   Цитата(Desmiles @ Sep 13 2017, 16:10) При...   Sep 13 2017, 18:35
|- - Desmiles   Цитата(Stewart Little @ Sep 13 2017, 18:3...   Sep 14 2017, 05:41
- - doom13   Цитата(Desmiles @ Sep 11 2017, 17:44) 8- ...   Sep 13 2017, 11:23
- - Swup   Настройки линкера в bsp editor. Если у вас есть е...   Sep 13 2017, 11:28
- - doom13   Если не работает попробуйте выполнитьProcessing-...   Sep 13 2017, 11:29
- - doom13   С этими сообщениями все нормально, ошибок нет, в м...   Sep 14 2017, 07:00
- - Desmiles   Всем спасибо за помощь, не знаю почему, но изменил...   Sep 14 2017, 07:35


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

 


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


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