This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Interrupt handler no more called after some time (on a DM6437)

Hello,

I am working on an Ethernet driver used with the NDK and DSP/BIOS on a DM6437. It work fine but after some time continuously transfering stream of data (more than 10 MB/s for few seconds to few minutes) the interrupt handler is no more called as expected. I can confirm that

- The GPIO pin used to receive interrupt from the MAC really receive the interrupt as expected.

- The event in the event combiner is working as expected. The status bit rise and can be cleared without problem

- The HWI9, shared between 3 GPIO sources no more work at all

- Writting a 1 to the bit 9 of ISR register fixe the problem and the interrupt handler became called again as before

- The interrupt is enabled

- Every time the interrupt handler is called, i acknowledge the interrupt with the GPIO module

 

Any hints or debugging suggestion are welcome.

Martin Dubois

  • Martin,

    I'm not an expert in DSP architecture. I may not be able to give specific details. Still can you try the following?

    1. To HWI9 what are the three different GPIO sources connected? Is any of the other GPIO interrupt occurring during the Ethernet transfer?

    2. Does this behaviour happen at a lower data transfer rate, say around 1MB/sec?

    Every time the interrupt handler is called, i acknowledge the interrupt with the GPIO module

    3. Are you acknowledging the interrupt as soon as you enter the handler or towards the exit? If it is towards the exit, can you poll the GPIO whether there is any pending interrupt exists, before leaving the handler?

    4. Which is your Ethernet controller?

  • Thanks,

    1. Acquisition card, MAC, GPIO for synchronisation with a second processor

    2. No, the behaviour was not happening at lower rate

    3. I acknowledge it when entering into the ISR.

     

    I found the problem. While processing the MAC interrupt, sometime it happen that the MAC send another interrupt and also the other interrupt sources (acquisition card) also send an interrupt. The first of two to arrive was correctly queued but the second one was dropped. The event 96 was then raised and the HWI9 was becoming "blocked".

    In order to solve the problem, I kept the acquistion card on HWI9 and moved the two other interrupt sources to HWI6. Thanks to the event combiner for allowing me to do that without hardware change. This way, the acquisition card interrupt get a higer priority than the network card and it is what I want. The third interrupt source only serve at startup to synchronise 2 processor operation. When transfering data at high rate, this one is sillent.

    Tanks again,

    Martin Dubois