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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Загрузка .sof + .elf в EPCS16
Acvarif
сообщение Jan 28 2013, 11:47
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Подскажите пожалуйста как можно сформировать общий загрузочный файл из .sof и .elf (Nios) для загрузки его в кофигурационную ПЗУ типа EPCS16.
Очевидно нужно в систему добавить EPCS контроллер и поставить Reset вектор на него? Или это не обязательно? Но как объединить файлы .sof и .elf, чтобы потом зашить в EPCS16, так чтобы по включению питания все грузилось последовательно как и при отладке? (Для отладки пользуюсь USB Blaster в режиме JTAG)

Сообщение отредактировал Acvarif - Jan 28 2013, 11:49
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jan 28 2013, 11:51
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Можно не добавлять, а указать ресет на он чип и выполнить следующую процедуру
http://naliwator.narod.ru/les/les_nios_epcs_03.html
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Jan 28 2013, 12:05
Сообщение #3


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

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



Цитата(Acvarif @ Jan 28 2013, 15:47) *
Очевидно нужно в систему добавить EPCS контроллер и поставить Reset вектор на него? Или это не обязательно?

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

Цитата
Но как объединить файлы .sof и .elf, чтобы потом зашить в EPCS16, так чтобы по включению питания все грузилось последовательно как и при отладке? (Для отладки пользуюсь USB Blaster в режиме JTAG)

Изучайте Nios II Flash Programmer User Guide


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 28 2013, 12:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Acvarif @ Jan 28 2013, 18:47) *
Очевидно нужно в систему добавить EPCS контроллер и поставить Reset вектор на него? Или это не обязательно?

не обязательно. можно ресет нацелить на он-чип, а в качестве файла инициализации этой памяти указать hex-файл программы. но если вы захотите поменять программу только ниоса, то придется перекомпилировать квартусовский проект. если же ресет указывает на внешнюю ПЗУ, то программу можно менять независимо от sof. выбирайте, что удобнее
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 28 2013, 12:37
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Спасибо. Общий смысл понятен.
Сначала попробую без контроллера.
Пытаюсь конвертить файлы согласно статьи http://naliwator.narod.ru/les/les_nios_epcs_03.html
Пока не получается.
Прикрепленное изображение

Для удобства я вынес файл sof2flash.jar и свой Neptun.sof в корневую директорию.
Очевидно так не верно. В статье пишут, что нужно войти в директорию проекта. Насколько это обязательно? Если директория проекта глубоко то в командной строке долго набирать. Можно ошибиться... Может наоборот переместить Neptun.sof в директорию ..Altera/Q90/nios2eds/bin - туда где находится sof2flash.jar и выполнить нужную команду из Total Commander в командной строке?
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 28 2013, 13:41
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Спасибо. Конвертация получилась. Программирование тоже. Подсматривал еще и тут http://www.altera.com/support/kdb/solution...132010_126.html
Вынес в отдельную корневую директорию свои файлы .sof .elf и sof2flash.jar elf2flash.jar nios2-elf-objcopy.exe из комплекта Nios. Конвертил на базе TotalCommander в командной строке.
Это проще чем вызывать консоль Nios.
Вроде все сделал правильно и адреса в .map идут последовательно
Код
BLOCK        START ADDRESS        END ADDRESS

Page_0        0x00000000        0x000AF6E6
ne.hex        0x000AF6E7        0x000BFEAA

Note: All the addresses in this file are byte addresses

Но по включению питания проект работает наполовину. Похоже, что загружен только .sof После принудительной загрузки .elf проект начинает работать. Похоже, что с вектором сброса проблема. У меня все работает в SDRAM. On_chip нет Как быть в этом случае?

Хотя... Виноват. Очевидно в конфмгурацию нужно все же добавить on_chip и свойствах системной библиотеки переопределить на sdram только данные...Правильно-ли я мыслю?

Сообщение отредактировал Acvarif - Jan 28 2013, 13:50
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Jan 28 2013, 13:57
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Acvarif @ Jan 28 2013, 14:47) *
Подскажите пожалуйста как можно сформировать общий загрузочный файл из .sof и .elf (Nios) для загрузки его в кофигурационную ПЗУ типа EPCS16.

В приложении описано. Там же, в конце, немного о необходимой конфигурации SOPC.
Ну и naliwator разъяснял.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 28 2013, 14:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Acvarif @ Jan 28 2013, 20:41) *
принудительной загрузки .elf проект начинает работать. Похоже, что с вектором сброса проблема. У меня все работает в SDRAM. On_chip нет Как быть в этом случае?

