[U-Boot] Rx FIFO: more than 64 bytes receive error

lokesh nijalinge lokesh1kumar2nijalinge at gmail.com
Sat Dec 29 12:31:35 CET 2012


Hi,

I am using the arm processor for my project and need to receive around 1K
bytes of data over UART. I am able to receive only 64 bytes at U-boot,
which is the UART RX FIFO size. After receiving the 64 bytes i am not
getting any data. I read the Technical Reference Manual, which says the if
more than FIFO size data is received then data will be lost instead
of overwriting.

Please let me know whether i need to configure any UART registers to
achieve more than 64 bytes.

*Details of the project:*
Processor : DM3730 from Texas instruments -OMAP3 ARM Cortex
UART device : NS16550

The default code having the UART initialization sequence posted below does
not seem to take care of the handling of more than 64 bytes of RX data.

u-boot/drivers/serial/ns16550.c

*Changes done by us to get the Data from RX fifo. *
*
*
Initially with  serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier); we have
not received any data over UART
But after changing the code to  serial_out(0x10, &com_port->ier);
we are receiving the data correctly ,but not more than 64 bytes.
Our goal is to receive 950 bytes.

*
*
*void NS16550_init(NS16550_t com_port, int baud_divisor)*
*{*
*       // serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);*
*         serial_out(0x10, &com_port->ier);*
*#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \*
*                                        defined(CONFIG_AM33XX)*
*        serial_out(0x7, &com_port->mdr1);       /* mode select reset
TL16C750*/*
*#endif*
*        serial_out(UART_LCR_BKSE | UART_LCRVAL, (ulong)&com_port->lcr);*
*        serial_out(0, &com_port->dll);*
*        serial_out(0, &com_port->dlm);*
*        serial_out(UART_LCRVAL, &com_port->lcr);*
*        serial_out(UART_MCRVAL, &com_port->mcr);*
*        serial_out(UART_FCRVAL, &com_port->fcr);*
*        serial_out(UART_LCR_BKSE | UART_LCRVAL, &com_port->lcr);*
*        serial_out(baud_divisor & 0xff, &com_port->dll);*
*        serial_out((baud_divisor >> 8) & 0xff, &com_port->dlm);*
*        serial_out(UART_LCRVAL, &com_port->lcr);*
*#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \*
*                                        defined(CONFIG_AM33XX)*
*
*
*#if defined(CONFIG_APTIX)*
*        /* /13 mode so Aptix 6MHz can hit 115200 */*
*        serial_out(3, &com_port->mdr1);*
*#else*
*        /* /16 is proper to hit 115200 with 48MHz */*
*        serial_out(0, &com_port->mdr1);*
*#endif*
*#endif /* CONFIG_OMAP */*
*}*
*
*
Waiting for your reply.

-- 
Thanks & Regards,
Lokesh Kumar,


More information about the U-Boot mailing list