[ECOS] ARM FIQ and nested interrupts

Gary Thomas gary@mlbassoc.com
Fri Oct 14 19:10:00 GMT 2011


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



More information about the Ecos-discuss mailing list