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

Возникла такая проблема. Самый простой пример с прерываниями не работает - count_binary (который идет в комплекте с квартусом и ниосом). Подобные обработчики прерываний раньше уже писал на версии 9.1 - все работает. При переносе проекта на новый квартус 11.1 - ни в какую. В среде NIOS II SBT при компиляции выводит сообщение об ошибке - undefined reference to alt_ic_irq_register (использую vectored interrupt controller). Т.е. не может зарегистрировать обработчик прерывания. Заголовочный файл "sys\alt_irq.h" добавлен. Все по идее должен видеть - но результат нулевой. Не работает также функция alt_irq_register.

 

На форуме альтеровском смотрел - там были подобные вопросы, но никто толком так ничего и не ответил. Кто что подскажет?

 

Я VIC не использовал, но указанной Вами функции не нашел и в документации. Может имели ввиду alt_ic_isr_register ?

 

 

А функцию alt_irq_register они перекинули в устаревшие. Нужно подключать файл <priv/alt_legacy_irq.h>

 

 

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


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

Я VIC не использовал, но указанной Вами функции не нашел и в документации. Может имели ввиду alt_ic_isr_register ?

 

А функцию alt_irq_register они перекинули в устаревшие. Нужно подключать файл <priv/alt_legacy_irq.h>

 

Да-да, верно, alt_ic_isr_register, спасибо!

 

Да alt_irq_register мне и не нужна, это я просто хотел проиллюстрировать, что не работает самый запростецкий проект, не могу понять из-за чего. Все заголовочные фалйы подключены, VIC в системе присутствует, переменная ALT_ENHANCED_API_PRESENT (или как-то там) объявлена. Среда разработки функцию видит (переходит по Ctrl + клик на имени функции к ее объявлению). То есть все сделано по документации. И повторюсь, в 9.1 абсолютно такой же софт успешно компилируется и работает.

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


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

Вот сейчас на работе пробую вообще пустую программу скомпилировать. Состав системы: nios, onchip_memory, epcs_flash_controller, interval_timer. Qsys чего-то там генерирует (без ошибок и предупреждений), запускаю Nios II SBT, пустой проект, набираю код

 

int main()
{
   while (1);
   return 0;
}

При компиляции мне выдает ошибку в файле alt_avalon_timer_sc_init.c (!), т.е. сам у себя в драйверах HAL. Пишет:

 

undefined reference to 'alt_ic_isr_register'

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

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


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

все что нужно в include прописано? В исходниках ниоса вполне могут быть косяки, не пугайтесь так сильно ;)

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


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

все что нужно в include прописано? В исходниках ниоса вполне могут быть косяки, не пугайтесь так сильно ;)

 

В данном конкретном исходнике все прописано. Мой код ничего не делает, так что в него ничего включать и не надо.

Да я не пугаюсь, но делать-то что? Исходники править? Откатываться на версию 9.1? Спрашиваю исключительно в надежде на то, что кто-нибудь уже сталкивался и знает как решить.

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


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

Перегенерировать проект пробовали? пересобрать заново? проверил у меня всё определяется ква версии 11,1сп1

 

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


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

Перегенерировать проект пробовали? пересобрать заново? проверил у меня всё определяется ква версии 11,1сп1

Пробовал. Убрал свой таймер из sys_clk_timer в настройках bsp. Вроде пустой проект скомпилировался. Но пустые проекты никому не нужны, поэтому я написал следующее:

#include "system.h"
#include "sys/alt_irq.h"
#include "altera_avalon_timer_regs.h"

volatile int timer_status = 0;
volatile int timer_timeout = 0;

static void handle_timer_interrupts(void* context)
{
    volatile int* timer_status_ptr = (volatile int*) context;
    *timer_status_ptr = IORD_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE);
    IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);
    timer_timeout = 1;
}

static void init_timer()
{
    void* timer_status_ptr = (void*) &timer_status;
    IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x5);
    IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0);
    alt_ic_isr_register(TIMER_IRQ_INTERRUPT_CONTROLLER_ID, TIMER_IRQ,
                     handle_timer_interrupts, timer_status_ptr, 0x0);
}

