This is the mail archive of the ecos-discuss@sourceware.org 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]

ISR called, DSR not...


Hi,

I have a problem interrupts with ecos. I use standard kernel irq routines. The ISR is called as expected, but the DSR not. I recently had a problem with posix and ecos threads, so could this a problem here too?

This is how i create the irq:

cyg_interrupt_create(CYGNUM_HAL_INTERRUPT_DMA,
 3,
 (cyg_addrword_t)0, //  Data item passed to interrupt handler
 dma_isr,
 dma_dsr, // The logical driver DSR
 &dma_irq_handle,
 &dma_irq);

static cyg_uint32 dma_isr(cyg_vector_t vector, cyg_addrword_t data)
{
cyg_uint32 dint,i;
HAL_READ_UINT32(PXA2X0_DINT,dint);
cyg_interrupt_acknowledge(vector);

for (i=0;i<32;i++)
{
 if (dint & (1<<i))
 {
  HAL_WRITE_UINT32(PXA2X0_DCSR0+(i),0x00000080);
 }
}

printf("dma_isr\n");
return (CYG_ISR_HANDLED|CYG_ISR_CALL_DSR);
}

static void dma_dsr(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data)
{
printf("dma_dsr\n");
}



What's wrong there. Another IRQ (from LCD) seem to work fine, but this not. Any suggestions?


Bye...


-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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