This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: Serial overruns
- To: "Robert Cragie" <rcc at jennic dot com>
- Subject: RE: [ECOS] Serial overruns
- From: "David Airlie" <David dot Airlie at parthus dot com>
- Date: 18 Sep 2001 19:07:12 +0100
- Cc: "Matt Holgate" <matt at dcs dot gla dot ac dot uk>, " " <ecos-discuss at sources dot redhat dot com>
>
> The problem only occurred when running out of Flash memory; I ended up
> putting the problem down to the 'interesting' bus FIFO implementation which
> buffers up accesses from the CPU module. The solution ended up being
> bootstrapping the code to RAM first.
I think putting it down to the simpler FLASH has more wait states than RAM
so is slower so the ISR takes longer to run so it drops bytes? that's what
I put similiar problems on my own internal ARM board down to :-)
I made the ROMRAM patches that I contributed back for that reason
(Jonathan?? :-)
Dave.
>
> In your case, I would suggest perhaps trying the interim buffer approach.
> What platform are you using?
>
> Regards,
>
> Robert Cragie
> Design Engineer
> Jennic Ltd.
> Furnival Street
> Sheffield
> S1 4QT
> United Kingdom
> Tel: +44 (0) 114 281 4512
> Fax: +44 (0) 114 281 2951
> mailto:rcc@jennic.com
> http://www.jennic.com
>
>
> > -----Original Message-----
> > From: ecos-discuss-owner@sources.redhat.com
> > [mailto:ecos-discuss-owner@sources.redhat.com]On Behalf Of Matt Holgate
> > Sent: 17 September 2001 18:33
> > To: ecos-discuss@sources.redhat.com
> > Subject: [ECOS] Serial overruns
> >
> >
> > 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
> >
> >
> >
> >
> >
> >
> >
>
--
David Airlie, Software Engineer, Parthus Technologies plc.,
Mary Rosse Centre, National Tech Park, Limerick, Ireland.
t: +353-61-508116 / f: +353-61-508101 / David.Airlie@parthus.com