I am debugging the serial communications over UART1 for our system and have noticed that whenever the ascii message exceeds the FIFO size (64 bytes) there is a potential for message corruption due to FIFO overrun.
For example at the Linux prompt, "cat /proc/tty/driver/OMAP-SERIAL" gives:
0: uart:OMAP UART0 mmio:0x44E09000 irq:72 tx:2625 rx:0 RTS|CTS|DTR|DSR
1: uart:OMAP UART1 mmio:0x48022000 irq:73 tx:5564808 rx:5521417 oe:436 RTS|CTS|DTR|DSR|CD|RI
2: uart:OMAP UART2 mmio:0x48024000 irq:74 tx:0 rx:0 CTS|DSR
3: uart:OMAP UART3 mmio:0x481A6000 irq:44 tx:0 rx:0 CTS|DSR
4: uart:OMAP UART4 mmio:0x481A8000 irq:45 tx:0 rx:0 CTS|DSR
5: uart:OMAP UART5 mmio:0x481AA000 irq:46 tx:0 rx:0 CTS|DSR
This shows approx. one rx overrun error in 12K bytes and a loss of ~43K bytes for tests run.
The Linux/arm kernel version is 3.2.0, which is pretty much fixed for our product development.
I noticed that DMA mode is "false" within "..\arm\mach-omap2\serial.c" but setting it "true" does not work - kernel crashes.
I assume the default serial port is running in polling mode, not even sure that FIFO interrupts are being used. Can you tell me how to setup the serial port to work without rx overrun error.
Thanks,
Sylvester.