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.

C6670 SRIO Direct I/O NREAD/NWRITE example

Are there any examples for the 6670/6678 to do an NREAD/NWRITE using direct I/O.  We have the MREAD/MWRITE packets going both ways, however it seems that the NREAD/NWRITE brings the link down.  Is there anything special we needed to do to get the NREAD/NWRITE working?  We have looked at the srio_drv in the pdk, however we were looking for a more basic example where we do not need to be running the BIOS to use the NREAD/NWRITE.

  • Hi Jimmy,

    In your setup, do you have a SRIO link between C6670 and SRIO switch or Is it C6670 to C6670 connection?

    If it is C6670 to Switch connection:

    There are two physical layer bits in the RIO_SPn_CTL register that control the ability to accept and send packets, Input Port Enable and Output Port Enable bit respectively.  Please, check if these bits are enabled in the switch?  This would match our description of idles and control symbol working, but not packets where a PNA is generated. Now the interesting thing is that even in these states Maintenance packets work, which is true in your case.  Here, we can perform a maintenance read to the RIO_SPn_CTL register of the Switch port connected to the DSP (configure LSU_Reg1. Config_Offset accordingly). In this way we can confirm if the “Input port receive enable” and “Output port transmit enable” of the switch port is set or not, If not set, we can perform a maintenance write to the RIO_SPn_CTL register from the DSP SRIO.

    Here is the description of the bits from SRIO users guide:

    Input port receive enable:

    0b0 - port is stopped and only enabled to route or respond I/O logical MAINTENANCE packets, depending upon the functionality of the processing element. Other packets generate packet-not-accepted control symbols to force an error condition to be signaled by the sending device. Control symbols are not affected and are received and handled normally.

    0b1 - port is enabled to respond to any packet

    Output port transmit enable:

    0b0 - port is stopped and not enabled to issue any packets except to route or respond to I/O logical MAINTENANCE packets, depending upon the functionality of the processing element. Control symbols are not affected and are sent normally.

    0b1 - port is enabled to issue any packets

    The following E2E thread has more information about C6670 to Switch connection:

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/170264.aspx#62195

  • We did not have these bits enabled so thank you for clarifying.  After enabling them, we are still having the same results.  Do you have any other suggestions?

  • Jimmy,

    Which setup do you have, C6678 --> Switch (loopback inside the switch) or C6678 --> Switch --> C6678 (or some other device)?

    What version of the PDK or MCSDK are you using? When sending DIO packets, what SRIO logical (ERR_DET register) and physical layer (SPn_ERR_STAT) errors do you encounter? What is the SRIO switch part number?

  • We are connecting to a CPS1432 switch, to a different card that has another CPS1432 switch connected to the 6670 as an endpoint.  The PDK we are using is v 1.0.0.17, we are not using the bios.

  • Hi,

    We are working on 6678 and CPS1432 Switch. But we are facing issues like input and output error stop.

    We are using the example dioISR code in 6678. We are struggling a lot with input and output error stop issue. Though software error recovery procedures didn't help.

    It would be helpful if you could share information like CPS 1432 configuration's.

    Thanks

    Senthil G

  • Hi,

    There is benchmark code in pdk "ti_install_dir/pdk_C6678_1_1_2_5/packages/ti/drv/srio/test/tput_benchmarking" (replace with your version of pdk). If you have not tried it is probably a good idea make it work in your setup. There are a few way to run it, single cpu, switch loopback, board to board, board switch board. I found it to be very useful.

    Alexey