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.

TMS320C6657: Dual core external and shared memory access

Part Number: TMS320C6657

Hi TI

I'm dealing with our costumer board using the C6657 dual core platform.

Our board is connected to the Jtag (XDS200 USB) to launch the code and watch the memory.

I'm running some basic code: boot from Core 0 (the 1. core) and wake the Core 1 (second core) and the mechanism seems to work fine.

Then i've tried some step further with 2 while(1) loops in both cores with different variables to be counting up

......

unsigned int MC_Core_0_Alive_Ext = 1; // placed in externam memory = DDR3

unsigned int MC_Core_1_Alive_Ext = 1; // placed in externam memory = DDR3

unsigned int MC_Core_0_Alive_Shared = 1; // placed in MSMCRAM

unsigned int MC_Core_1_Alive_Shared = 1; // placed in MSMCRAM

unsigned  uint MC_Core_0_Alive_Int = 1; / placed in L2SRAM = internal memory

unsigned  uint MC_Core_0_Alive_Int = 1; / placed in L2SRAM = internal memory

.....

/**** The while loop of Core 1 (2. core) ***/

.........

while(1)
{
  MC_Core_1_Alive_Ext++; 
  MC_Core_1_Alive_Shared++; 
  MC_Core_1_Alive_Int++;
}

......

/**** The while loop of Core 0 (1. core) ***/

.........

static char Core_0_msg[] = "\r\n\r\nCore 0 Alive ";
static char Core_1_0_msg[] = "\r\n\r\nCore 1 Alive (read from Core 0)";

.....

while(1)
{
  MC_Core_0_Alive_Ext++; 
  MC_Core_0_Alive_Shared++; 
  MC_Core_0_Alive_Int++;

  if ((MC_Core_0_Alive_Ext % 10000) == 0)
  {
    printf("%s\n", Core_0_msg);
  }

  if ((MC_Core_1_Alive_Ext % 10000) == 0)
  {
    printf("%s\n", Core_1_0_msg);
  }

}

......

The strange thing is:

- Each core can only see the variables where they are using of each core (watch screen dump of core 0 and core 1). The other variables keep the same initial value

- View from core 0:

- View from Core 1

I have expected all the variables from the external and shared memory would be seen from both cores

The prove that the didn't is:

- From core 0 the "if-statement" reads a external variable which is couting up from core 1 and if this variable reach a multiple of 10000 then a meesage will be printed out to the console. But this message didn't appear ever 

if ((MC_Core_1_Alive_Ext % 10000) == 0)
{
  printf("%s\n", Core_1_0_msg);
}

 

These 2 cores have been grouped and syncs. on Jtag

Can you please help with some idea for how I can move further. Thanks

BR

Tam Tran