Возник тут вопрос по подсистемам, решил написать сюда, раз тут уже было некоторое обсуждение подсистем:
Значит наши головастики решили один Q2 v9 дизайн обновить и раскидать кучу компонентов по подсистемам. Сделали знаит они там разделение:
1) подсистема процессора - nios2-f, boot-rom, tc-data/instruction-mem
2) подсистема периферии - led, sys-timer, jtag-uart, etc.
3) (и так далее, много там всего)
Значит вставили они
IRQ Bridge в подсистему процессора, завели туда все прерывания от разных подсистем в топе. Собрал я FPGA design в Q2. И вдруг обнаружил при попытке собрать софт, что прерывания то в
system.h все "-1", хотя проверил HDL - роут сигналов до порта у Nios2-f есть, как и CDC. Значит убрал я этот
IRQ Bridge и всё собралось без вопросов - прерывания как хотел, так и получил что в HDL что в
system.h (в смысле не "-1" а соответствующие номера). И вот тут обнаружилась очередная неприятность: при сборке тестового примера "Hello world" с printf выяснилось, что прерывание от JTAG-UART физически заходит в Nios2-f (разводка и CDC - в топе), а вот нормально обработки этого IRQ нет (в смысле Nios2-f всё честно копирует куда надо, пишет в контрол в JTAG-UART, скопом я вижу сигнал прерывания который взводится и заходит в Nios2-f а вот собственно саму активность в IRQ рутине вообще не наблюдаю). Хотя в коде тестового примера "Hello world" есть регистрация прерывания для JTAG-UART.
То есть получается что прерывание есть и физически заходит в Nios2-f а вот софтварный контроллер прерывания почему то всё игнорит. Никто не сталкивался с такой баго-фичей ??