Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка NIOS из EPCS
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Unfog
Исходная задача: сделать загрузку из EPCS в SRAM.
Но заткнулся в epcs.
Все сделал по мануалу, за исключением того, что использую NIOS IDE. (Cyclone 3, Quartus 9).
Проблема в том, что не собирается проект в NIOS:
Код
**** Build of configuration Release for project SRAMCPU ****

make -s all includes
Compiling main.cpp...
Linking SRAMCPU.elf...
obj/main.o(.text+0x18): In function `alt_sys_init':
/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_init(alt_flash_epcs_dev*)'
obj/main.o(.text+0x1c):/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_init(alt_flash_epcs_dev*)'
obj/main.o(.data+0x14):/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_write(alt_flash_dev*, int, void const*, int)'
obj/main.o(.data+0x18):/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_read(alt_flash_dev*, int, void*, int)'
obj/main.o(.data+0x1c):/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_get_info(alt_flash_dev*, flash_region**, int*)'
obj/main.o(.data+0x20):/cygdrive/d/altera/try/SRAM/software/SRAMCPU_syslib/Release/system_description/alt_sys_init.c:96: undefined reference to `alt_epcs_flash_erase_block(alt_flash_dev*, int)'
obj/main.o(.data+0x24): In function `main':
../main.cpp:34: undefined reference to `alt_epcs_flash_write_block(alt_flash_dev*, int, int, void const*, int)'
collect2: ld returned 1 exit status
make: *** [SRAMCPU.elf] Error 1


Код программы:
Код
#include "system.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "alt_sys_init.c"
#include "altera_avalon_pio_regs.h"

/*
#define ALT_USE_EPCS_FLASH
#include <altera_avalon_epcs_flash_controller.h>
#include "epcs_commands.h"
#include "sys/alt_flash.h"
#include "sys/alt_flash_dev.h"
*/

int main()
{

    //initialization
    alt_sys_init();

    while(1)
    {
          
    }
    
}

В комметах то, что нашел по теме, но не помогло..

Подскажите, пожалуйста, в чем может быть проблема?
Stewart Little
Описанный способ, конечно, имеет право на существование, но, имхо, это способ трансректальный. cranky.gif
Используйте FlashProgrammer
Unfog
Я правильно понимаю, что через FlashProgrammer грузится и конфигурация FPGA, и программа для ниоса?
Просто в результате нужна система, которая грузится из ECPS, при этом ниос работает на SRAM без on-chip.
naliwator
Цитата(Unfog @ Jun 7 2012, 16:09) *
Я правильно понимаю, что через FlashProgrammer грузится и конфигурация FPGA, и программа для ниоса?
Просто в результате нужна система, которая грузится из ECPS, при этом ниос работает на SRAM без on-chip.

А что вам мешает сделать по этому же мануалу проект в SRAM?
Unfog
Я не совсем понимаю принцип работы данной системы.
Как мне кажется, FPGA грузится из EPCS, потом как то нужно загрузить код программы в SRAM. Верно? В каком направлении копать?

Собрал в SOPC идентично с мануалом альтеры, остаются все те же ошибки про epcs.
naliwator
Цитата(Unfog @ Jun 7 2012, 16:35) *
Я не совсем понимаю принцип работы данной системы.

Предлагаю вам преодолеть этот путь постепенно. Сначала создайте проект, который грузится из внутренней памяти. Потом проект, загружающийся из epcs. Потом переходите к проекту, работающему во внешней памяти. И у вас всё получится.
Unfog
Проекты, которые грузятся по AS из EPCS и работают на on-chip, есть и работают. Проблем не было.
Что то ниосу не нравится в модуле EPCS Serinal Flask Controller, без использования внешней памяти. Там дополнительно не нужно ничего настраивать?
naliwator
Цитата(Unfog @ Jun 7 2012, 16:54) *
Проекты, которые грузятся по AS из EPCS и работают на on-chip, есть и работают. Проблем не было.
Что то ниосу не нравится в модуле EPCS Serinal Flask Controller, без использования внешней памяти. Там дополнительно не нужно ничего настраивать?

Не совсем понял ваш вопрос. То есть, проект в SRAM памяти работает и проект из EPCS грузится. Но совместный проект не работает?
Unfog
Работает простая конфигурация, когда альтера загружается из EPCS, NIOS работает на встроенной on-chip. (Прошиваю pof программером)
Потом я добавляю Flash Controller в SOPC и начинают вылезать вышеуказанные ошибки.

Попробую дома тот же проект в Q11 собрать..
Спасибо за ответы!
naliwator
Цитата(Unfog @ Jun 7 2012, 17:22) *
Работает простая конфигурация, когда альтера загружается из EPCS, NIOS работает на встроенной on-chip. (Прошиваю pof программером)
Потом я добавляю Flash Controller в SOPC и начинают вылезать вышеуказанные ошибки.

Попробую дома тот же проект в Q11 собрать..
Спасибо за ответы!

