|
Загрузка .sof + .elf в EPCS16 |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 42)
|
Jan 28 2013, 12:05
|

Лентяй
     
Группа: Свой
Сообщений: 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
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Jan 28 2013, 12:37
|
Знающий
   
Группа: Участник
Сообщений: 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 в командной строке?
|
|
|
|
|
Jan 28 2013, 13:41
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jan 28 2013, 13:57
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Acvarif @ Jan 28 2013, 14:47)  Подскажите пожалуйста как можно сформировать общий загрузочный файл из .sof и .elf (Nios) для загрузки его в кофигурационную ПЗУ типа EPCS16. В приложении описано. Там же, в конце, немного о необходимой конфигурации SOPC. Ну и naliwator разъяснял.
|
|
|
|
|
Jan 28 2013, 16:22
|
Знающий
   
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jan 29 2013, 05:43
|

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

|
Цитата(gosu-art @ Jan 29 2013, 11:51)  А еще не получается дебугится если ресет указан на EPCS. Может я че делаю не так? 2 vadimuzzzА где можно почитать как работать со скриптами для флешьпрограммера. Ну и буду благодарен за примерчик  все прекрасно отлаживается, разницы никакой не будет. при отладке код программы загружается напрямую в ОЗУ и туда же передается управление. останов обычно на 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" значения всех ключиков есть в доке, что тут выше выкладывали
|
|
|
|
|
Jan 29 2013, 06:06
|

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

|
Цитата(gosu-art @ Jan 29 2013, 12:47)  Стесняюсь спросить  А откуда запускать это добро? да откуда угодно. открываете консоль и вызываете скрипт, можно куда-нибудь на видное место положить. Цитата cd /home/vadik/Qdesigns/sdr400cpu-ng - это переход в каталог проекта, тут свои пути поставите. если у вас винда, то там д.б. что-то типа nios console
|
|
|
|
|
Jan 29 2013, 08:23
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(vadimuzzz @ Jan 29 2013, 12:12)  нет, вектор сброса указывает на EPCS. а вот в настройках линкера проекта все секции программы кидаете на SDRAM. тогда при подаче питания произойдет следующее: - сконфигурируется ПЛИС (и ядро процессора в том числе)
- запустится программа, которая лежит по адресу сброса (контроллер EPCS), это бутлодер, который перепишет программу в SDRAM
- по окончании копирования в SDRAM управление будет передано вашей программе
Спасибо. Понятно. Осталась небольшая загвоздка. Сформировал я последовательно 2 .hex один из .sof другой из .elf. Каждый начинается со своего нужного адреса. Но конвертор jic разрешает добавить только один .hex как их теперь состыковать? Или может добавить просто .sof, а затем .hex который сделан из .elf с относительной настройкой адресации?
|
|
|
|
|
Jan 29 2013, 08:25
|
Знающий
   
Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939

