This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
ISR called, DSR not...
- From: "Stefan Sommerfeld" <sommerfeld at mikrom dot de>
- To: <ecos-discuss at ecos dot sourceware dot org>
- Date: Wed, 17 Aug 2005 16:59:12 +0200
- Subject: [ECOS] 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