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.

RTOS/PROCESSOR-SDK-C667X: Rapidio atomic operation get completion code 3

Part Number: PROCESSOR-SDK-C667X

Tool/software: TI-RTOS

I am using rapidio over one 6678 dsp, and when I perform an atomic operation I get completion code 3. Other operation is performed ok.

I read the KeyStone Architecture Serial Rapidio Uses guid, I get the features "support … out-going atomic operation" and "not support Destination support of rapidio atomic operation".  I don't understand "out-going atomic operation" and "Destination support of Rapidio atomic operation"

  • Hi,

    Atomic feature is described in section 2.3.6.'Incoming Atomic operations which target the device are not supported for internal L2 memory
    or registers. Atomic request operations to external devices are supported and have a response packet.". The latter case (to external device) means 'out-going atomic operation'.

    For no 'Destination support of rapidio atomic operation', you can also refer to section 2.3.2.3 Rx Operation - "The MAU block is responsible for all incoming direct I/O packets, including NREAD, SWRITE, NWRITE and NWRITE_R transactions. Incoming Atomic operations are not supported and will be responded to with an ERROR response."

    Regards, Garrett

  • Thank you for your reply. I had read the section which you refer. I am newer in rapidio, could you please just give me an example. I want to figure out whether the rapidio atomic operation supported between different processes in a single C6678 or processes in different C6678.

  • Thank you for your reply. I had read the section which you refer. I am newer in rapidio, could you please just give me an example. I want to figure out whether the rapidio atomic operation supported between different processes in a single C6678 or processes in different C6678.
  • Hi,

    See section 2.3.15.3 Peripheral Initializations example code,
    SRIO_REGS->SRC_OP = 32'h0004FDF4; // all N:included data streaming
    SRIO_REGS->DST_OP = 32'h0000FC04; // all except atomic

    As incoming atomic operations are not supported, C6678 can only request/initiate the atomic operation to other external devices.

    Regards,
    Garrett
  • Thank you'll for your reply. I want to maintain an atomic variable in one 6678, and this 6678 only read this var, another 6678 modify the var. I meant to use rapidio atomic operation implement it. Since the operation is not supported, is there any alternative efficient way to satisfy my scene.
  • If latency is not a concern, you can use the IPC framework with SRIO transport to pass the variable from one C6678 to another, see the PDK example - transportSrioMultiBoardConsumerC6678C66ExampleProject and transportSrioMultiBoardProducerC6678C66ExampleProject.

    Regards,
    Garrett