P10101 board UART ETHREI interrupt can not pending,which causes data can not be sent out through serial port. P1010 uart uses 8250 uart driver,and i find two known bugs which are fixed through two flags UART_BUG_TXEN and UART_BUG_THRE。 These bugs are similar with the problem I encountered, except that I encounter this problem when the serial is be using normally, but UART_BUG_TXEN and UART_BUG_THRE are detected and set when UART startup。How to handle this problem?The following is the UART register scene when the problem occure:
0x4500 : 0x00
0x4501 : 0x07
0x4502 : 0xc1
0x4503 : 0x13
0x4504 : 0x0b
0x4505 : 0x60
0x4506 : 0x00
0x4507 : 0x00
0x4508 : 0x00
0x4510 : 0x01
The ETHREI interrupt is enable, TEMT and THRE are set, but no interrupt is pending. I need emphasize that i encountered when the serial is be using normally and the two flags "UART_BUG_TXEN and UART_BUG_THRE" is not set.
According to P1010 Reference Manual, Table 11-4, interrupt request from "UTHR empty" event may be cleared by the following actions: "Read the UIIR or write to the UTHR." This means writing to UTHR register is not the only option to clear interrupt request from this event, you can also clear this event by reading UIIR. This actually means there may be a situation, where UTHR is empty, but interrupt from this request in not pending because it is cleared already by occasional reading of UIIR.
This situation is shown in your register dump - register ULSR shows UTHR empty, but register UIIR shows no pending events
Have a great day,
Alexander
TIC
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------