Перейти к содержанию
    

Исходная задача: сделать загрузку из 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)
    {
          
    }
    
}

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

 

Подскажите, пожалуйста, в чем может быть проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Описанный способ, конечно, имеет право на существование, но, имхо, это способ трансректальный. :cranky:

Используйте FlashProgrammer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понимаю, что через FlashProgrammer грузится и конфигурация FPGA, и программа для ниоса?

Просто в результате нужна система, которая грузится из ECPS, при этом ниос работает на SRAM без on-chip.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понимаю, что через FlashProgrammer грузится и конфигурация FPGA, и программа для ниоса?

Просто в результате нужна система, которая грузится из ECPS, при этом ниос работает на SRAM без on-chip.

А что вам мешает сделать по этому же мануалу проект в SRAM?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не совсем понимаю принцип работы данной системы.

Как мне кажется, FPGA грузится из EPCS, потом как то нужно загрузить код программы в SRAM. Верно? В каком направлении копать?

 

Собрал в SOPC идентично с мануалом альтеры, остаются все те же ошибки про epcs.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не совсем понимаю принцип работы данной системы.

Предлагаю вам преодолеть этот путь постепенно. Сначала создайте проект, который грузится из внутренней памяти. Потом проект, загружающийся из epcs. Потом переходите к проекту, работающему во внешней памяти. И у вас всё получится.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проекты, которые грузятся по AS из EPCS и работают на on-chip, есть и работают. Проблем не было.

Что то ниосу не нравится в модуле EPCS Serinal Flask Controller, без использования внешней памяти. Там дополнительно не нужно ничего настраивать?

Изменено пользователем Unfog

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проекты, которые грузятся по AS из EPCS и работают на on-chip, есть и работают. Проблем не было.

Что то ниосу не нравится в модуле EPCS Serinal Flask Controller, без использования внешней памяти. Там дополнительно не нужно ничего настраивать?

Не совсем понял ваш вопрос. То есть, проект в SRAM памяти работает и проект из EPCS грузится. Но совместный проект не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работает простая конфигурация, когда альтера загружается из EPCS, NIOS работает на встроенной on-chip. (Прошиваю pof программером)

Потом я добавляю Flash Controller в SOPC и начинают вылезать вышеуказанные ошибки.

 

Попробую дома тот же проект в Q11 собрать..

Спасибо за ответы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работает простая конфигурация, когда альтера загружается из EPCS, NIOS работает на встроенной on-chip. (Прошиваю pof программером)

Потом я добавляю Flash Controller в SOPC и начинают вылезать вышеуказанные ошибки.

 

Попробую дома тот же проект в Q11 собрать..

Спасибо за ответы!

Может вам помогут пошаговые инструкции, которые уже давно лежат?..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все сделал по мануалу, за исключением того, что использую NIOS IDE. (Cyclone 3, Quartus 9).

Проблема в том, что не собирается проект в NIOS:

 

 

На Q11 аналогичная ситуация.

Очень смущают сообщения типа "undefined reference to `".. В настойках линкера ничего менять не нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не совсем понимаю принцип работы данной системы.

Да почитайте же наконец юзергайд на 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 и исполняет код копировщика, который в этом контроллере находится. После окончания копирования процессор переходит в ту область памяти, где теперь живет код приложения (т.е. туда, куда он только что этот код скопировал), и начинает этот код приложения исполнять.

 

Все...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за объяснения.

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

 

Сейчас повторил все в Eclipse - собралось с первого раза.

Отсюда вопросы:

Стоит ли переходить на Eclipse?

Муторно ли переносить проекты с IDE?

Что сделать, чтобы заработало в IDE?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стоит ли переходить на Eclipse?

Муторно ли переносить проекты с IDE?

Что сделать, чтобы заработало в IDE?

А что именно Вы называете IDE?

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что именно Вы называете IDE?

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

 

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

Старую версию.

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...