Может вам помогут пошаговые инструкции, которые уже давно лежат?..
Unfog
Цитата(Unfog @ Jun 7 2012, 15:44) *
Все сделал по мануалу, за исключением того, что использую NIOS IDE. (Cyclone 3, Quartus 9).
Проблема в том, что не собирается проект в NIOS:



На Q11 аналогичная ситуация.
Очень смущают сообщения типа "undefined reference to `".. В настойках линкера ничего менять не нужно?
Stewart Little
Цитата(Unfog @ Jun 7 2012, 16:35) *
Я не совсем понимаю принцип работы данной системы.

Да почитайте же наконец юзергайд на FlashProgrammer!!!
Там все английским по белому расписано!

В Вашей SOPC-системе должен присутствовать epcs_flash_controller, и процессорное ядро должно иметь jtag drbug модуль. Вектор сброса процессора должен указывать на epcs_flash_controller. Прежде, чем запускать FlashProgrаmmer, Вы должны по JTAG'у сконфигурировать Вашу ПЛИС'ку соответствующим sof-файлом.

С помощью FlashProgramer'а Вы прошиваете в конфигурационное ПЗУ (т.е. в EPCS'ку) и конфигурацию ПЛИС'ки (sof-файл), и исполняемый код процессора (elf-файл).

Как это все работает.
В epcs_flash_controller'е имеется небольшой блок памяти, в котором живет программа-копировщик (она предназначена для копирования кода приложения из EPCS'ки в ту память, куда Вы укажете). После включения питания сперва происходит конфигурация ПЛИС'ки. Ваш проект начинает работать, и процессор по вектору сброса попадает в epcs_flash_controller и исполняет код копировщика, который в этом контроллере находится. После окончания копирования процессор переходит в ту область памяти, где теперь живет код приложения (т.е. туда, куда он только что этот код скопировал), и начинает этот код приложения исполнять.

Все...
Unfog
Спасибо за объяснения.
Я так и делаю. Делал полные копии в SOPC с мануалов - результат один.

Сейчас повторил все в Eclipse - собралось с первого раза.
Отсюда вопросы:
Стоит ли переходить на Eclipse?
Муторно ли переносить проекты с IDE?
Что сделать, чтобы заработало в IDE?
Stewart Little
Цитата(Unfog @ Jun 7 2012, 19:14) *
Стоит ли переходить на Eclipse?
Муторно ли переносить проекты с IDE?
Что сделать, чтобы заработало в IDE?

А что именно Вы называете IDE?
Старую версию среды или режим командной строки?

В общем и целом - работать должно в любом варианте, независимо от версий и режимов.
Unfog
Цитата(Stewart Little @ Jun 7 2012, 22:04) *
А что именно Вы называете IDE?
Старую версию среды или режим командной строки?

В общем и целом - работать должно в любом варианте, независимо от версий и режимов.

Старую версию.
Я понимаю, что должно работать везде. Но видимо есть нюансы.

Stewart Little
Цитата(Unfog @ Jun 7 2012, 23:02) *
Старую версию.
Я понимаю, что должно работать везде. Но видимо есть нюансы.

В старой версии не было такого понятия, как BSP. Вместо него там имела место библиотека проекта - system library. Настройки system library в старой версии IDE весьма отличаются от настроек BSP в новой версии.
Рекомендую Вам переходить на новую версию - по крайней мере компиляция будет происходит заметно быстрее.
Работать в старой версии, имхо, имеет смысл только тогда, когда Вы хотите использовать C2H - компилятор.
AlexMad
Подниму тему. У меня немного другая проблема. Не работает sof2flash.
Код
Info: Quartus II 32-bit Convert_programming_file was successful. 0 errors, 0 warnings
    Info: Peak virtual memory: 121 megabytes
    Info: Processing ended: Wed May  1 22:07:33 2013
    Info: Elapsed time: 00:00:02
    Info: Total CPU time (on all processors): 00:00:01
01.05.2013 22:07:33 - (SEVERE) sof2flash: Error generating Flash file, exiting
01.05.2013 22:07:33 - (FINE) sof2flash: Done

По факту получается только залить квартус-программером .sof файл в epcs, установленную на отладочной плате (DE1). А софт запускается только дебагером из Ниосовского Эклипса.
То есть, проект с ниосом и софт исправные. Но, почему-то, не удается это все засунуть в epcs.
Пока в проекте была CFIflash, все работало, но хочется от нее избавиться.
vadimuzzz
покажите код, как вызывается sof2flash
AlexMad
Цитата(vadimuzzz @ May 4 2013, 19:31) *
покажите код, как вызывается sof2flash

Код
sof2flash --epcs --input="/home/temp/avto1.sof" --output="/home/temp/out.flash" --verbose

NiosFlashProgrammer тоже затыкается на конвертировании.
Сейчас хочу попробовать поставить более старый квартус и ниос и повторить.
Думаю, что это у меня из-за системы (Linux x64), либо что-то с таблеткой.


Попробовал на версии квартуса 12,0 - все работает. 12.1sp1 - нивкакую. sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.