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.

[参考译文] TMS320F28P550SJ:在闪存上运行相同的代码段-在调试模式和独立模式下具有不同的执行时间

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1458794/tms320f28p550sj-run-the-same-piece-of-code-on-flash---having-different-execution-time-in-debug-mode-and-standalone-mode

器件型号:TMS320F28P550SJ
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的 Champ:

我要求为我的客户提供服务。

它们在运行代码片段(在闪存上执行代码)之间会遇到巨大的速度差异。 运行该 CCS 并运行 运行 来测量输出电压摆幅。 执行时间(在调试模式/独立运行)不同、这令人非常困惑、本应是相同的。  

一旦它们使用#pragma 将特定的代码片段移动到 RAM (.ramfunc)、两种模式下分别没有预期的时间差异。

另一条信息是 、它实际上会首先运行客户的引导加载程序项目、然后跳转到应用代码。  测量的 代码片段位于应用代码中。

询问 您有什么想法或建议、为什么在调试模式下和独立模式下对同一段代码运行时存在时间差异?  

感谢您提供的投入。

此致、

Johnny

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

    尊敬的 Johnny:

    我在 Flash 专家中循环探讨您的问题。

    此致、

    Delaney

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

    大家好、团队成员:

    如果您有任何输入、请告诉我。 谢谢!

    BR、  

    Seamus

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

    尊敬的 Seamus:

    我刚刚意识到、我重新分配给的专家目前实际上已经不在办公室了。 让我安排另一位专家来演示。 很抱歉耽误你的时间。

    此致、

    Delaney

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

    尊敬的 Johnny 和 Seamus:

    它独立运行的速度是否更快? 您能否提供更多有关在独立/调试模式下到底运行得更快/更慢的信息? 它是否与某个外设相关联?  

    此致、

    Skyler

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

    尊敬的 Delaney:

    没问题~

    您好、Skyler:

    我的客户发现、与待机模式相比、在调试模式下运行相同的 ISR 代码和相同的 CRC 代码时、执行时间存在显著差异。 在调试模式下、执行时间要短得多。 但是、在将 ISR 和 CRC 移至 ramfunc 后、这两种情况下的执行时间会保持一致。

    此致、

    Seamus

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

    尊敬的 Seamus:

    如果将 ISR 移动一个 CRC 至 ramfunc 以解决性能差异、是否需要采取任何进一步的操作? 或者、您只是想解释一下为什么会这样? 当 ISR 和 CRC 函数不在 ramfunc 中时、它们不会在标准的 Device_Init ()调用期间从闪存复制到 RAM。 因此、您在独立运行时可能会看到性能下降。 当在调试模式下加载到器件时、这些函数自动置于 RAM 中。

    此致、
    Skyler

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

    您好、Skyler:

    感谢您的回复!

    在调试模式下加载到器件时、这些函数自动置于 RAM 中。

    您是否意味着当我们使用 CCS 调试模式并将项目配置为引导至闪存时、这些函数 也会自动放置在 RAM 中?  如果是、我还想知道为什么 F28004x/3x 系列上不会出现该问题。

    此致、

    Seamus

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

    尊敬的 Seamus:

    我错了,这些功能是 不会 当被载入到调试模式时、自动放置在 RAM 中。 很抱歉混淆。

    当在 ramfunc 中加载没有 ISR/CRC 函数的应用时、您能否在调试模式的运行时验证 ISR/CRC 函数的地址? 我想知道这些函数的执行位置。 如果不将它们放置在 ramfunc 中、它应该从闪存运行、但性能表明以某种方式它可能在 RAM 中。

    此致、

    Skyler

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

    尊敬的 Seamus:

    您能否提供与此应用关联的链接器 cmd 和.map 文件?

    此致、

    Skyler

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

    您好、Skyler:

    很抱歉因为假期迟到了。 请参阅附件中的链接器 cmd 和映射文件。

    此致、

    Seamus

    e2e.ti.com/.../3666.map.txte2e.ti.com/.../f28p55x_5F00_app_5F00_flash_5F00_lnk.txt

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

    尊敬的 Seamus:

    项目中是否定义了_FLASH 符号? 您是否在应用程序或引导加载程序的任何点配置闪存等待状态?

    此致、

    Skyler

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

    您好、Skyler:

    感谢您的回复!

    是的、他们已经打开了预定义符号_FLASH、但不会在他们的代码中配置任何等待状态。  

    此致、

    Seamus

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

    您好、Skyler:

    他们是否需要在程序中写入自己的等待状态? 您能指导我们如何添加等待状态吗?

    此致、

    Seamus

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

    尊敬的 Seamus:

    等待状态应在 Flash_initModule()函数中设置、只要定义_FLASH 符号、该函数就会在 Device_Init ()中调用。 因此、我认为这不是问题所在。 我将与其他专家进行内部讨论、并在第二天给您回复。

    此致、

    Skyler

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

    您好、Skyler:

    感谢您的帮助! 请随时发帖。

    此致、

    Seamus

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

    您好、Skyler:

    您是否对此问题有任何新发现?

    此致、

    Seamus

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

    您好、Skyler:

    在这里寻求您的帮助。 谢谢!

    此致、

    Seamus

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

    尊敬的 Seamus:

    对于延迟、我们深表歉意。 通过 CCS 将程序加载到器件时、是否能在器件初始化后尝试调用 Flash_disableCache ()和 Flash_disablePrefetch ()? 此外、请确保禁用高速缓存和预取机制后未调用 Flash_initModule()。  

    此致、

    Skyler

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

    您好、Skyler:

    我们发现 InitFlash ()函数中没有任何内容,现在我只建议客户使用 Flash_initModule ()而不是 InitFlash ()。

    我想知道:

    这两个函数的执行方式是否完全相同、只有 API 和位字段样式的差异?
    2.我们何时会 在 P55中完成这个 InitFlash ()函数?  

    此致、

    Seamus

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

    尊敬的 Seamus:

    1.是的,通常 initFlash ()和 Flash_initModule ()之间的唯一区别是 driverlib 与 bitfield 样式。  

    2.这些功能将在下一个 C2000Ware 版本中完成。

    在通过 CCS 和引导加载程序加载时、在应用程序中使用 Flash_initModule()是否会产生一致的 ISR 性能? 或者、这是否仍需要进行调查?

    此致、

    Skyler

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

    您好、Skyler:

    可以、将函数从 initFlash()更改为  Flash_initModule()后、问题就会得到解决。 我们在 建议在设备初始化后调用 Flash_disableCache ()和 Flash_disablePrefetch ()之前没有进入 initFlash ()。 感谢您的帮助!

    此致、

    Seamus