[ECOS] FIQ on ARM

Rafael Rodríguez Velilla rrv@tid.es
Mon May 14 07:52:00 GMT 2001


What about using?

cyg_interrupt_set_vsr ((cyg_vector_t) 7, cyg_VSR_t *vsr);

  Where the pointer to vsr is the address where starts an assembly routine
that you have to program to service your FIQ.  Remember that you have to
manage your own stack and that you have to implement a safe way to return to
eCos.

  If you use this you can program a very quick response for your FIQ. This
still has the problem with the IRQ, which is non-reentrant (eCos 1.3.1, I
don't know if this is still true with CVS versions), if you want to mend
this you'll need to mess with the source code of eCos.
  Instead of this, surely you'd prefer partitioning your interrupt service
into a short ISR and its corresponding DSR, this seems to me the quickest
path.



> I see eCos supports the FIQ on ARM as just another IRQ line, is there any
> way to make it use the FIQ as a prioritised interrupt line? I have an IRQ
> interrupt that holds the system for a long time and I'd like to allow a
> serial FIQ to interrupt it ... but all eCos does is return if the IRQ is
> active an allow eCos to service it ..
>
> my current thinking is to remove the return .. but I'm wondering how
> re-entrant eCos is at this level, will it handle the situation well..
>
> I know I should re-design my app to do the IRQ in an ISR/DSR and then use
> a soft FIFO between ISR/DSR parts of my serial .. but I'm all in for the
> quickest path at the moment ....
>
> Dave.
>
> --
>       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

--
Rafael Rodríguez Velilla        rrv@tid.es
Telefónica I+D          http://www.tid.es
Telf: +34 - 91 337 4270





More information about the Ecos-discuss mailing list