на EPCS сброс направить и не мучиться. (контроллер EPCS это и есть on-chip с кодом загрузчика по SPI)
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 28 2013, 16:22
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(vadimuzzz @ Jan 28 2013, 17:11) *
на EPCS сброс направить и не мучиться. (контроллер EPCS это и есть on-chip с кодом загрузчика по SPI)

Понял. Но в этом случае придется добавить в систему epcs контроллер?
Получается что именно для такго случая понадобится последовательная (тройная) конвертация файлов для получения окончательнго .hex где последвательно прописаны данные конфигураци и собственно прграммы для SDRAM?

Сообщение отредактировал Acvarif - Jan 28 2013, 16:28
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 28 2013, 23:36
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(Acvarif @ Jan 28 2013, 23:22) *
Понял. Но в этом случае придется добавить в систему epcs контроллер?
Получается что именно для такго случая понадобится последовательная (тройная) конвертация файлов для получения окончательнго .hex где последвательно прописаны данные конфигураци и собственно прграммы для SDRAM?

да. но ленивые люди вроде меня пишут скрипт для nios2-flash-programmer, тогда все эти телодвижения делаются одним щелчком мыши
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jan 29 2013, 04:51
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



А еще не получается дебугится если ресет указан на EPCS. Может я че делаю не так?
2 vadimuzzz
А где можно почитать как работать со скриптами для флешьпрограммера. Ну и буду благодарен за примерчик rolleyes.gif
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 29 2013, 05:43
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(gosu-art @ Jan 29 2013, 11:51) *
А еще не получается дебугится если ресет указан на EPCS. Может я че делаю не так?
2 vadimuzzz
А где можно почитать как работать со скриптами для флешьпрограммера. Ну и буду благодарен за примерчик rolleyes.gif

все прекрасно отлаживается, разницы никакой не будет. при отладке код программы загружается напрямую в ОЗУ и туда же передается управление. останов обычно на main стоит. если какая-то проблема с этим, выкладывайте логи, настройки проекта.
вот пример скрипта:
Код
#!/bin/sh
EPCS_BASE=0x1001800
cd /home/vadik/Qdesigns/sdr400cpu-ng
# Creating .flash file for the FPGA configuration
"$SOPC_KIT_NIOS2/bin/sof2flash" --epcs --input="./sdr400cpu-ng.sof" --output="sdr400cpu-ng.flash"
# Programming flash with the FPGA configuration
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=$EPCS_BASE  "sdr400cpu-ng.flash"
# Creating .flash file for the project
"$SOPC_KIT_NIOS2/bin/elf2flash" --epcs --after="sdr400cpu-ng.flash" --input="./software/sdr400/sdr400.elf" --output="epcs_flash_controller_0.flash"
# Programming flash with the project
"$SOPC_KIT_NIOS2/bin/nios2-flash-programmer" --epcs --base=$EPCS_BASE  "epcs_flash_controller_0.flash"

значения всех ключиков есть в доке, что тут выше выкладывали
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Jan 29 2013, 05:47
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939



Стесняюсь спросить rolleyes.gif А откуда запускать это добро?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jan 29 2013, 06:06
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



Цитата(gosu-art @ Jan 29 2013, 12:47) *
Стесняюсь спросить rolleyes.gif А откуда запускать это добро?

да откуда угодно. открываете консоль и вызываете скрипт, можно куда-нибудь на видное место положить.
Цитата
cd /home/vadik/Qdesigns/sdr400cpu-ng
- это переход в каталог проекта, тут свои пути поставите. если у вас винда, то там д.б. что-то типа nios console
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Jan 29 2013, 08:01
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Добавил в систему EPCS контроллер и наткнулся на ноги двойного назначения.
Выставил все как I/O. Все откомпилировалось нормально.
Не уверен, что я правильно все понимаю по поводу прошивки EPCS. Поскольку у меня все (программа, данные, стек...) находится в SDRAM то и очевидно вектор сброса я должен выставить на SDRAM.
Я так понимаю, что теперь нужно в EPCS зашить все так, чтобы по включению питания сначала в ПЛИС грузилась конфигурация, затем в SDRAM загружалась программа Nios, затем по сбросу начинало крутиться все вместе. Похоже что для этого достаточно выполнить только это:
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
Теперь для создания jic file достаточно добавить оба .hex c их абсолютной адресацией и затем все зашить в EPCS. Правильно-ли я все понимаю?


Go to the top of the page
 
+Quote Post

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

 


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


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