This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]