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.

Problem with open CPPI Tx channels

Other Parts Discussed in Thread: TMS320C6678

Hi all,
I use DSP TMS320C6678 with SEED-XDS560v2 USB Emulator.
I have my project to DSP on C++ without operation system.
I attempt include to my project Packet Accelerator (PA) CPPI DMA.
I used as prototype PA_multicoreExample_exampleProject from
ti/pdk_C6678_1_1_2_6/packages/ti/drv/exampleProjects.
If I load example to my DPS I have next

but my project don't open CPPI Tx Channels


Where my errors?
Best regards,
Oleg

  • Oleg,

    Your question does not seem to be specific to TI-RTOS.  I have once moved your question over to the device forum in hopes that it will get a faster response there.

  • Oleg,

    By default this project runs on 4 cores (0-3). This way it can run on multiple targets. All cores share the same MAC and IP addresses.

    The packet is looped back at the RGMII and routed to a specific RX queue depending on the UDP port number. Each core monitors one RX queue. Each core verifies that it received all of its packets back and declares pass or fail.

    In order to change the number of cores, the following should be modified:
    #define NUM_CORES <#cores>
    This can be found in the multicore_example.h file.

    1. Load the program into the cores (0 - NUM_CORES) before running any core.
    2. Run the cores (0 - NUM_CORES).

    Each core will output to the console its status and the number of sent/received packets. Core 0 will declare pass/fail.

  • Hi Pubesh,

    I use my DSP with two applications.
    First: PA_multicoreExample_exaexamplmpleProject from ti/pdk_C6678_1_1_2_6/packages/ti/drv/exampleProject

    Second - my project. In both case I use all 8 cores.

    I does load program to DSP and run core 0. In case the PA_multicoreExample_exaexamplmpleProject  i have this

    And in my project I have next

    If look step-by-step difference is 

    0x0C01C700 - Example gCpdmaHnd
    00000001 00000001 00000000 00000000 00000000 00000000 00000000 02004000

    02004800 02004400 02005000 02004C00 00200918 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000002 00000000 00000000 00000000 00000000 00000000 00000000 02A6C000

    02A6C800 02A6C400 02A6D000 02A6CC00 00402020 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000400 00000007 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    Step 1
    00000001 00000101 00000000 00000000 00000000 00000000 00000000 02004000
    02004800 02004400 02005000 02004C00 00200918 00000000 00000000 00000000

    00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00800D20 00000000

    00000002 00000000 00000000 00000000 00000000 00000000 00000000 02A6C000

    02A6C800 02A6C400 02A6D000 02A6CC00 00402020 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00800D00 00800D40 00000400 00000007 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000


    Step 2
    00000001 00000101 00000000 00000000 00000000 00000000 00000000 02004000

    02004800 02004400 02005000 02004C00 00200918 00000000 00000000 00000000

    00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00800D20 00000000

    00000002 00000000 00000000 00000000 00000000 00000000 00000000 02A6C000

    02A6C800 02A6C400 02A6D000 02A6CC00 00402020 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00800D00 00800D40 00000400 00000007 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    Step 3
    00000001 00000201 00000000 00000000 00000000 00000000 00000000 02004000

    02004800 02004400 02005000 02004C00 00200918 00000000 00000000 00000000

    00000000 00000000 00000000 00000003 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00800D20 00000000

    00000002 00000000 00000000 00000000 00000000 00000000 00000000 02A6C000

    02A6C800 02A6C400 02A6D000 02A6CC00 00402020 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00800CE0 00800D40 00000400 00000007 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    0x0C01C400 - my Project gCpdmaHnd  Step 0, 1, 2, . . . 
    00000001 00000001 00000000 00000000 00000000 00000000 00000000 02004000
    02004800 02004400
    02005000 02004C00 00200918 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000
    00000002 00000000 00000000 00000000 00000000 00000000 00000000 02A6C000

    02A6C800 02A6C400 02A6D000 02A6CC00 00402020 00000000 00000000 00000000
    00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000400 00000007 00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    00000000 00000000
    00000000 00000000 00000000 00000000 00000000 00000000

    We can see in my project - memory don't change

    My project is C++ projects, example is C.

    I don't understand this behaviour my program

    Thanks

            Oleg

  • Oleg,

    If possible share your modified source to check and give the technical details. Did you test your code as per the readme file (C:\ti\pdk_C6678_1_1_2_6\packages\ti\drv\pa\example\multicoreExample\Readme)? 

  • Hi Pubesh,
    I have not problem with example programs. I have problems with my code on C++.
    In this case I use only small part code - only Init_Cppi "This API initalizes the CPPI LDD, opens the PASS CPDMA and opens up the Tx, Rx channels required for data transfers" - it is TI Description.
    This API run only core0 - in TI example and my little project also. I included all necessary libraries. But calling function Cppi_txChannelOpen return "Error opening Tx channel".  I don't yet understand why. If I will find where my errors, I'll let you know about it, may be it it will be useful to someone.
    Best regards
    Oleg

  • Oleg,

    I understand of your issue in the C++ migrated code only, not in the TI example. Is it possible share that project which is modified by you to look and give my technical solution.

  • Oleg,

    Are you get the working code with C++ environment now? Did you solve the issue which is getting early error "Error opening Tx channel" with C++ project? 

  • Hi Pubesh,

    I has found my error.
    In the configuration file into my project I made strings
    Program.heap = 0;
    Program.argSize = 0;
    I deleted this.

    And I added this line in configuration file:

    Program.sectMap[".qmss"] = new Program.SectionSpec();
    Program.sectMap[".qmss"].loadSegment = "MSMCSRAM";
    Program.sectMap[".cppi"] = new Program.SectionSpec();
    Program.sectMap[".cppi"].loadSegment = "MSMCSRAM";
    Program.sectMap[".sharedDDR"] = new Program.SectionSpec();
    Program.sectMap[".sharedDDR"].loadSegment = "MSMCSRAM";
    Program.sectMap[".cppiMemTX"] = new Program.SectionSpec();
    Program.sectMap[".cppiMemTX"].loadSegment = "MSMCSRAM";
    Program.sectMap[".cppiMemRX"] = new Program.SectionSpec();
    Program.sectMap[".cppiMemRX"].loadSegment = "MSMCSRAM";

    After these corrections, my project was "Open all CPPI Tx Channels. These will be used to send data to PASS/CPSW "
    I hope this will help someone in a similar situation
    Thank you for your advices
    Best regards,
    Oleg

  • Oleg,

    Glad to hear that you have solved the issue. Thanks for posting your modification here. I hope, this will be useful for the future readers if they get similar issue.