i.MX6UL getting imx-uart 21f0000.serial: Rx FIFO overrun

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX6UL getting imx-uart 21f0000.serial: Rx FIFO overrun

Jump to solution
4,002 Views
compmas2
Contributor V

I have a custom board using the i.MX6UL processor that is getting the following error repeated about 50-100 times a second:

imx-uart 21f0000.serial: Rx FIFO overrun

This message starts appearing about 10 seconds after I get a login prompt.

This problem is occurring using the imx_3.14.52_1.1.0_ga kernel, but it did not occur when using the imx_3.14.38_6ul_ga kernel with the 9x9_patch patches. I am using the same .dts file for my custom board between the two kernels and the same kernel .config between the two kernels.

Here is the relavant sections of my .dts file for uarts:

chosen {

     stdout-path = &uart1;

};

&uart1 {

        pinctrl-names = "default";

        pinctrl-0 = <&pinctrl_uart1>;

        status = "okay";

};

&uart4 {

        pinctrl-names = "default";

        pinctrl-0 = <&pinctrl_uart4>;

        status = "okay";

};

pinctrl_uart1: uart1grp {

     fsl,pins = <

          MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX   0x1b0b1

          MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX   0x1b0b1

     >;

};

pinctrl_uart4: uart4grp {

     fsl,pins = <

          MX6UL_PAD_LCD_CLK__UART4_DCE_TX         0x1b0b1

          MX6UL_PAD_LCD_ENABLE__UART4_DCE_RX      0x1b0b1

     >;

};

Does anyone have any ideas on how to resolve this issue?

Labels (3)
0 Kudos
1 Solution
1,796 Views
compmas2
Contributor V

I tried using the new rel_imx_4.1.15_1.1.0_ga Linux kernel and this seems to have resolved the issue.  I know do not get the Rx FIFO overrun error and the serial port is working much better now.

View solution in original post

0 Kudos
6 Replies
1,796 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

There were a few changes in the imx.c file located in the /drivers/tty/serial folder. The comments related to these changes apply to the rx path.

Are you getting the same problems with our EVK?

Best Regards,

Alejandro

0 Kudos
1,796 Views
compmas2
Contributor V

Alejandro,

On my custom board I am using i.MX6UL pins A8 (LCD_CLK) and pin B8 (LCD_ENABLE) IOMuxed as UART4_TX and UART4_RX. On the i.MX6UL EVK board the pins are IOMuxed to LCD_CLK and LCD_ENABLE, so there is a different IOMuxing configuration which makes testing this not immediately possible without modifying the EVK board.  Additionally it looks like the UART4 functionality is not actually IOMuxed anywhere on the EVK, so that UART is not used with its current configuration.

Regards,

Matthew Starr

0 Kudos
1,796 Views
compmas2
Contributor V

Some additional information on the issue is the UART4 line is connected to a GPS unit at 9600 baud and the Rx FIFO overrun starts occurring about 15-20 seconds after gpsd is running on the /dev/ttymxc3 serial interface. If gpsd is killed, then the messages stop.  When using minicom on /dev/ttymx3 at 9600 baud, the issue does not appear. It looks like gpsd is using some feature of the driver that causes it to encounter a buffer overrun in the newest imx_3.14.52_1.1.0_ga kernel.  I am running gpsd with the following command:

gpsd -n -N -D 2 /dev/ttymcx3

Additionally UART1 is being used as a serial terminal to login to the custom board and does not seem to cause this issue when a serial terminal program from an attached PC is connected.

0 Kudos
1,796 Views
alejandrolozan1
NXP Employee
NXP Employee

Hi,

The overrun occurs when one byte has been received and the FIFO is full, and the MPU discards the last byte.

A few things I would try are:

1.- Use the 3.14.38 imx.c serial tty driver

2.- Change or try to use a different UART module (one used for the console) and see if the error remains.

3.- Increase the RXTL_UART macro found in the imx.c file to increase the threshold of the RX FIFO.

Please try that and let me know how it goes.

Best Regards,

Alejandro

0 Kudos
1,796 Views
compmas2
Contributor V

Alejandro,

None of the suggestions above seemed to fix the issue.

1. I reverted the commits between imx_3.14.38_6ul_ga and imx_3.14.52_1.1.0_ga tags for the imx.c driver. No change in issue.

2. Can't change UART since it is embedded on a board.

3. Delayed the issue occurring but the issue still occurred.

Any other suggestions?

Best Regards,

Matthew

0 Kudos
1,797 Views
compmas2
Contributor V

I tried using the new rel_imx_4.1.15_1.1.0_ga Linux kernel and this seems to have resolved the issue.  I know do not get the Rx FIFO overrun error and the serial port is working much better now.

0 Kudos