This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Serial overruns


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]