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.

TMS320C6457: SERDES loopback test of the SRIO interface

Part Number: TMS320C6457

hello,

    now,i study serdes loopback test of the c6457's srio interface. the project is NWRITE transcation of direct I/O operation.so,some questions i encounted as the following:

1. i use the ti offical example called srio_lsu example of c6457 srio in the c6457 csl library to modify.in the srio_lsu example, it operates in the digital domain which configure "loopback" is equal to 1 in the PER_SET_CNTL register. so, i have a question, since system is operate in the digital domain and the data is not pass the SERDES,why to configure the SERDES?

2.now,i will use the serdes to make a serdes loopback test,so i configure "loopback" equaled to 0 so that system operates in the normal mode. TXN0 connect RXN0 and TXP0connect RXP0, we pass the data from the TX0 to the RX0 using the serdes loopback.how can i to program?

3. Looking at the relevant data documents, how to subcontract when the data is larger than 4096,? My approach is to use the for-loop method, executing csl_sriolsusetup () function multiple times, at the end , delay 100 clock cycles per one for loop. However, the result of this is that you can get the correct data when you're performing a single step, and when you're running at full speed, the program will get stuck. What's going on here? Is there a delay time with the delay function? If so, how can you set the delay time?

4. In the serdes loop test, how to interrupt CPU with doorbell packet? which register should be set when programming?

  • Hi,

    I've notified the RTOS team. Their feedback will be posted here.

    Best Regards,
    Yordan
  • Hi pyda,

    The srio_lsu example might be configurable for both digital loopback and normal mode in the software release you are working with, so SERDES setup code appears in the "loopback" example.

    For normal mode operation with external line loopback, you need accordingly update the PER_SET_CNTL1 register through CSL_SRIO_SetNormalMode() as you have done, and configure the SERDES appropriately.

    For data size larger than single LSU tranaction size 4KB, not sure if there is a benchmark example project in your code baseline as in C66x PDK so you can refer to. Instead of delay function, you can get the status (completion code, context) of SRIO transaction from LSU_STAT_REG, refer to CSL_SRIO_GetLSUCompletionCode(), then determine to initiate next transfer.

    For doorbell interrupt, please refer to e2e.ti.com/.../115084 - "in order for you to use the DOORBELL message to cause an interrupt, you have to setup some of the SRIO interrupt registers, specifically the DOORBELLn_ICRR and DOORBELLn_ICCR2 registers."

    Regards,
    Garrett