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.

on 6455 srio

Hi

i am testing the dio library using the external loop back program. the problem is  the NWRITE operation complete normally,but the read operation complete with error .the complete code is DMA error. and i loop the read operation, but each time the result  is same.

so  how to overcome this problem.

thanks!

                           jeffery

  • Jeffery,

     

    The DMA transfer error means that the internal bus could not access the memory address that you are trying to access.  This type of error can show up on a read or write to a given memory address.  So, since you are doing an SRIO NREAD operation, and you are not getting a CC=0b011(Error response), this means that the memory address you are reading from is OK, but you are getting the CC=0b101(DMA transfer) which means the memory address you are trying to write the response payload to is not accessible.  For your test purposes, make sure both the buffer space you are reading and writing to are both addressable L2 addresses and you shouldn't have a problem.

    Regards,

    Travis

     

  • Travis,

            Thank you for your reply. I have pass the test.

           Do you have  example project  on bring  up a rapidio  system with tsi578 swtich and other pe?

         

  • Great!

     

    We do not really have any projects with non-TI processing elements, but if you are working with the TSI578, you can probably get some initialization/bringup info from IDT.  Once this is configured, there really is no difference from the loopback example.

     

    Regards,

    Travis

  •  I have another problem!

    The externl loop-back program traps into a while loop,where the status of srio is port uninitialized.

    what may cause the problem?

     

  • Hi Dong,

    Usually, when the port_ok bit is not being set, it means one of two things, either the link partners PLLs aren't setup correctly and they are operating at different data rates, or, their port widths are incompatible somehow.  Since this is loopback, neither of these should be occurring.  It has to be a physical connection issue with the loopback, or a setup issue.  Is boot_complete being written in your example?

    Regards,

    Travis

     

  • yes the boot_complete is written as 1.

    i will check the pll and the width also.

  • The register read out as follows:

    per_set_cntl=0x05000360

    serdes_cfg0_cntl=0x0000000b;

    sp0_ctl=0x5168000d;

    sp_ip_mode=0x4000002a;

    And I want to set the port as 1p/1x on port0.

    what is wrong?

     

     

  • Not completely sure, but I think it has to do with the port width and/or setup. How are you doing loopback?  You are doing loopback with external cables correct?

    If you want single port, that can be a 1x (using lane 0 or lane 2, and port 0) or 4x (using all lanes and port 0), then you must have: SP_IP_MODE[31:30]=0b00 and PER_SET_CNTL[8]=0b0

    If you want four port mode (each port 1x, using its own lane and port #) then: SP_IP_MODE[31:30]=0b01 and PER_SET_CNTL[8]=0b1.  This is the mode you have selected, and is what I'd suggest you get working first.

     

    You have SP(0)_CTL bit 24 set, which is a reserved setting, use [26:24]=0b000.  Bits [31:30] are 0b01, which indicates single 1x/4X port might just reflect the default value, but I'm unsure why bits[29:27=0b010 indicating four lane port.  Even if the port isn't initialized, these bits shouldn't read this I don't think.

     

    Here is a snapshot of all the registers that the SRIO bootrom parameter table configure for the C6455.  These are the minimum registers that should be touched, all others, the default values can be used and reconfigured later.  The sequence is important, with boot_complete being set at the end....

    SRIO  boot Config 0 - 4 ports 1x mode, 125Mhz reference, 1.25Gbps

     

    Offset

    Register

    Value

    0x120

    Rio_serdes_cfg0_cntl

    0x0000000B

    0x100

    Rio_serdes_cfgrx0_cntl

    0x00081121

    0x104

    Rio_serdes_cfgrx1_cntl

    0x00081121

    0x108

    Rio_serdes_cfgrx2_cntl

    0x00081121

    0x10C

    Rio_serdes_cfgrx3_cntl

    0x00081121

    0x110

    Rio_serdes_cfgtx0_cntl

    0x00010921

    0x114

    Rio_serdes_cfgtx1_cntl

    0x00010921

    0x118

    Rio_serdes_cfgtx2_cntl

    0x00010921

    0x11C

    Rio_serdes_cfgtx3_cntl

    0x00010921

    INSERT

    PLL LOCK TIME

    WAIT LOOP - suggest 5uS

    0x1010

    Rio_pe_feat

    0x20000019

    0x1018

    Rio_src_op

    0x0000fdf4

    0x101C

    Rio_dest_op

    0x0000fc04

    0x1100

    Rio_sp_mb_head

    0x10000002

    0x115C

    Rio_sp0_ctl

    0x00600001

    0x117C

    Rio_sp1_ctl

    0x00600001

    0x119C

    Rio_sp2_ctl

    0x00600001

    0x11BC

    Rio_sp3_ctl

    0x00600001

    0x105C

    Rio_lcl_cfg_bar

    0x005A0200

    0x1060

    Rio_base_id

    (B2:CFGGP[2:0] + 0b00000010)

    0x12004

    Rio_sp_ip_mode

    0x4C000000

    0x80

    Rio_deviceid_reg1

    (B2:CFGGP[2:0] + 0b00000010)

    0x90

    Rio_pf_16b_cntl0

    0x00000000

    0x94

    Rio_pf8b_cntl0

    0x00000000

    0x98

    Rio_pf_16b_cntl1

    0x00000000

    0x9C

    Rio_pf_8b_cntl1

    0x00000000

    0xA0

    Rio_pf_16b_cntl2

    0x00000000

    0xA4

    Rio_pf_8b_cntl2

    0x00000000

    0xA8

    Rio_pf_16b_cntl3

    0x00000000

    0xAC

    Rio_pf_8b_cntl3

    0x00000000

    0x280

    Rio_doorbell0_icrr

    0x44444444

    0x320

    Rio_intdst0_rate_cntl

    0x00000000

    0x324

    Rio_intdst1_rate_cntl

    0x00000000

    0x330

    Rio_intdst4_rate_cntl

    0x00000000

    0x334

    Rio_intdst5_rate_cntl

    0x00000000

    0x12008

    Rio_ip_prescal

    0x00000021

    0x113C

    Rio_sp_gen_ctl

    0x00000000

    0x20

    Rio_per_set_cntl

    0x05053750

    0x4

    Rio_pcr

    0x00000005