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.

6457 SRIO CPPI (Message Passing) Problem

Hello ,

I  am using an 6457 dual CPU EVM.

I have succeeded to perform DirectIO transactions, but with message passing (CPPI operation) I am having some problems.

The attached code is running on both the CPUs simultaneously.

The problem is that the messages are not sent from DSP1 to DSP2 and I am getting a 'Outbound credit not available' status in the 'cc' field of the first Tx descriptor.

I checked that everything is configured but I still cant find the problem.

Does anyone have a clue regarding the 'Outbound credit not available' status in the 'cc' field of Tx descriptor.

 

I attached my code.

The used Work Space is in "\my_evm6457_tests\tests\SRIO_tst\CCS_WS\My_Srio_Test.wks"

 

10X ,

Eran.

 4111.UC_my_evm6457_tests.zip

  • Did you try to create simple application. For example Try to copy one simple data block from one processor to other. 

    Try to switch round-robin scheme off.

    PS: see SPRUGK4B page 79

     

    TXU. The TXU cannot change state to handle inbound responses while it is requesting outbound credit.
    To avoid deadlock situations, the TXU tries for outbound credit in the following manner.
    For single-segment messages, if the transfer is unsuccessful after 256 times of credit request, the TXU
    moves to the next queue in the round-robin loop of TX buffer descriptor queues. The TXU tries to send the
    unbent message again the next time the round-robin scheduler returns to the given queue.
    For multi-segment messages, if the transfer is unsuccessful after 256 times of credit request for the first
    segment, the TXU moves to the next queue in the round-robin loop. The TXU tries to send the unsent
    message again the next time around the loop. After the first segment is granted outbound credit and is
    sent to the physical layer for transmission, all subsequent segments are given 64K attempts to gain
    outbound credit. If the TXU is unsuccessful after the 64K attempts, a completion code of 111b is written to
    the buffer descriptor, and the message is cancelled with no attempt to resend.

     

  • It doesn't work with or without the round-robin scheme.

    The attached code is a simple transmission of a 640*480 image. Even the first block has not been transmitted. The 'retries' field in the TX descriptor also stayed at its initialized number of '2' so it even hasn't tried to sent the first block.

    I still didn't understand what is the credit issue (page 79 in SPRUGK4BSPRUGK4B).

    Eran.

     

     

  • 1. You try to send 4096 byte of data (512 DWords). But 512 is a  10 0000 0000b - 10 bit.  Length of Message_length field is 9bit. (see page 49 SPRUGK4B)
    2. Length of your data is too big for one letter. You should send multi-segment messages. (SEGMENT_MAPPING bit = 1 in RXU_MAP_H )

  • Hi sergey ,

    1. 511 Dwords is 111111111 (9bit)  and 512 Dwords is 0

    2. you are correct.

    3. I have had some more problems with my configuration including the thondra rapidIo switch. but finally it works.

    thanks for the help.

     

    ERAN.