This is the mail archive of the ecos-devel@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]

Re: cyg_drv_interrupt_create() troubles


Stephen Mose Aaskov wrote:
> I´m working on a port of a NE2000 driver to our platform (MIPS R3000,
> Davicom Eth. controller).
>
> Currently I experience that the board crashes emidiatly after the call
> to cyg_drv_interrupt_create() in the driver_init function. If I wrap
> the code in cyg_interrupt_disable()/enable I can defer the crash to
> after the cyg_interrupt_enable() call.
>
> However, as I understand no activity involving the interrupt handler
> and interrupts should be possible until after a call to
> ..._interrupt_attach(). So all I have is a newly created interrupt
> object, that still manages to crash the board.
>
> Anyone eager to help out a bit here??

That's very odd. As you say, cyg_drv_interrupt_create() isn't meant to really _do_ anything, only cyg_drv_interrupt_attach() is. You should still be able to single step through that code even with ints disabled if you set a breakpoint before it. Check that the interrupt vector is being set up in the right place.

Enable CYGPKG_INFRA_DEBUG which will (among other things) show if you get any unhandled interrupts.

Another option is something tangential like you are scribbling over memory (and that memory _does_ contain something relevant for handling other interrupts). Check all the locations you are passing in are valid. Similarly check you aren't running out of stack.

I take it when you run with GDB it's not actually stopping with a SEGV or SIGBUS then?

Jifl
--
eCosCentric http://www.eCosCentric.com/ <info@eCosCentric.com>
--[ "You can complain because roses have thorns, or you ]--
--[ can rejoice because thorns have roses." -Lincoln ]-- Opinions==mine


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