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 behavior of DSPLIB functions

Hi,

I want to know about interrupt behavior when I call the function from image/video processing library. (TMS320C64x+ DSP Image/Video Processing
Library)
There is  detailed imformantion about function on section 5~7 on programmer's guide(SPRUF30A).
I find a "interruptibility" from "Note". Here show some informantion for function.

case a:
"IMG_boundary_8()" function in section 5.1
Interruptibility: The code is interrupt-tolerant but not interruptible


case b:
"IMG_dilate_bin()" function in section 5.4
Interruptibility: The code is fully interruptible.


case c:
"IMG_errdif_bin_8()" function in section 5.6
Interruptibility: This function is interruptible. Maximum interrupt delay is 4*cols + 9 cycles.


Here is some questions about Interrupt.
Q1:
When I call the function is not interruptible like case a , do I need disable intrrupt by myself or the library code does it?

Q2:
What's the difference between case b and c?
Is case c not interruptible sometimes?

Q3:
If I don't disable interrupt when I call the function, the system will crash?


Thanks,

  • Eric, let me explain:

     

    > Interruptibility: The code is interrupt-tolerant but not interruptible

    Implies that no unexpected behavior will happen if interrupts occur during the processing of this kernel. In that sense the kernel is interrupt-tolerant. You don't need to explicitly disable interrupts across this kernel.

    The kernel however may block the interrupts from happening when entering the core kernel. So during the processing of the core kernel, the interrupts may not be taken. Thus, the user should be careful that it is Ok if the interrupts are not taken during the processing of this kernel

     

    > Interruptibility: The code is fully interruptible.

    Implies that no unexpected behavior will happen if interrupts occur during the processing of this kernel.

    The kernel doesn't block the interrupts from happening when entering the core kernel. So an interrupts happening during the processing of the kernel will be taken.

     

    > Interruptibility: This function is interruptible. Maximum interrupt delay is 4*cols + 9 cycles.

    Implies that no unexpected behavior will happen if interrupts occur during the processing of this kernel.

    The kernel does block the interrupt partially during operation. The maximum duration for which the interrupt are blocked is detailed.

     

    Please note NO FUNCTION requires you to disable the interrupt explicitly.

    Some kernels can block the interrupts in tight loop as explained above. There are few of these and they are generally older kernels that were written in handASM. The C64x+ and C674x cores support SPLOOP h/w pipelining feature that doesn't block interrupts even in tight loops. If you plan to use some of these older handASM kernels and if the interrupt blocking is undesirable, note we also provide intrinsic C version of most kernels that can be used instead of the assembly versions.

     

    Regards,

    Gagan

     

  • Thanks for Gagan's help!