Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

intConnect() and multiple ISRs

71 views
Skip to first unread message

Frank

unread,
Aug 24, 2005, 7:39:15 PM8/24/05
to
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

Michael R. Kesti

unread,
Aug 24, 2005, 10:25:11 PM8/24/05
to
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

Chris Doré

unread,
Aug 25, 2005, 10:25:11 AM8/25/05
to
"Frank" <ydai...@hotmail.com> 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


Frank

unread,
Aug 25, 2005, 12:54:13 PM8/25/05
to
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!

Frank

unread,
Aug 25, 2005, 12:54:39 PM8/25/05
to

Jamie

unread,
Aug 26, 2005, 10:42:07 AM8/26/05
to
Definatlely use pciIntConnect() for multiple ISRs as it will "chain"
these ISRs together.

Jamie

0 new messages