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.

CCS/TMDSEVM6678: use break point cause other cores go wrong

Part Number: TMDSEVM6678

Tool/software: Code Composer Studio

Hi,

I am using CCS 5.4 with MCSDK 2.1.2.6, my target board is C6678 EVM. I find an issue with software breakpoint, and I can reproduce this problem with 'Image Processing Demonstration' project with IPC method, and this issue also happens on CC7.0.

The problem is that, I add two more arguments of the function 'process_rgb()' as below. This function runs on eight cores, and I use CCS to setup a breakpoint (i.e. SWBP) at the line in the core1's view, (core1 is the second core, and it executes a slave thread), after I select an image let them to process the picture via the web UI, then all slave threads (i.e. core1 ~ core7) halt at the break point, I think it is correct because the instruction has been replaced by SWBP instruction, I can see this with other cores' view in memory browser or disassembly window, but the problem is that only core1 can executes the code correctly, other cores go wrong, they can't pass arguments correctly.

It seems like CCS can recovery SWBP instruction in the core which setup the breakpoint, but CCS does not recover other cores' SWBP when they all execute the same code, am I correct?

----------------

[ The code I modified in mcip_core.c ]

void process_rgb (int coreid, int* test, processing_info_t * p_info)
{
	...

	uint8_t i;

	Log_write1(UIABenchmark_start, (xdc_IArg)"Process_RGB");

	for(i=0; i<16; i++)
	{
		test[i] = i*2;
		test[i] |= coreid << 8;
	}
        ...
        ...

[ The code I modified in mcip_core_task.c  ]

void slave_main(void)
{
    ...
    
    int test[16];
    uint8_t i;
    
    ...

    process_rgb(DNUM, test, &(p_msg->info));

    for(i=0; i<16; i++)
    {
        printf ("test[i]=%X\n", test[i]);
    }
    ...
    

----------------

sincerely,

Snaku

  • Snaku Lee26 said:
    I think it is correct because the instruction has been replaced by SWBP instruction, I can see this with other cores' view in memory browser or disassembly window, but the problem is that only core1 can executes the code correctly, other cores go wrong, they can't pass arguments correctly.

    I think you need to either:

    a) Force the use of hardware breakpoints (by disabling the use of software breakpoints)

    b) Specify shared memory in the GEL file, to allow software breakpoints to be used.

    See SMP Debug for details.