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.

TMS320C6678: SRIO completion code '6' : “Retry” DOORBELL response received, or Atomic Test-and-swap was not allowed (semaphore in use).

Part Number: TMS320C6678

Hi,

I have two C6678, and I use the SRIO example code in the STK. The example code and document is in this link.

My develop environment is CCS 5.4 and MCSDK 2.1.1.6.

I test the SRIO SWRITE transfer from one c6678 L2 to the other c6678 L2, the result is correct, completion code is 0.

But I got completion code '6' when I change the destination address to DDR (i.e. 0x80000000), I use memory browser to check the data in the DDR, it is correct, just completion code is wrong.

What is meaning about “Retry” DOORBELL response received, or Atomic Test-and-swap was not allowed (semaphore in use).

Thank you,

Snaku

  • Hi Snaku,

    Take a look at the following thread:
    e2e.ti.com/.../196593

    The completion code that you are getting (doorbell retry) should only occur if a doorbell occurs on a bit that is already set and has not been cleared. Check and make sure that this bit is cleared at the beginning of your program.

    Also try using the example from the latest Processor SDK RTOS:
    software-dl.ti.com/.../index_FDS.html

    Best Regards,
    Yordan
  • Hi Yordan,

    You are right, my example code routes doorbell interrupt to INTDST_16 (i.e. route to core 0), but the destination endpoint is run on core 1, so no one clear the doorbell interrupt.

    this is original interrupt_map :
    SRIO_Interrupt_Map interrupt_map[]=
    {
    /*interrupt_event*/ /*INTDST_number*/
    {DOORBELL0_0_INT, INTDST_16}, /*route to core 0*/
    {DOORBELL0_1_INT, INTDST_16}, /*route to core 0*/
    . . .
    }

    i change INTDST_16 to INTDST_17.


    Thanks for your support,
    Snaku