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.

Starterware/TMS320C6678: Serial Rapid IO Tput Benchmark example halts

Part Number: TMS320C6678


Tool/software: Starterware

I want to test and evaluate Serial rapid IO comms using a breakout card (BOC) that connects two EVMC6678LE. I have copied SRIO_TputBenchmarking_evmc6678_C66TestProject and made changes according to ReadMe file to generate a Producer and consumer version to run on Emulator1/Core1 and Emulator0/Core0 respectively.

The code halts somewhere, either at Cache_block or Ipc_start(). With and without code optimisation.

Can you please guide if there is anything missing in .cfg file or any more changes to make in .c and .h files other than the ones instructed.

  • Hi,

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

    Best Regards,
    Yordan
  • Sherry,

    The SRIO_TputBenchmarking_evmc6678_C66TestProject should work as instructed in Readme.txt. Are you able to run the loopback example with single board? Which PDK release are you working with? The latest one is here: software-dl.ti.com/.../index_FDS.html

    Regards,
    Garrett
  • Processor SDK: processor_sdk_rtos_c667x_2_00_01_07

    PDK: pdk_c667x_2_0_0

    The same Testproject runs fine on single EVM board and lists the throughput statistics. I suspected that the DIP switch settings on my Break out card (BOC) were incorrect but that is not the case. I ran transportSrioMultiBoardConsumerC6678C66ExampleProject and transportSrioMultiBoardProducerC6678C66ExampleProject through the same BOC and it ran fine.

    I have noticed that the testControl.srio_isBoardToBoard variable is not updated to be TRUE after I have changed the value in struct in benchmarking.h. So I have to explicitly assert it again just before it is checked in main()'s if-condition for Ipc_start()... After making this change, the processor will not execute Ipc_start().

    if (!testControl.srio_isBoardToBoard)
        {
    		/* Initialize the heap in shared memory. Using IPC module to do that */
    		Ipc_start ();
        }

    Are there any IPC settings missing for multi-board scenario in the cfg file? 

  • Sherry,


    Did you update the define CORE_TO_INITIALIZE_SRIO in benchmarking.h for producer and consumer?

     * For board to board:
     *   RX side EVM (Consumer):
     *     This should be CONSUMER_CORE
     *     .out file to be loaded on core 0.
     *   TX side EVM (Producer):
     *     This should be PRODUCER_CORE,
     *     .out file to be loaded on core 1.
     */
    #define CORE_TO_INITIALIZE_SRIO           PRODUCER_CORE

    The CORE_TO_INITIALIZE_SRIO is used in testControl structure.

    Regards, Garrett

  • Yes, I made the above mentioned changes in benchmarking.h, each for consumer (Emulator0/core 0) and producer (Emulator1/core 1) code. For clarity, I have two separate projects in my workspace.

    I added the following for consumer code header

    #define IS_BOARD_TO_BOARD                 TRUE
    #define IS_OVER_EXTERNAL_SRIO_SWITCH	FALSE
    #define USE_LOOPBACK_MODE                 FALSE
    #define CORE_TO_INITIALIZE_SRIO           CONSUMER_CORE // 0X00
    
    

    for the producer core 1's header and .c code

    #define IS_BOARD_TO_BOARD                 TRUE
    #define IS_OVER_EXTERNAL_SRIO_SWITCH	FALSE
    #define USE_LOOPBACK_MODE                 FALSE
    #define CORE_TO_INITIALIZE_SRIO           PRODUCER_CORE
    testControl.srio_initCorenum =1;
    	if (coreNum == testControl.srio_initCorenum)
    	{
    		/* Debug Message: */

    However, when I put a breakpoint at if condition, testControl.srio_isBoardToBoard has not been turned to TRUE and hence the condition of !FALSE is satisfied and the program goes into Ipc_start(). should it really do so? The board I use is CI2EVMBOC. According to a doc in C:/PDK_DIRECTORY\packages\ti\drv\srio\test\tput_benchmarking\docs, Core 0 of EVM 1 should also be loaded with GEL file. I load the GEL file by right clicking the Emulator1/core0 in Debug mode.

  • I have found a mistake. When I copied the project into my workspace, I did not edit/remove the existing include Options pointing to the original PDK directory for all .c and .h files in the Build settings.
    Benchmarking.c was still looking at location "${PDK_INSTALL_PATH/ti/drv/srio/test/tput_benchmarking/src" and NOT the local copy of benchmarking.h. That's all sorted now.
    Thank you for your time.