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.

[参考译文] TMS320F28379D:性能问题

Guru**** 2535880 points
Other Parts Discussed in Thread: TMS320F28379D, TMS320F28335, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/612554/tms320f28379d-performance-problems

器件型号:TMS320F28379D
主题中讨论的其他器件: TMS320F28335C2000WARE

大家好、团队、

我对 TMS320F28379D 的性能有疑问。 为了测量 TMS320F28379D (CPU1)相对于 TMS320F28335的性能、通过切换 GPIO 执行了测试程序并使用示波器测量了所需时间。 测量结果表明、TMS320F28379D@200MHz 的 CPU1运行测试程序所需的时间是 TMS320F28335@150MHz 所需时间的三倍以上。 我的介绍是 TMS320F28379D@200MHz 的 CPU1运行程序的速度将快于 TMS320F28335@150MHz。

在进一步调查中发现以下情况:

int iArray[40];

fArray 浮点[40];

fArray1[40];

 

对于(int i = 0;i < 1;i++)

   iArray[i]= 0;

   fArray[i]= 0.0;

   fArray1[i]= 0.0;

例如、要运行上述 for 循环、TMS320F28335@150MHz 需要77个处理器周期、而 TMS320F28379D@200MHz 的 CPU1需要284个处理器周期。 处理器周期是通过使用 CCS7时钟函数单步执行反汇编行来测量的。

两个项目使用了相同的编译器(TI v.7.0.STS)。 生成的汇编器行是相同的。 两个处理器的主数据表都引用了相同的参考指南(„TMS320C28x CPU 和指令集参考指南"和„TMS320C28x 浮点单元和指令集参考指南")。

因此、在本示例中、我希望两个处理器的周期计数相同。 为什么它们需要大量不同的处理器周期?

谢谢你

Michael F.

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

    您的理解是正确的、这两个器件应该为同一代码在两个器件上提供相同数量的周期-
    我有几个问题-

    1) 1)您是从 RAM 还是闪存运行代码。
    2) 2)您提到性能是通过单步执行代码来测量的。 您是否还通过运行全循环而不是单步执行代码来检查性能?

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

    (1)我使用2837xD_FLASH_Ink CPU1.cmd 和 F28335.cmd 文件从闪存运行代码。

    (2)我无法通过运行完整循环来检查性能、因为当我尝试从断点运行到断点时、CCS7时钟函数不起作用。 我不知道为什么。

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

    Michael、

    在 F2837xD 器件中、您使用的闪存等待状态值是多少?  在200MHz 时、您需要将等待状态配置为3。

    此外、您是否打开了预取机制?

    C2000Ware 中提供的 InitFlash()函数 C2000Ware_x_xx_xx_xx\device_support\f2837xd\common\source 将初始化等待状态并为您启用预取机制。  请查看此函数。

    谢谢、此致、
    Vamsi

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

    是否可以在两个器件的 RAM 中运行相同的代码来检查在这种情况下是否正常 周期数是相同的?

    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、在从闪存运行时、是否确保正确配置了闪存等待状态和其他闪存设置。 在我们的示例中,调用 InitSysCtrl()函数,该函数调用 InitFlash()函数进行闪存设置。

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

    您好!

    问题得到解决。 调用 InitSysCtrl()函数,但未调用 initFlash()函数。

    感谢您的支持、

    Michael F.

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

    很高兴问题得到解决。 我要关闭此主题。

    谢谢、此致、
    Vamsi