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.

CONNECTING TWO 6670 EVM“S USING BREAKOUT CARD

      The aim is to send simple data from 6670 DSP of one EVM to 6670 DSP of other EVM using SRIO Interface. I have connected two 6670 EVMS using breakout card.We have brought them from TI.  I have run the SRIO_LoopbackDioIsrexampleproject in loopback mode(with no changes) and program was successful.

(DIO with Interrupts example completed successfully)

When I changed from loopback to Normal mode it is not working. I have made this following changes:

  1.  CSL_BootCfgsetSRIOSERDESConfigPLL (0X251) instead of  CSL_BootCfgsetSRIOSERDESConfigPLL (0X233) “(even with 233 value also loopback working)
  2.  Changed to

  CSL_SRIO_SetNormalMode(hSrio, 0);

  CSL_SRIO_SetNormalMode(hSrio, 1);

  CSL_SRIO_SetNormalMode(hSrio, 2);

  CSL_SRIO_SetNormalMode(hSrio, 3);    instead of

 

           CSL_SRIO_SetLoopbackMode(hSrio, 0);

           CSL_SRIO_SetLoopbackMode(hSrio, 1);

           CSL_SRIO_SetLoopbackMode(hSrio, 2);

          CSL_SRIO_SetLoopbackMode(hSrio, 3);

         But the program is not running completely. Port ok is not happening.

    I feel I have to do some more changes. Whether I have to change the device Id in one code because if I don’t change it seems I am loading same code on both the systems (core o in one system and core 1 in other system)

Default code

           /* Populate the DIO Address Information where the data is to be sent. */

            to.dio.rapidIOMSB    = 0x0;

            to.dio.rapidIOLSB    = (uint32_t)&dstDataBufPtr[srcDstBufIdx][0];

            to.dio.dstID         = DEVICE_ID2_16BIT;

            to.dio.ttype         = dio_ttype;

            to.dio.ftype         = dio_ftype;

expecting to change

            to.dio.rapidIOMSB    = 0x0;

            to.dio.rapidIOLSB    = (uint32_t)&dstDataBufPtr[srcDstBufIdx][0];

            to.dio.dstID         = DEVICE_ID4_16BIT //DEVICE_ID2_16BIT;

            to.dio.ttype         = dio_ttype;

            to.dio.ftype         = dio_ftype;

Please help me out

Thanks and Regards,

