C6678 EDMA3 example on C6670


I found out a EDMA3 example code edma_test.c  from \ti\pdk_C6678_1_0_0_16\packages\ti\csl\example\edma.

I used edma_test.c to run on C6670, but I got the results:

[C66xx_0] **************************************************
[C66xx_0] ******************* EDMA Testing *****************
[C66xx_0] **************************************************
[C66xx_0] Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
[C66xx_0] Debug: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0...
Error: Verification (Source1/Destination1) Failed

The example code can't run on C6670.

Is there any other EDMA3 example for C6670.


  • Hi Lin,

    Actually, the 3 edma3 modules of C6678 and C6670 are the same and of course they can use the same CSL_edma library and test example.

    So have a look at Debug mode, what's the address of src and dst buffer, is there anyone who use the local address of L2SRAM(that's 0x00800000~0x0087FFFF), if yes,that will cause error because EDMA3 module can only see the global address of L2SRAM(that's 0x10800000~0x1087FFFF).

    If you established the SYSBIOS project for test, there will exist the problem above,because the ti.platforms.evm6670 use local address to define the L2SRAM segment.


  • In reply to Allen Lee:

    Hi Allen,

    I use the global address, and finally  the example code can be run on C6670.

    Thanks for your help.


  • In reply to Ming-Che Lin:

    I am also having similar issue.

    I comment out _mfence() call in Verify_Transfer to continue execution

    and get Verification (Source1/Destination1) Failed.


    how did you switch to use 'global address'?


    thanks for any help


  • In reply to Lyndon McGlothin:

    Hi lwmcgl,

    You just need modify the definition of L2SRAM in your cmd file:

    L2SRAM:   o = 0x00800000     l = 0x00080000 


    L2SRAM:   o = 0x10800000     l = 0x00080000 (in the case of Core 0 used)

    or L2SRAM:   o = 0x11800000     l = 0x00080000 (in the case of Core 1 used)


    or L2SRAM:   o = 0x17800000     l = 0x00080000 (in the case of Core 7 used)




  • In reply to Allen Lee:

    Thank you Allen for your reply.

    My project does not have a modifiable '.cmd' file

    When I add one with the following :

            L2SRAM:  o = 0x10800000   l = 0x00080000


    I get the following error :


    **** Build of configuration Debug for project basicBIOSEDMA ****

    C:\Program Files\Texas Instruments\ccsv5\utils\bin\gmake -k all
    'Building target: basicBIOSEDMA.out'
    'Invoking: C6000 Linker'
    "C:/Program Files/Texas Instruments/ccsv5/tools/compiler/c6000/bin/cl6x" -mv6600 -g --display_error_number --diag_warning=225 --abi=eabi -z -m"basicBIOSEDMA.map" --warn_sections -i"C:/Program Files/Texas Instruments/ccsv5/tools/compiler/c6000/lib" -i"C:/Program Files/Texas Instruments/ccsv5/tools/compiler/c6000/include" --reread_libs --rom_model -o "basicBIOSEDMA.out" -l"./configPkg/linker.cmd"  "./main.obj" -l"libc.a" -l"C:/Program Files/Texas Instruments/pdk_C6678_1_0_0_17/packages/ti/csl/lib/ti.csl.ae66" "../app.cmd"
    "../app.cmd", line 3: error: L2SRAM memory range has already been specified
    error #10010: errors encountered during linking; "basicBIOSEDMA.out" not built

    gmake: *** [basicBIOSEDMA.out] Error 1
    >> Compilation failure
    gmake: Target `all' not remade because of errors.

    **** Build Finished ****


    I did search and found L2SRAM being defined in the linker.cmd file in the Debug-configPkg folder
    which states to not modify the file, it is automatically generated

    and also in the app_pe66.xdl file in the Debug-configPkg-package-cfg folder
    which looks like it changes with every build too

    How do I change this default setting?


    Thanks again,





  • In reply to Lyndon McGlothin:

    Hi lwmcgl,

    Okay, it seems you have used a RTSC project, so there will be some difference with the CCS project.

    In the RTSC project, the MEMORY definition is not available in the cmd file. Because it has been done by the platform package such as ti.platforms.evm6678, so check the current platform package through Project Properties->CCS Build->RTSC->RTSC platform(assume ti.platforms.evm6678 for example). Then you need to modify and rebuild the platform through Tools->RTSC Tools->Platform->Edit/View. In the pop-up window, browse the platform package repository to C:\Texas Instruments\xdctools_x_xx_xx_xx\packages (which is the xdctools packages directory in your computer). Then select the platform you want to modify such as ti.platforms.evm6678 and go to next. Within the new pop-up window, you can see the definition of L2SRAM, check the Customize Memory option and then modify the L2SRAM Base to 0x10800000. After click Finish, the RTSC tools will rebuild the  ti.platforms.evm6678 package and then clean and rebuild your project(of course you should remove app.cmd from your project), you will see the address of L2SRAM become global instead of local.