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.

Splitting DDR3 issues (C6678 EVM)

Hi!


I have a pretty large multi-core program for the TMS320C6678L which I want to run on several cores. Because the program is so large I must load it on the DDR3 ram. I split up the program using the following settings:

And compile different symbolic files for different cores using different cfg settings like this:

var cwd = "DDR3_4";

Memory.defaultHeapInstance  =   Program.global.heap0;
Program.sectMap["sharedL2"] = cwd;
Program.sectMap["systemHeap4"] = cwd;
Program.sectMap[".sysmem"]  = cwd;
Program.sectMap[".args"]    = cwd;
Program.sectMap[".cio"]     = cwd;
Program.sectMap[".far"]     =     cwd;
Program.sectMap[".rodata"]     =     cwd;
Program.sectMap[".neardata"]     =     cwd;
Program.sectMap[".init_array"]     =     cwd;
Program.sectMap[".cinit"]     =     cwd;
Program.sectMap[".bss"]        =    cwd;
Program.sectMap[".const"]    =    cwd;
Program.sectMap[".text"]    =    cwd;
Program.sectMap[".code"]    =    cwd;
Program.sectMap[".switch"]    =    cwd;
Program.sectMap[".data"]    =    cwd;
Program.sectMap[".fardata"] =     cwd;
Program.sectMap[".args"]     =     cwd;
Program.sectMap[".cio"]     =     cwd;
Program.sectMap[".vecs"]     =     cwd;
Program.sectMap["platform_lib"]     =     cwd;
Program.sectMap[".far:taskStackSection"] = "L2SRAM";
Program.sectMap[".stack"]    =    "L2SRAM";

This works great for the DDR3 range from 0x80000000-0xC00000000, but for the rest of the DDR3 range the symbolic files will overwrite the other files in a "mirror" like fashion. The symptom is that on the core the symbolic file was loaded will instead show (no symbols are defined for (ADDRESS)), where ADDRESS will be in the range of the newer symbolic file.

If I upload the 4th program to DDR_4, it will overwrite the symbolic file in DDR_0. If I redefine DDR_4 to be the next DDR3 range, 0xD00000000-0xDFFFFFFFF, it will overwrite the symbolic file in DDR_1. Range 0xE00000000-0xEFFFFFFF will overwrite DDR_2, and the last range 0xF0000000-0xFFFFFFFF will overwrite DDR_3.


Is it possible to solve this problem so I can run the program on more cores?