Nithin B

  • Hi Nithin,

    In MCSDK example project DSP core0 initialize the SRIO driver and update status bit to the shared memory address.

        /* Initialize the system only if the core was configured to do so. */
        if (coreNum == CORE_SYS_INIT)
        {
            System_printf ("Debug(Core %d): System Initialization for CPPI & QMSS\n", coreNum);
    
            /* System Initialization */
            if (system_init() < 0)
                return;
            
            /* Power on SRIO peripheral before using it */
            if (enable_srio () < 0)
            {
                System_printf ("Error: SRIO PSC Initialization Failed\n");
                return;
            }
            
    	    /* Device Specific SRIO Initializations: This should always be called before
             * initializing the SRIO Driver. */
        	if (SrioDevice_init() < 0)
            	return;        
    
            /* Initialize the SRIO Driver */
            if (Srio_init () < 0)
            {
                System_printf ("Error: SRIO Driver Initialization Failed\n");
                return;
            }
    
            /* SRIO Driver is operational at this time. */
            System_printf ("Debug(Core %d): SRIO Driver has been initialized\n", coreNum);
    
            /* Write to the SHARED memory location at this point in time. The other cores cannot execute
             * till the SRIO Driver is up and running. */
            isSRIOInitialized[0] = 1;
    
            /* The SRIO IP block has been initialized. We need to writeback the cache here because it will
             * ensure that the rest of the cores which are waiting for SRIO to be initialized would now be
             * woken up. */
            CACHE_wbL1d ((void *) &isSRIOInitialized[0], 128, CACHE_WAIT);
        }

    Once the core0 update the shared memory status bit other DSP Cores(1-7) are execute the code.

       else
        {
            /* All other cores need to wait for the SRIO to be initialized before they proceed. */ 
            System_printf ("Debug(Core %d): Waiting for SRIO to be initialized.\n", coreNum);
    
            /* All other cores loop around forever till the SRIO is up and running. 
             * We need to invalidate the cache so that we always read this from the memory. */
            while (isSRIOInitialized[0] == 0)
                CACHE_invL1d ((void *) &isSRIOInitialized[0], 128, CACHE_WAIT);
    
            /* Start the QMSS. */
            if (Qmss_start() != QMSS_SOK)
            {
                System_printf ("Error: Unable to start the QMSS\n");
                return;
            }
    
            System_printf ("Debug(Core %d): SRIO can now be used.\n", coreNum);
        }
    

    So better to load the same .out file on core0 of both system.

    Thanks,

     

  • Hi,

       Thanks for the reply. I have run the same code on core o and core 1 in loopback mode and the program was successful. My aim is to send data between two different Dsp's of 6670 evms connected using breakout card. I have changed from loopback mode to normal mode. But i am unable to get portok. Do I have to do any further changes?

                                                                                    Thanks and regards,

                                                                                                       Nithin B.

  • Hi Nithin,

    Regarding non-loopback mode, the following changes is ok:

      /* Configure SRIO to operate in loopback mode. */ 
      //    CSL_SRIO_SetLoopbackMode(hSrio,0); 
      //    CSL_SRIO_SetLoopbackMode(hSrio,1); 
      //    CSL_SRIO_SetLoopbackMode(hSrio,2); 
      //    CSL_SRIO_SetLoopbackMode(hSrio,3);
      
      /* Configure SRIO to operate in normal mode. */
      	CSL_SRIO_SetNormalMode(hSrio,0);     
      	CSL_SRIO_SetNormalMode(hSrio,1);     
      	CSL_SRIO_SetNormalMode(hSrio,2);     
      	CSL_SRIO_SetNormalMode(hSrio,3);

    There is also another SRIO example in the MCSDK that can run in loopback or board to board. I have tested this example on loopback or board to board modes successfully. Better to try this SRIO example for your testing

    MCSDK Path: C:\ti\pdk_C6678_1_1_2_6\packages\ti\drv\exampleProjects\SRIO_TputBenchmarkingTestProject

    Refer section "5.3 Two EVMs connected using breakout cards" and "9.4 Setting up B-E-B connection mode (board to board, external interface)" on 3073.SRIO_Benchmarking_Example_Code_Guide.doc.

    Thanks,

  • Any update, Please help us on close this thread.

    Thanks,

  • Hi,

    Sorry for the late reply. Sir, I have run SRIO_TputBenchmarkingTestProject between two boards and it was running successful with throughput and latency measurements. But with the same set up, If i am running the SRIO_LoopbackDioIsrexampleproject with the above changes(LOOPBACK TO NORMAL) port ok is not happening. I want to make simple data transfer. That is the reason I am asking do I have to do any further changes in the code? 

        Thanks for the reply,                                                            

                 Nithin B

  • Hi Nithin,

    Please check the Receive/Transmit SRIO SERDES Configuration on your code.

        /* Configure the SRIO SERDES Receive Configuration. */
        /* Non-loopback */
        CSL_BootCfgSetSRIOSERDESRxConfig (0, 0x00440495);
        CSL_BootCfgSetSRIOSERDESRxConfig (1, 0x00440495);
        CSL_BootCfgSetSRIOSERDESRxConfig (2, 0x00440495);
        CSL_BootCfgSetSRIOSERDESRxConfig (3, 0x00440495);
    
        /* Configure the SRIO SERDES Transmit Configuration. */
        /* Non-loopback */
        CSL_BootCfgSetSRIOSERDESTxConfig (0, 0x00180795);
        CSL_BootCfgSetSRIOSERDESTxConfig (1, 0x00180795);
        CSL_BootCfgSetSRIOSERDESTxConfig (2, 0x00180795);
        CSL_BootCfgSetSRIOSERDESTxConfig (3, 0x00180795);

    There is also another SRIO example in the MCSDK that can run in board to board. I have tested this example on board to board communication successfully. Better to try this SRIO example for your testing.

    MCSDK Path: \ti\pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\srioIpcChipToChipExample\producer

    \ti\pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\srioIpcChipToChipExample\consumer

    Refer \ti\pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\srioIpcChipToChipExample\Readme.txt file for more information.

    Thanks,