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]

Re: ISR not causing an DSR in some rare conditions


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


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