[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Serial Latency Issues, Baud Rate Affects Buffering
Sorry, you all noticed a big error in the calculus of the padding bytes. 5 ?
Mathieu Berland - 77160 wrote:
> You could send a continuous flow of bytes from the PC : 7 data bytes followed by
> 593 padding bytes. Then you synchronize your application on reading 600 bytes
> and not on the clock. The buffer will be more stressed and maybe you will have
> less problem ?
> Eric Sorton wrote:
> > Hi All,
> > We have an ETRAX100LX development board. For testing, serial port 2 on the
> > ETRAX is connected to a PC via a null modem cable. In the production system,
> > a wireless modem (limited to 4800 baud) will sit between the PC and the
> > ETRAX. At this time, we are operating the serial ports without hardware or
> > software flow control.
> > The PC runs a simple program which sends 7 bytes of data to the ETRAX via the
> > Serial port at a rate of 50Hz (7 * 50 = 350 which is within the bandwidth
> > capabilties of a 4800 baud modem). Instrumentation in the PC program ensures
> > that it sends the data at the proper rate and meets its timing deadlines.
> > The ETRAX runs a simple application which loops at a rate of 50Hz. Each
> > iteration, the serial port is read. Ideally, we would like to read 7 bytes
> > of data each loop iteration.
> > Initally, CONFIG_ETRAX_SERIAL_RX_TIMEOUT_TICKS was set to 5 and performance
> > was poor. On most iterations (at 115200 and 4800 and others) we would read 0
> > bytes, when the buffer was finally flushed, we would read multiple 7 byte
> > packets. A bit research indicated that changing
> > CONFIG_ETRAX_SERIAL_RX_TIMEOUT_TICKS to 0 or 1 would help the problem.
> > With CONFIG_ETRAX_SERIAL_RX_TIMEOUT_TICKS set to 0, if we set the baud rate
> > between the PC and the ETRAX to 115200, the ETRAX behaves well, and reads 7
> > bytes each iteration. If we set the baud rate between the PC and the ETRAX
> > to 4800, the ETRAX behaves poorly and reads 0 bytes on some loop iterations
> > while reading greater than 7 bytes on other loop iterations. Why does the
> > baud rate affect the behavior of the buffering? Is there anything we can do
> > to fix this issue?
> > We also tried setting the CONFIG_ETRAX_SERIAL_FAST_TIMER and the
> > CONFIG_ETRAX_SERIAL_FLUSH_DMA_FAST options. This made the situation worse
> > and NO data was transmitted between the PC and the ETRAX.
> > With CONFIG_ETRAX_SERIAL_FAST_TIMER enabled, we were able to successfully
> > transmit and receive 7 byte packets at 50Hz at 115200 baud. When we tried to
> > operate at 4800 baud, no data was received (a logic probe confirms the PC was
> > transmitting data).
> > With CONFIG_ETRAX_SERIAL_FLUSH_DMA_FAST, no data was recevied.
> > Port 0 on the ETRAX is connected at 115200 to a different device. We have
> > seen no issues communicating with this device with any combination of
> > options. However, we do always run this port at 115200.
> > We are looking for suggestions on what to try next as we are out of ideas.
> > Any help would be greatly appreciated,
> > Eric
> > --
> > Eric Sorton
> > Senior Member Research Staff
> > Institute for Scientific Research (ISR), Inc.
> > 119 Roush Circle
> > Industrial Park Road
> > Fairmont, WV 26554
> > Email: email@example.com
> > URL: http://www.isrparc.org
> > Voice: 304-368-9300 x219
> > FAX: 304-534-4106