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.

[参考译文] TMS320F28388D:CPU2慢于 CPU1

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/954698/tms320f28388d-cpu2-slower-than-cpu1

器件型号:TMS320F28388D

你好

我在两个内核中运行相同的功能(独立模式)、我在 CPU1中获得1.8ms 和 在 CPU2中运行2.8ms 的基准测试。

我怀疑代码是从闪存运行的、但在 CPU2主函数中、我调用了:

InitSysCtrl(); 

它会调用:

//
// InitSysCtrl -系统资源的初始化。
//
void InitSysCtrl (void)
{
//
//禁用看门狗
//
DisableDog ();

#ifdef _flash
//
//将时间关键代码和闪存设置代码复制到 RAM。 这包括
//以下函数:InitFlash()
//
// RamfuncsLoadStart、RamfuncsLoadSize 和 RamfuncsRunStart
//符号由链接器创建。 请参阅器件.cmd 文件。
//
memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);

//
//调用闪存初始化以设置闪存等待状态。 此函数必须执行的操作
//驻留在 RAM 中。
//
InitFlash();


#endif 

当然、在 cmd 文件中、我有以下说明:

#if defined (_TI_EABI _)
.TI.ramfunc:{}load = FLASH3、
RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、
Load_start (RamfuncsLoadStart)、
load_size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
run_size (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
align (8)
#else
.TI.ramfunc:{}load = FLASH3、
RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
对齐(8)
#endif 

我还需要考虑其他事项吗?

谢谢你

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

    您好!

    您的代码看起来很好。 只需确保两种情况下代码都从同一个存储器(如 RAM 或闪存)运行。 如果它从闪存运行、则检查两个 CPU 上的等待状态、并确保两个状态相同。  

    此致、

    Vivek Singh

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

    [引用 user="Vivek Singh"]

    您好!

    您的代码看起来很好。 只需确保两种情况下代码都从同一个存储器(如 RAM 或闪存)运行。 如果它从闪存运行、则检查两个 CPU 上的等待状态、并确保两个状态相同。  

    此致、

    Vivek Singh

    [/报价]

    谢谢 Vivek。

    两个项目都设置为活动闪存、我有以下 命令:

    我想我缺少一些东西。 您是否有一个独立示例、然后我可以检查加载到 RAM?

    此致

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

    你好,Vivek

    我想知道您是否有一个有关此问题的示例来检查我们的设置。

    谢谢你

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

    您好!

    最好将您的项目和重现此问题的步骤发送给我。

    此致、

    Vivek Singh

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

    谢谢 Vivek。

    我将在没有受 IP 保护的器件的情况下准备一个代码示例、并尽快将其发送给您。

    此致。

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

    你好,Vivek。

    CPU2项目是否已启动?

    或者您是否需要这两个项目?

    此致

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

    如果您可以同时提供 CPU1/CPU2代码、那会更好。

    此致、

    Vivek Singh

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

    大家好、Vivek。

    由于 IP 原因、我无法共享整个代码、但我知道在两个 CPU 上运行相同的代码并测量其执行时间可能是一个有效的测试、对吧?

    此致

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

    您好!

    最好是使用显示问题的完整代码、只要它不依赖于任何硬件组件、但如果您不能共享完整代码、则可以使用示例代码并测试相同代码来检查它 确实存在您在原始代码上遇到的问题、这应该可以解决。

    此致、

    Vivek Singh