|
Qsys User IP |
|
|
|
Jan 30 2015, 11:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Вопрос, возможно ли на базе компонентов из Qsys создать пользовательское IP-ядро. Т.е. есть система USER_SYSTEM из библиотечных компонентов (SPI_0, GPIO_0, GPIO_1), которая встраивается как компонент в другую систему, для которой уже будут работать не драйвера для SPI_0, GPIO_0, GPIO_1, а драйвера для USER_SYSTEM. Т.е. система верхнего уровня не знает о наличии GPIO и SPI в системе нижнего уровня, а знает о каких-то обобщённых возможностях USER_SYSTEM. Если это возможно, хотелось бы пример или ссылку, где можно об это почитать. Спасибо.
|
|
|
|
|
 |
Ответов
(1 - 12)
|
Feb 5 2015, 09:03
|
Знающий
   
Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866

|
Цитата Возможно это вам поможет. Там как раз есть подсистемы в системе. Там одна бЯда - прерывания не передать никак, нужно своё чЮдо городить.. Почему же не передать? В подсистеме сигнальчики IRQ экспортируем и в топ системе тянем их на interrupt receiver попутно назначая приоритеты. С другой стороны, как я понял, подсистемы это не совсем то, что хочет автор  В случае подсистемы все ее внутренности появятся в system.h в BSP с префиксом подсистемы. По сути это отдельные компоненты, которые вынесены в отдельное окошко Qsys удобства для, а хочется получить законченный IP, собранный полностью в QSys с одним драйвером. Если я правильно понял.
|
|
|
|
|
Feb 5 2015, 10:50
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(serjj @ Feb 5 2015, 12:03)  С другой стороны, как я понял, подсистемы это не совсем то, что хочет автор  В случае подсистемы все ее внутренности появятся в system.h в BSP с префиксом подсистемы. По сути это отдельные компоненты, которые вынесены в отдельное окошко Qsys удобства для, а хочется получить законченный IP, собранный полностью в QSys с одним драйвером. Если я правильно понял. Да всё правильно поняли, хотелось Цитата законченный IP, собранный полностью в QSys с одним драйвером. , но решил - подсистемы будет достаточно.
|
|
|
|
|
Apr 10 2015, 10:37
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
Возник тут вопрос по подсистемам, решил написать сюда, раз тут уже было некоторое обсуждение подсистем: Значит наши головастики решили один 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 а вот софтварный контроллер прерывания почему то всё игнорит. Никто не сталкивался с такой баго-фичей ??
|
|
|
|
|
Apr 10 2015, 14:23
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
В общем собрал я самый примитивный простой дизайн: [{nios + ram} + {jtag-uart + pio}] Результат - всё то же самое: "Hello world"-small работает, "Hello world" обычный - нет. CDC и коннект прерываний присутствует. Прерывание -заходит напрямую - без IRQ Bridge, Q2 сам поставил CDC и соединил как надо. Вот
hw_sw_test_v00.7z ( 13.16 килобайт )
Кол-во скачиваний: 44 если кому будет интересно поковыряться. UPD: в общем, судя по всему, VIC спасёт отца русской демократии.... Хотя это дополнительные ресурсы.....
|
|
|
|
|
Apr 13 2015, 07:25
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
UPD: или же, если допускается работа напильником и/или очень хочется sw-based IRQ обработку (нужное подчеркнуть) - нужно ставить IRQ Bridge, а потом руками расшивать прерывания в Qsys, и во время генерации всего Nios2 добра согласно Qsys-расшивке патчить system.h (заменять -1 на нужные цифры). В общем вот такие рецеБты... (Открыть что ли кейс на альтере  потому как вроде бы как баг получается, прерывания Шрёдингера - прерывания вроде есть но их нет...)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|