[ECOS] ISR not causing an DSR in some rare conditions

Stefan Sommerfeld sommerfeld@mikrom.de
Thu Jan 12 14:35:00 GMT 2006


Hi,
>> >>
>> >> i'm using XScale PXA270 processor with latest eCos and I think I 
>> >> found a
>> >> problem with DSR's. I'm 100% sure that there must be a condition 
>> >> where
>> >> eCos
>> >> not calls the DSR of an interrupt. I have a IRQ which comes 45 times 
>> >> a
>> >> second on a system running at high load. After more then 10 hours one
>> >> DSR
>> >> is missing. This is a bad situation which makes the system unstable.
>> >>
>> >> Is this problem known? Maybe it depends only on the architecture 
>> >> (ARM).
>> >
>> > Does the ISR reenable the interrupt? It could be the next interrupt
>> > arrives before the DSR is called. In that case the DSR will be called
>> > with the count value of 2.
>>
>> No. The interrupts will not be disabled at any time. The interrupt from
>> this source will only be acknowledged in the isr function.
>>
>> The functionality is simple. A hardware unit will be started and reports
>> the finish with an interrupt. I have made a counter on hardware unit 
>> start,
>> isr and dsr. After this long-run test, the dsr counter is one less than 
>> the
>> other counters.
>
> So, what else is going on that creates your "high load?"  Possibly
> there is some side effect [you may not even be aware of] that could
> cause the DSR loss.

The system is decoding video and audio including output timing control, so 
there are lot of irq coming from Hardware and DMA channels.

> Have you checked to see if the DSR is ever called with a count other
> than 1?

I have not check this due to the behaviour of the usage. It's like 
start->isr->dsr->start... so dsr count could not be more than 1. After the 
missing DSR the hardware unit will not be started again, so i had time to 
dump counter values and status info. I did check the dsr count on the DMA 
isr/dsr. It was 2 (but not more) from time to time.

Another thing is the calling order of the dsr's. I would quess the best 
would be first come, first serve, so the dsr of the oldest irq will be 
first served. But in "linked list" mode it's the opposite (last come, first 
serve). Would this be different if i use the array version of the dsr's?

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



More information about the Ecos-discuss mailing list