Почему прерывание UART TX не пересылается в GIC на OMAP4430

Я разрабатываю BSP для VxWorks и застрял со следующей проблемой:

Прерывание UART3 TX включено, и IIR показывает прерывание PENDING THR, но Cortex A-9 GIC его не распознает. Поэтому буфер ввода-вывода VxWorks заполняется, а UART FIFO остается пустым.

Когда я вручную устанавливаю соответствующее прерывание на PENDING в GIC, оно распространяет прерывание, и выполняется ISR, в результате чего 64 байта отправляются в UART FIFO и правильно печатаются на RS232. Доказывает, что ISR настроен правильно и работает, и что прерывание включено в распределителе GIC.

OMAP4430 имеет 16550 совместимый UART. Конфигурации скорости передачи данных хороши, потому что я могу успешно использовать их в режиме опроса.

Каковы возможные причины, по которым прерывание UART TX не утверждается?


РЕДАКТИРОВАТЬ: нашел причину моей проблемы, похоже, номера прерываний сдвинуты на 32 бита:

TRAP OMAP4430 утверждает, что UART3 имеет строку 74 прерывания, но когда я посмотрел на ожидающие регистра GIC, я увидел, что прерывание ожидалось в строке 106. Учитывая тот факт, что 106 является суммой 74 + 32, я попытался настроить линию прерывания 106 как номер прерывания UART3 и посмотреть, как это работает!

Последовательным драйвером является vxbNs16550 от VxWorks, а драйвер GIC также от VxWorks, а линии прерываний являются физическими соединениями от UART до GIC, определяемого TI. Так почему же существует такое расхождение в нумерации линий физических прерываний?

0 ответов

Другие вопросы по тегам