public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] how to handle missed interrupt issue?
@ 2009-02-05 14:50 Dave Milter
  2009-02-05 15:00 ` Andrew Lunn
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Dave Milter @ 2009-02-05 14:50 UTC (permalink / raw)
  To: ecos-discuss

Hello.

Some days ago I started development of ecos's driver for some device
which compatible with ARINC 429.
Processor is belong to ARM9 family, freq is 200Mhz.

The logic is simple. Driver has circular buffer, and when it receive
from device interrupt, which means that it ready
to go, driver send to device next 32bit word, then it recieves next
interrupt and send next word and so on.
When driver sends all characters from circular buffer, it start from
begining of buffer.

Now I want implement function to change circular buffer pointer,
but if I do such simple thing:
cyg_drv_isr_lock()
change pointer
cyg_drv_isr_unlock()

there is probability that I lost interrupt between cyg_drv_isr_lock()
and cyg_drv_isr_unlock(),
and this of cause a problem, I willl wait interrupt and it never happens.

I imagine such scheme:

isr handler each time call dsr handler (via return value),
dsr signal via condition variable about interrupt,

when I want to change pointer to circular buffer, I do
wait on condition variable, and then disable interrupt, change my
pointer and enable interrupt.

This will works, because of maximum bit rate  of ARINC 429 is 100Kb/s, and
before next interrupt I have many time to disable/enable interrupts.

But may be there is more clever way to handle such case?

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-02-06 18:36 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-05 14:50 [ECOS] how to handle missed interrupt issue? Dave Milter
2009-02-05 15:00 ` Andrew Lunn
2009-02-05 15:23   ` alys
2009-02-05 15:12 ` Nick Garnett
2009-02-06 11:41   ` Dave Milter
2009-02-05 15:30 ` alys
2009-02-05 18:29 ` Paul D. DeRocco
2009-02-06 11:48   ` Dave Milter
2009-02-06 18:36     ` Paul D. DeRocco

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).