intConnect() and multiple ISRs - VxWorks
This is a discussion on intConnect() and multiple ISRs - VxWorks ; Can I call intConnect() multiple times to hook multiple ISRs to the
same interrupt vector?
My case is I have multiple devices can assert interrupts and the
destination has only one external interrupt pin. I do have an interrupt
mask ...
-
intConnect() and multiple ISRs
Can I call intConnect() multiple times to hook multiple ISRs to the
same interrupt vector?
My case is I have multiple devices can assert interrupts and the
destination has only one external interrupt pin. I do have an interrupt
mask register to check for the source device when an interrupt comes
in.
I expect vxWorks is able to process ISRs in a linked list fashion for
this kind of interrupt sharing scenrio. Anyone confirms this?
Thank
-
Re: intConnect() and multiple ISRs
Frank wrote:
>Can I call intConnect() multiple times to hook multiple ISRs to the
>same interrupt vector?
I think not and suspect that the most recently called overrides all
provious calls.
>My case is I have multiple devices can assert interrupts and the
>destination has only one external interrupt pin. I do have an interrupt
>mask register to check for the source device when an interrupt comes
>in.
It seems to me that what you need is a single handler that reads the
register and services the various devices as they interrupt. This handler
should be connected only once.
Watch out for what happens when one device is being serviced and another
tries to generate an interrupt. You may need to configure for level
triggered interrupts rather than edge triggered.
>I expect vxWorks is able to process ISRs in a linked list fashion for
>this kind of interrupt sharing scenrio. Anyone confirms this?
I know of nothing such as this, unless it's specific to a particular
BSP. What is your hardware environment?
--
================================================== ======================
Michael Kesti | "And like, one and one don't make
| two, one and one make one."
mrkesti at comcast dot net | - The Who, Bargain
-
Re: intConnect() and multiple ISRs
"Frank" wrote:
> Can I call intConnect() multiple times to hook multiple ISRs to the
> same interrupt vector?
No, the last connected ISR will hold.
> I expect vxWorks is able to process ISRs in a linked list fashion for
> this kind of interrupt sharing scenrio. Anyone confirms this?
I believe, but not 100% sure, that you can just use pciIntConnect() to do
exactly this, whether they are interrupts from PCI devices or not.
Personally, I would probably do what Michael suggested and use one ISR to
handle all of the devices.
Chris
-
Re: intConnect() and multiple ISRs
I checked the BSP of my hardware (MPC74xx). intConnect() only suports
one ISR hook-up. Unless I use pciIntConnect(), I can not hook multiple
ISRs to the same interrupt vector.
My INT is indeed level-triggered.
Thanks for your inputs!
-
Re: intConnect() and multiple ISRs
I checked the BSP of my hardware (MPC74xx). intConnect() only suports
one ISR hook-up. Unless I use pciIntConnect(), I can not hook multiple
ISRs to the same interrupt vector.
My INT is indeed level-triggered.
Thanks for your inputs!
-
Re: intConnect() and multiple ISRs
Definatlely use pciIntConnect() for multiple ISRs as it will "chain"
these ISRs together.
Jamie