[ECOS] Serial overruns

Robin Farine acnrf@dial.eunet.ch
Mon Sep 17 23:47:00 GMT 2001


Two things to try:

Adjust the RX FIFO threshold.

To reduce delays, you could get rid of the producer thread by filling the ring
from the ISR and replacing the mutex/condition_var by a counting semaphore that
gets signalled from the DSR.

Robin

Matt Holgate <matt@dcs.gla.ac.uk> writes:

> Hi,
> 
> I have a very simple application with two threads - one that reads from a
> serial port into a circular buffer (the producer), and the other that
> writes the data back out to the same serial port from the buffer (the
> consumer). The effect should be that any data sent over the serial line is
> echoed back. Mutexes and condition variables are used to synchronise the
> two threads and protect the shared buffer.
> 
> The program runs fine if send a small amount of data down the serial line.
> However, if I send more than 16 characters (the size of the FIFO in the
> UART), then I get buffer overruns and only receive the first 16
> characters.
> 
> I've enabled hardware flow control, although I'm pretty sure the problem
> is that the serial DSR is not responding in time to keep up with the data
> rate (only 38400 baud), rather than the eCos buffer overflowing (it is set
> to the default size of 128 bytes).
> 
> I've no idea what the problem is, so any suggestions would be much
> appreciated!
> 
> thanks,
> Matt



More information about the Ecos-discuss mailing list