|
Цитата(vadimuzzz @ Jan 29 2013, 11:12)  нет, вектор сброса указывает на EPCS. а вот в настройках линкера проекта все секции программы кидаете на SDRAM. тогда при подаче питания произойдет следующее: - сконфигурируется ПЛИС (и ядро процессора в том числе)
- запустится программа, которая лежит по адресу сброса (контроллер EPCS), это бутлодер, который перепишет программу в SDRAM
- по окончании копирования в SDRAM управление будет передано вашей программе
А у меня не получалось так http://electronix.ru/forum/index.php?s=&am...t&p=1088042Наверное потому что я это не сделал ? sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex
|
|
|
|
|
Jan 29 2013, 08:40
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(gosu-art @ Jan 29 2013, 12:25)  Наверное потому что я это не сделал ? sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex Это Вы делаете .hex из .sof. Но для формирования jic какраз и нужен .sof А вот после него должен идти .hex который сформирован из .elf elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex Может все же так?
|
|
|
|
|
Jan 29 2013, 09:26
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Пока не получается. По включению питания система загружается (.sof) (FPGA конфигурируется) Но программа - .hex созданный из .elf sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex не запускается. Запускается (sdram) только после принудительной загрузки из Nios Eclipse Конвертация и вектора на картинках
Вроде все должно работать. Но не хочет
Сообщение отредактировал Acvarif - Jan 29 2013, 09:36
|
|
|
|
|
Jan 29 2013, 10:29
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Acvarif @ Jan 29 2013, 12:26)  Вроде все должно работать. Но не хочет Сделайте маленький тестовый проект, используя для Ниоса внутреннею память FPGA... От простого с сложному.. Потом, была еще заморочка: в *.hex нужно было по ходу дела переформатировать ширину слова к формату байта. На это я указал выше в своей шпаргалке hex.doc. А принт-скрины, вроде бы в норме... Не хватает только еще вида структуры из SOPC (Qsys)...
|
|
|
|
|
Jan 29 2013, 11:17
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Serhiy_UA @ Jan 29 2013, 14:29)  Сделайте маленький тестовый проект, используя для Ниоса внутреннею память FPGA... От простого с сложному.. Потом, была еще заморочка: в *.hex нужно было по ходу дела переформатировать ширину слова к формату байта. На это я указал выше в своей шпаргалке hex.doc. А принт-скрины, вроде бы в норме... Не хватает только еще вида структуры из SOPC (Qsys)... Про ширину слова я забыл. Надо попробовать. Конфигурация системы на картинке. На EPCS подается pll_sys (100 мГц - может многовато будет?)
Вверху cpu_0 Если опять застрянет, начну с внутренней памятью.
Сообщение отредактировал Acvarif - Jan 29 2013, 11:19
|
|
|
|
|
Jan 29 2013, 11:56
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(vadimuzzz @ Jan 29 2013, 15:29)  Acvarif, я нить дискуссии немного потерял, а вы через flash-programmer пробовали? EPCS прошиваю USB Blaster но через Quartus II Programmer. flash-programmer не пробовал. А в чем будет разница?
|
|
|
|
|
Jan 29 2013, 12:13
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Stewart Little @ Jan 29 2013, 16:02)  Не только. Еще важны настройки BSP - в каком состоянии находится галка "Allow code at reset" (или что-то в этом роде). Работаю в Q90 - настройки системной библиотеки
И все же почему именно flash-programmer если Q II programmer тоже позволяет программировать EPCS?
Сообщение отредактировал Acvarif - Jan 29 2013, 12:22
|
|
|
|
|
Jan 29 2013, 14:12
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(vadimuzzz @ Jan 29 2013, 17:26)  меньше телодвижений. один раз скрипт настроил и все. Хорошо, попробую еще и так. Попробую Ваш скрипт. Какое расширение нужно поставить файлу скрипта? Или просто последовательно набрать все в консоли Nios? А через Q программер не получается, даже с он-чип мемори. Пробовал по всякому. Менял на 8 бит .hex - ничего не изменилось. Всеравно загружается только кофигурация FPGA. Не понятно как все же .hex программы (который записан в EPCS сразу после .sof ) попадает в память (он-чип или sdram) и там запускается. Код Page_0 0x00000000 0x000AF6E6 NeptunE.hex 0x000AF6E7 0x00105018 данные конфигурации (Nios + разная логика) (начинаются в EPCS с0x00000000) После включения питания они попадают куда надо. А программа (в EPCS находится по адресу 0x000AF6E7) никуда не попадает или попадает не туда. Или попадает куда надо но не запускается... Цитата запустится программа, которая лежит по адресу сброса (контроллер EPCS), это бутлодер, который перепишет программу в SDRAM По поводу бутлоадера - он в памяти контроллере EPCS от производителя или его нужно отдельно туда загрузить? Да, понял. Бутлоадер в памяти контроллера уже имеется. Вроде с контроллером EPCS самый простой путь. Попробую еще через flash programmer...
Сообщение отредактировал Acvarif - Jan 29 2013, 19:12
|
|
|
|
|
Jan 30 2013, 06:36
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Сделайте маленький тест для памяти NiosII внутри FPGA, с программным миганием одного светодиода и все. Испробуйте. Если нее пойдет, то выложите проект для обозрения. Могу выслать свой аналогичный тест, все работает, объем в упаковке *.zip около 12м. Там один светодиод мигает от QII, а другой от NiosII. Связка аналогичная Вашей - Cyclone III EP3C40Q240C8 и EPCS16SI8N. Отличие, что Вы используете VHDL, а у меня verilog, но это не принципиально. Применяю QII 7.2, а Вы QII 9.0, все получается и без скриптов, прямо из GUI, но здесь уже надо выбирать... Не сложно там... Дайте свой адрес для высылки, можно на мой личный ящик.
|
|
|
|
|
Jan 30 2013, 07:19
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(Serhiy_UA @ Jan 30 2013, 10:36)  Сделайте маленький тест для памяти NiosII внутри FPGA, с программным миганием одного светодиода и все. Испробуйте. Если нее пойдет, то выложите проект для обозрения. Могу выслать свой аналогичный тест, все работает, объем в упаковке *.zip около 12м. Там один светодиод мигает от QII, а другой от NiosII. Связка аналогичная Вашей - Cyclone III EP3C40Q240C8 и EPCS16SI8N. Отличие, что Вы используете VHDL, а у меня verilog, но это не принципиально. Применяю QII 7.2, а Вы QII 9.0, все получается и без скриптов, прямо из GUI, но здесь уже надо выбирать... Не сложно там... Дайте свой адрес для высылки, можно на мой личный ящик. Спасибо. Ящик vladb727 собака gmail точка com Вроде получилось. Пока до конца еще не осмыслил как, но заработало (пока только в он-чип). Теперь нужно на sdram попробовать. Шил через flash программер. Думаю проблема была в сбросе (до конца пока не выяснил). Тоесть все грузилось но не запускалось без дополнительного принудительного сброса всей системы. С flasf программатором не понял как устанавливать в нем offset? Я установил после того как вручную выполнил преобразование .elf в .flash и посмотрел смещение в .map файле.
А как это сделать проще?
Сообщение отредактировал Acvarif - Jan 30 2013, 07:27
|
|
|
|
|
Jan 30 2013, 08:07
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(vadimuzzz @ Jan 30 2013, 11:44)  не надо там никакие офсеты вручную выставлять, для этого есть опция -after. посмотрите скрипт, что я приводил выше Скриптом я попробую. Все должно сработать. На панели flash программера которая вызывается из Nios Eclipse есть только окно для установки смещения. Попробовал в sdram. Все заработало, но только после принудительного сброса системы после включения питания. Со сбросом надо будет чего -нибудь придумывать...
Сообщение отредактировал Acvarif - Jan 30 2013, 08:08
|
|
|
|
|
Jan 30 2013, 16:30
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(gosu-art @ Jan 30 2013, 12:30)  Так может у меня поэтому не работало!?  Я просто делал вкл\выкл питания и все. Нужно тоже будет попробовать... На данный момент заработало все по включению питания. Условия: 1. Программирование через flash programmer. Если делать так http://naliwator.narod.ru/les/les_nios_epcs_03.html не работает никак. 2. Странно, но только компиляция программы без оптимизации кода "Debug" работает стабильно (Release сразу не запускается и работает не стабильно).
|
|
|
|
|
Jan 31 2013, 06:20
|
Знающий
   
Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850

