public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] ARM FIQ and nested interrupts
@ 2011-10-14 15:13 Will Wagner
  2011-10-14 17:52 ` Paul D. DeRocco
  0 siblings, 1 reply; 3+ messages in thread
From: Will Wagner @ 2011-10-14 15:13 UTC (permalink / raw)
  To: ecos-discuss

Hello,

We are looking at an application where we will need an FIQ to be able to 
interrupt an IRQ and I have been looking at support for this. It seems 
like there is no nested interrupt support for ARM and that FIQ support 
is very limited, in that it effectively turns it into an IRQ to be 
handled after current IRQ. Am I missing something here?

Has anyone done any work to support the FIQ properly on ARM? Anyone able 
to comment on why it was done this way in the first place?

Thanks
Will


-- 
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] 3+ messages in thread

* RE: [ECOS] ARM FIQ and nested interrupts
  2011-10-14 15:13 [ECOS] ARM FIQ and nested interrupts Will Wagner
@ 2011-10-14 17:52 ` Paul D. DeRocco
  2011-10-14 19:10   ` Gary Thomas
  0 siblings, 1 reply; 3+ messages in thread
From: Paul D. DeRocco @ 2011-10-14 17:52 UTC (permalink / raw)
  To: eCos Discuss

> From: Will Wagner
> 
> We are looking at an application where we will need an FIQ to 
> be able to 
> interrupt an IRQ and I have been looking at support for this. 
> It seems 
> like there is no nested interrupt support for ARM and that 
> FIQ support 
> is very limited, in that it effectively turns it into an IRQ to be 
> handled after current IRQ. Am I missing something here?
> 
> Has anyone done any work to support the FIQ properly on ARM? 
> Anyone able 
> to comment on why it was done this way in the first place?

I've always thought of FIQ as being for what you might call "software DMA",
where you have a really simple handler that just moves some data, and after
some number of invocations invokes a "real" interrupt. For this paradigm,
eCos doesn't need to participate in the FIQ mechanism at all: you manually
install your own handler and unmask FIQ, and all works fine as long as you
never do ANY OS calls in the handler. The way you signal the rest of eCos at
the end of a series of FIQ calls is to force the generation of a regular
IRQ, which in at least some ARM interrupt controllers can be done by
manually setting the request bit for some channel that doesn't map to a used
hardware interrupt input. I did this once on an ARM7TDMI, and it worked
fine.

-- 

Ciao,               Paul D. DeRocco
Paul                mailto:pderocco@ix.netcom.com 


--
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] 3+ messages in thread

* Re: [ECOS] ARM FIQ and nested interrupts
  2011-10-14 17:52 ` Paul D. DeRocco
@ 2011-10-14 19:10   ` Gary Thomas
  0 siblings, 0 replies; 3+ messages in thread
From: Gary Thomas @ 2011-10-14 19:10 UTC (permalink / raw)
  To: Paul D. DeRocco; +Cc: eCos Discuss

On 2011-10-14 11:52, Paul D. DeRocco wrote:
>> From: Will Wagner
>>
>> We are looking at an application where we will need an FIQ to
>> be able to
>> interrupt an IRQ and I have been looking at support for this.
>> It seems
>> like there is no nested interrupt support for ARM and that
>> FIQ support
>> is very limited, in that it effectively turns it into an IRQ to be
>> handled after current IRQ. Am I missing something here?
>>
>> Has anyone done any work to support the FIQ properly on ARM?
>> Anyone able
>> to comment on why it was done this way in the first place?
>
> I've always thought of FIQ as being for what you might call "software DMA",
> where you have a really simple handler that just moves some data, and after
> some number of invocations invokes a "real" interrupt. For this paradigm,
> eCos doesn't need to participate in the FIQ mechanism at all: you manually
> install your own handler and unmask FIQ, and all works fine as long as you
> never do ANY OS calls in the handler. The way you signal the rest of eCos at
> the end of a series of FIQ calls is to force the generation of a regular
> IRQ, which in at least some ARM interrupt controllers can be done by
> manually setting the request bit for some channel that doesn't map to a used
> hardware interrupt input. I did this once on an ARM7TDMI, and it worked
> fine.

This is the best use of FIQ on the ARM.  As mentioned, I originally
thought it could be used like IRQ via the normal eCos mechanisms.
However, that is just too heavy for the sort of things FIQ is normally
used for, so a very simple FIQ VSR is installed to do these quick
and simple operations, like pseudo-DMA.

Look at the MP3 player example in
    .../packages/hal/arm/edb7xxx/current/misc

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------

-- 
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] 3+ messages in thread

end of thread, other threads:[~2011-10-14 19:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-14 15:13 [ECOS] ARM FIQ and nested interrupts Will Wagner
2011-10-14 17:52 ` Paul D. DeRocco
2011-10-14 19:10   ` Gary Thomas

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).