int main()
{
    init_timer();
    /* Тут мой код */
    return 0;
}

 

Ошибка та же: undefined reference to 'alt_ic_isr_register'. Что я делаю не так?

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

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


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

Ошибка та же: undefined reference to 'alt_ic_isr_register'. Что я делаю не так?

Проверьте вот это: http://www.altera.com/support/kdb/solution...152011_982.html

и до кучи вот это: http://www.altera.com/support/kdb/solutions/spr375970.html

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


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

Проверьте вот это: ...

Проверил в v11.1sp2.

Все работает, как положено. Рукопашной модификации sopcinfo не требуется.

 

Еще вопрос - в настройках процессора какое количество shadow register sets указано?

Если задано значение 0 (ноль), то такой контроллер HAL'ом поддерживаться не будет (о чем Qsys честно и предупреждает).

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


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

Похоже вы давно не чистили папку с проектом.

Для генерации BSP вы используете файл CPU.sopcinfo,

а ваша система генерирует CPU_SOPC.sopcinfo.

 

Последний сгенерировал нормально.

Попробовал все пересоздать все равно появляются ошибки такого плана.

post-36375-1334836215_thumb.jpg

post-36375-1334836231_thumb.jpg

 

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


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

Попробовал все пересоздать все равно появляются ошибки такого плана.

post-36375-1334836215_thumb.jpg

post-36375-1334836231_thumb.jpg

 

Разобрался сам. Хотя теперь возник другой вопрос. Например я создал проект ядра NIOS, сделал для него программу в Eclips, после чего мне оказалось необходимо добавить в тот же проект ядра NIOS дополнительные выводы или что то еще, мне что снова надо создавать проект в Eclips по новому или я могу обновить как то старый(Как я понимаю необходимо обновит BSP модель)?

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


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

Используете старый проект. Но нужно перегенрировать BSP. Для этого по BSP части проекта (не тот в котором у вас исходники) жмете правой кнопкой там выбираете NIOS II> Generate BSP

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


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

Используете старый проект. Но нужно перегенрировать BSP. Для этого по BSP части проекта (не тот в котором у вас исходники) жмете правой кнопкой там выбираете NIOS II> Generate BSP

 

Спасибо))

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


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

Уважаемые коллеги, на сайте "Эфо" прочитал что проводятся курсы NIOS 2 на базе " кафедре Автоматики и Вычислительной Техники (СПбГПУ)", написано что те кто заканчивает эти курсы получает в электронном виде: лекции, описания лабораторных работ, результаты лабораторных работ.

Может кто проходил эти курсы поделятся материалами, если не жалко, было бы полезно.

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


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

Проблема с запуском проекта для NIOS из-под Eclipse. Как я понимаю (поправьте, если не так), надо иметь на руках файлы .sof и .elf. Оба файла имеются. Итак, включаю железку, шью .sof (Quartus Programmer), затем из-под eclipse выбираю Run As->Nios Hardware. Дальше оболочка меня спрашивает настройки, я их все указываю, но прошивка не загружается - все время выдает Download ELF file process failed. В консоли выводится что-то типа Verify failed at 0x10000 to 0x14FFFF или что-то в этом роде. По адресу 0x10000-0x130xxx (не помню точно) у меня в системе находится onchip_memory. К шине подключена правильно, Reset Vector и Exception Vector указывают на нее. Из периферии оставил только PIO, JTAG UART, Vectored Interrupt Controller.

 

На форуме Альтеры куча подобных вопросов, но конкретных ответов нет - все время советуют проверить тайминги и сигналы clk, reset. Но раз Quartus предупреждений или ошибок при компиляции не выдал, то ошибок времянки нет. Clk идет с PLL (80 МГц), reset - лог. 1 (пока так, для простоты). Подскажите, пожалуйста, что еще может быть не так?

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

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


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

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

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

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

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

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

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

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

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

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