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:使用断点会导致其他内核出错

Guru**** 2611385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/640546/ccs-tmdsevm6678-use-break-point-cause-other-cores-go-wrong

部件号:TMDSEVM6678

工具/软件:Code Composer Studio

您好,

我正在将CCS 5.4 与MCSDK EVM.EVM配合使用,我的目标板是2.6 C6678 2.1。 我发现软件断点有问题,我可以使用iPC方法在'图像处理演示'项目中重现此问题,此问题也发生在7.0 上。

问题是,我添加 了函数'PROCESS_RGB()'的两个参数,如下所示。 此函数在八个内核上运行,我 使用CCS设置断点(即 swbp)在core1视图中的一行(core1是第二个内核,它执行从属线程),在我选择图像后,让他们通过web UI处理图片, 然后所有从属线程(即core1 ~ core7)在断点停止,我认为这是正确的,因为指令已被SWBP指令取代,我可以在内存浏览器或拆卸窗口中通过其他核心视图看到这一点, 但问题是只有core1可以正确执行代码,其他内核出错,它们无法正确传递参数。

似乎CCS可以在设置断点的内核中恢复SWBP指令,但CCS在其他内核 执行相同代码时不能恢复它们的SWBP,对吗?

--------

[我在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;
	}
...
...

[我在mcip_core_task.c中修改的代码 ]

void slaver_main (void)
{
...

内部测试[16];
uINT8_t i;

...

PROCESS_RGB (DNUM,TEST,&(p_msg->info));

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

--------

此致,

Snaku

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为是正确的,因为指令已被SWBP指令取代,我可以在内存浏览器或拆卸窗口中通过其他核心视图看到这一点, 但问题是只有core1可以正确执行代码,其他内核出错,它们无法正确传递参数。

    我认为您需要执行以下操作之一:

    a)强制使用硬件断点(通过禁用软件断点)

    b)在GEL文件中指定共享内存,以允许使用软件断点。

    有关  详细信息,请参见SMP Debug。