|
Цитата(vadimuzzz @ Jan 31 2013, 03:41)  похоже на кривые тайминги sdram Тайминги вообще еще не настраивал. Красным подсвечивает несколько позиций. Но в отладчике все работает нормально. Для sdram выставил только фазовый сдвиг -60 град. Прокрутил тест (100 мГц). Все в норме. Похоже что-то другое.
|
|
|
|
|
Oct 30 2013, 17:06
|
Местный
  
Группа: Свой
Сообщений: 399
Регистрация: 8-06-05
Пользователь №: 5 832

|
Цитата(Acvarif @ Jan 30 2013, 12:07)  Все заработало, но только после принудительного сброса системы после включения питания. Со сбросом надо будет чего -нибудь придумывать... Цитата(gosu-art @ Jan 30 2013, 13:30)  Так может у меня поэтому не работало!?  Я просто делал вкл\выкл питания и все. Нужно тоже будет попробовать... Цитата(Acvarif @ Jan 30 2013, 20:30)  На данный момент заработало все по включению питания. Условия: 1. Программирование через flash programmer. Расскажите, что сделали, что заработало по включению питания? И почему до этого работало только после принудительного сброса системы после включения питания? Цитата(Acvarif @ Jan 30 2013, 20:30)  Почему? Там ошибка или иная причина?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|