barabek 0 10 апреля, 2012 Опубликовано 10 апреля, 2012 · Жалоба Возникла такая проблема. Самый простой пример с прерываниями не работает - 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> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Desh_ 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба Я 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 абсолютно такой же софт успешно компилируется и работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Desh_ 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 (изменено) · Жалоба Вот сейчас на работе пробую вообще пустую программу скомпилировать. Состав системы: 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' Изменено 11 апреля, 2012 пользователем _Desh_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wic 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба все что нужно в include прописано? В исходниках ниоса вполне могут быть косяки, не пугайтесь так сильно ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Desh_ 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба все что нужно в include прописано? В исходниках ниоса вполне могут быть косяки, не пугайтесь так сильно ;) В данном конкретном исходнике все прописано. Мой код ничего не делает, так что в него ничего включать и не надо. Да я не пугаюсь, но делать-то что? Исходники править? Откатываться на версию 9.1? Спрашиваю исключительно в надежде на то, что кто-нибудь уже сталкивался и знает как решить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wic 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба Перегенерировать проект пробовали? пересобрать заново? проверил у меня всё определяется ква версии 11,1сп1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Desh_ 0 11 апреля, 2012 Опубликовано 11 апреля, 2012 (изменено) · Жалоба Перегенерировать проект пробовали? пересобрать заново? проверил у меня всё определяется ква версии 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'. Что я делаю не так? Изменено 11 апреля, 2012 пользователем _Desh_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 11 апреля, 2012 Опубликовано 11 апреля, 2012 · Жалоба Ошибка та же: 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 12 апреля, 2012 Опубликовано 12 апреля, 2012 · Жалоба Проверьте вот это: ... Проверил в v11.1sp2. Все работает, как положено. Рукопашной модификации sopcinfo не требуется. Еще вопрос - в настройках процессора какое количество shadow register sets указано? Если задано значение 0 (ноль), то такой контроллер HAL'ом поддерживаться не будет (о чем Qsys честно и предупреждает). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 19 апреля, 2012 Опубликовано 19 апреля, 2012 · Жалоба Похоже вы давно не чистили папку с проектом. Для генерации BSP вы используете файл CPU.sopcinfo, а ваша система генерирует CPU_SOPC.sopcinfo. Последний сгенерировал нормально. Попробовал все пересоздать все равно появляются ошибки такого плана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 19 апреля, 2012 Опубликовано 19 апреля, 2012 · Жалоба Попробовал все пересоздать все равно появляются ошибки такого плана. Разобрался сам. Хотя теперь возник другой вопрос. Например я создал проект ядра NIOS, сделал для него программу в Eclips, после чего мне оказалось необходимо добавить в тот же проект ядра NIOS дополнительные выводы или что то еще, мне что снова надо создавать проект в Eclips по новому или я могу обновить как то старый(Как я понимаю необходимо обновит BSP модель)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wic 0 20 апреля, 2012 Опубликовано 20 апреля, 2012 · Жалоба Используете старый проект. Но нужно перегенрировать BSP. Для этого по BSP части проекта (не тот в котором у вас исходники) жмете правой кнопкой там выбираете NIOS II> Generate BSP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 20 апреля, 2012 Опубликовано 20 апреля, 2012 · Жалоба Используете старый проект. Но нужно перегенрировать BSP. Для этого по BSP части проекта (не тот в котором у вас исходники) жмете правой кнопкой там выбираете NIOS II> Generate BSP Спасибо)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
full41 0 14 мая, 2012 Опубликовано 14 мая, 2012 · Жалоба Уважаемые коллеги, на сайте "Эфо" прочитал что проводятся курсы NIOS 2 на базе " кафедре Автоматики и Вычислительной Техники (СПбГПУ)", написано что те кто заканчивает эти курсы получает в электронном виде: лекции, описания лабораторных работ, результаты лабораторных работ. Может кто проходил эти курсы поделятся материалами, если не жалко, было бы полезно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Desh_ 0 4 июня, 2012 Опубликовано 4 июня, 2012 (изменено) · Жалоба Проблема с запуском проекта для 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 (пока так, для простоты). Подскажите, пожалуйста, что еще может быть не так? Изменено 4 июня, 2012 пользователем _Desh_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться