UART overflow errors on BBB


I’m seeing UART overflow errors when attempting to stream data at 115200 baud. Every Any reduction in baud rate would result in an unacceptable slowdown for my application.

Every time my application drops a byte I can see that an overflow error has occurred by:

$ cat /proc/tty/driver/OMAP-SERIAL
0: uart:OMAP UART0 mmio:0x44E09000 irq:88 tx:3882 rx:0 RTS|CTS|DTR|DSR
1: uart:OMAP UART1 mmio:0x48022000 irq:89 tx:580 rx:1087644 oe:2 RTS|CTS|DTR|DSR|CD|RI


I’ve tried to work around this by switching kernels (3.8.13-bone41 to TI SDK 7’s 3.12.10-ti2013.12.01) and have even tried to hack some higher interrupt priority assignments for UART1 into the 3.8 kernel but have had no luck in fixing or even reducing the issue (admittedly I’m a newbie when it comes to modifying the Linux kernel).

I would very much like to hear from anyone who has experienced this problem or has a suggestion on how to fix it.

After much headache I’ve tracked the issue down to the ufw firewall. It seems that the problem happens every time that anything attempts to connect to a blocked port. There are some devices on my network which are regularly trying to connect to blocked ports which then triggers the problem. If I disable the firewall the problem goes away (or is at least very much less frequent).

Not sure how or why the firewall would be causing the UART interrupt to get starved out. Is anyone able to reproduce this problem or offer an explanation?