Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] Re: LPC2106 newlib-lpc read() problems.

2006-03-12 by Robert Adsett

At 11:12 AM 3/8/06 -0500, Robert Adsett wrote:
>Quoting ourslandj <xmm0@...>:
> > Anyhow, I encountered a race condition with test10.c if I make the
> > output more than the size of the send_buffer (32).  Do you also get
> > that?  I made a solution and if you'd like I'd be more than happy to
> > contribute!
>
>I'll have to check.  I'm away from the source until later today but I'll check
>then.  In the meantime please do send on the fix (Use the links on the
>website).  I'll incorporate it and credit you as soon as I can test it.
>   A race
>condition is worth fixing immediately and I should have the few minutes needed
>to check that out tonight.

As promised Jacob sent along his changes and I went over them and reviewed 
his symptoms.  With his help I think we've traced down the root cause.

It turns out not to be a race condition.  At least not a race condition in 
the software, I have a sneaking suspicion that underlying cause of one of 
the needed fixes is a HW race.

One fix is to turn on the FIFO even though it's not used.  Back when I 
originally wrote this driver I missed the note to the effect that the FIFO 
was necessary.  I ran into a problem that I 'fixed' by only servicing a 
single serial interrupt source per interrupt.  I was never comfortable with 
that fix and there is a note in the source about there being a possible 
undocumented HW race condition.  Since this appears that this change may 
fix the problem I will probably go back and re-address the interrupt 
service to make it more conventional.

The second bug was that I embarrassingly left off the volatile modifier in 
a number of places. Sheesh.

Update is available as release 5a at 
http://www.aeolusdevelopment.com/Articles/download.html

Thanks Jacob, much appreciated.

Robert

" 'Freedom' has no meaning of itself.  There are always restrictions,   be 
they legal, genetic, or physical.  If you don't believe me, try to chew a 
radio signal. "  -- Kelvin Throop, III
http://www.aeolusdevelopment.com/

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.