1

I'm developing a BSP for VxWorks and got stuck with the following problem:

UART3 TX interrupt enabled and IIR shows PENDING THR interrupt, but the Cortex A-9 GIC doesn't recognize it. Therefore the VxWorks IO buffer gets full but the UART FIFO remains empty.

When I manually set the corresponding interrupt to PENDING in the GIC, it propagates the interrupt and the ISR gets executed, which results in 64bytes sent to the UART FIFO and correctly printed on RS232. Proves that ISR is set up correctly and is functioning and that interrupt is enabled in the GIC distributor.

OMAP4430 features a 16550 compatible UART. Baud rate configurations are fine because I can use it successfully in polled mode.

What are the possible reasons why the UART TX interrupt doesn't get asserted?


EDIT: Found the cause of my problem, it looks like interrupt numbers are shifted by 32 bits:

The OMAP4430 TRM states that UART3 has interrupt line 74, but when I looked at the PENDING registers of the GIC, I saw that an interrupt was pending at line 106. With the fact in mind that 106 is the sum of 74 + 32, I tried to configure interrupt line 106 as the UART3 interrupt number and see there it worked!

The serial driver is the vxbNs16550 from VxWorks and the GIC driver is also from VxWorks and the interrupt lines are physical connections from the UART to the GIC defined by TI. So why is there this discrepancy in the numbering of the physical interrupt lines?

0 Answers0