This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
DSR does not run (pci interrupt on MPC8245)
- From: paape at Hi-Techniques dot com
- To: ecos-discuss at sources dot redhat dot com
- Date: Mon, 8 Sep 2003 11:42:26 -0500
- Subject: [ECOS] DSR does not run (pci interrupt on MPC8245)
Hello,
I'm having a bit of trouble with the configuration of a pci interrupt.
I'm using eCos V2.0 (CD) and have done a quick and dirty port of the
csb281 template for and artis3000 board (mpc8245 and dp83815 nic).
In the "cyg_drv_interrupt_create" call, I pass priority 15. In (what was)
csb281_pci_init() I have configured the 83815's interrupt to be level
sensitive,
active low (having made necessary changes for devid etc.). The interrupt
processing eventually "hangs" (DSR does not run). I believe that I am
looping
in Cyg_Scheduler::unlock_inner(). I have tracked it through my ISR,
interrupt_end()
and unlock(). What's odd is that if I configure the int to be
edge-sensitive,
processing (of the first interrupt anyway) works OK, the xx_deliver() runs
(via eth_drv_dsr() in DSR). I'm doing all of the usual things...
cyg_interrupt_mask(), cyg_interrupt_acknowlege() in ISR but I don't call
cyg_interrupt_unmask() until after the xx_deliver() routine has completed.
Is there
possibly an issue here with respect to writing the EOI register in the EPIC?
Any
help would be greatly appreciated, as I am presently stumped. Working
through
the unlock_inner() routine looks like it would be a fairly tedious
undertaking.
Dan
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss