ARM and Fast Interrupts

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Apr 29 17:41:08 UTC 2009


xu ray wrote:
> It would be nice to support FIQ for ARM. It can improve ARM
> performance in some cases.
>   

Yes, I want to support FIQs such that you can do something useful with 
them, but then you have to disable the operating system support for 
FIQs. Currently we have operating system support for them and this 
requires that FIQs are disabled during critical sections of the 
operating system and application. At this level IRQs and FIQs are equal. 
It is true that FIQs can interrupt the non critical sections of IRQs, so 
here you have a small advantage. If you drop the operating system 
support, the FIQs can execute at any time (of coarse not during the 
service of another FIQ). If you need operating system support for a FIQ, 
you can trigger a software interrupt and service your request in a 
two-step process.

> Just beware of the following issues:
> (1)The FIQ is disabled by default. _CPU_ISR_Disable and
> _CPU_ISR_Enable is by default disable both FIQ and IRQ in the same
> time. Will you add a new API for FIQ?
>   

No, I want that RTEMS does not touch the FIQ at all.

> (2)FIQ has higher priority than IRQ, so it is dangerous to use it
> excessively sometimes. It would be better put some warning in the code
> in case programmers make mistakes.
>   

If someone really needs a FIQ, he has to think about this carefully and 
has to know what he is doing. Programmer mistakes at this level are deadly.

> (3) Update the CPU supplement manual for ARM if necessary
>   

Yes.

> 2009/4/29 Sebastian Huber <sebastian.huber at embedded-brains.de>:
>   
>> Hi,
>>
>> currently fast interrupts (FIQ) are disabled during rtems_interrupt_disable()
>> and rtems_interrupt_enable().  This makes them pretty useless since all their
>> benefits are wiped out.  If someone really needs operating system support for
>> FIQs he can trigger a software interrupt inside the FIQ handler which does this
>> job.  I want to change the interrupt disable mask such that FIQs are not
>> disabled during rtems_interrupt_disable() and rtems_interrupt_enable().  Any
>> objections?
>>
>> Have a nice day!
>>
>> --
>> Sebastian Huber, Embedded Brains GmbH
>>
>> Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
>> Phone   : +49 89 18 90 80 79-6
>> Fax     : +49 89 18 90 80 79-9
>> E-Mail  : sebastian.huber at embedded-brains.de
>> PGP     : Public key available on request
>>
>> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-users
>>
>>     
>
>
>
>   




More information about the users mailing list