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.

IDMA interrupt and event

Hi TI,

      I am using IDMA channel 1 for block transfer.

     In the SPRU871K  table 7.2 it is given for IDMA1 event 14 will be set when transfer completes and in description it is given as IDMA channel 1 interrupt.

       I am in the view , when the interrupt enable bit is set it will set the event 14 on transfer completion  and once the event is set event handler will be called. But now i am facing a problem of event handler is called even if interrupt enable bit is not set. 

        I want to know what is the use of interrupt enable bit in IDMA Channel 1Count Register. Is this interrupt and event 14 is different. If so how this interrupt can be handled.

Thanks in Advance.

Regards,

Janeeth R

   

  • Hi Janeeth,

    If your statement "event handler is called even if interrupt enable bit is not set" is true, it sounds curious to me.

    Are you using BIOS API to configure interrupt controller?  If yes, could you elaborate on how you wrote BIOS configuration and C source code?  If no, could you check the following diagrams and registers which is explained in the chapter 7 of SPRU871K?

    > Is this interrupt and event 14 is different. If so how this interrupt can be handled.

    Exactly speaking, IDMA Channel 1 Interrupt is directly corresponding "event 14" instead of "interrupt 14."  Events and Interrupts are mapped by Interrupt Selector.

    The Figure 7-14. CPU Event Routing Diagram well illustrates C64x+ interrupt controller.  7.5.3 CPU Interrupt Selector Registers explains how to configure the registers.  Could you check Interrupt Selector registers and interrupt vector?

    Best Regards,
    Atsushi

  • Hi Atsushi,

    I am simulating IDMA.

     I am Using  CSL for configuring interrupt Controller.

     Exactly speaking, IDMA Channel 1 Interrupt is directly corresponding "event 14" instead of "interrupt 14."  Events and Interrupts are mapped by Interrupt Selector

    CSL_intcOpen() -  By using this function i am mapping event14 to interrupt vector ID 4.

    CSL_intcHwControl(hIntc,CSL_INTC_CMD_EVTENABLE,NULL) for enabling the event 14.

    CSL_intcPlugEventHandler () - The event handler is tied to the event 14 using this function.

    Before this

     CSL_intcInit()

    CSL_intcGlobalEnable()

    are used for enabling the interrupts.

    Is my approach correct?

    Thanks in advance.

    Regards,

    Janeeth

  • Janeeth,

    Sorry for my late reply.

    I'm afraid but it is hard to say if it is correct or not by only the CSL calling sequence.  Instead, could you check the followings?

    1. Please put a breakpoint at the beginning of the interrupt vector entry which corresponds to the event.
    2. Run the code and you'll see the breakpoint hit even when you did not want as you mentioned.
    3. Please check IER, IFR of core registers.  Section 2.8 of SPRU732J covers them.
    4. In addition, please check EVTFLAG0, INTMUX0, 1, 2,3 of Interrupt Controller registers.  Chapter 7 of SPRU871K covers them.

    Best Regards,
    Atsushi