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.

[参考译文] TMDSCNCD28379D:在 RAM 和闪存中运行代码时、系统的行为有所不同

Guru**** 2502205 points
Other Parts Discussed in Thread: TMDSCNCD28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/987468/tmdscncd28379d-system-behaves-differently-with-code-run-in-ram-and-flash

器件型号:TMDSCNCD28379D
主题中讨论的其他器件: C2000WARE

您好!

我使用 TMDSCNCD28379D 控制卡来控制我的转换器、发现随着 RAM 和闪存中运行的代码、系统的行为会有所不同。

当我使用 CCS8在 RAM 中运行代码时、系统会非常好地工作。 该系统在额定输入电压和半额 定输入电压条件下均能正常工作。

当我 使用 CCS8在闪存中运行代码时、系统控制环路将在 半额定输入电压下运行。

当我  使用 CCS10在闪存中运行代码时、系统在一半额定输入电压下工作。 但 系统控制环路会 在额定输入电压下失控。

我猜可能是由于某些项目配置差异导致了此问题。 但我检查了每个项目的项目配置、没有发现太多差异。

部分项目文件放入附件中。 还会显示用于测试的控制卡图片。  当我从闪存运行代码时、卡上的 SW1切换到模式03。 当我从 RAM 运行代码时、SW1切换到模式  01。

请帮我解决问题。 谢谢

    

e2e.ti.com/.../RAM_5F00_ccs8.zipe2e.ti.com/.../FLASH_5F00_ccs8.zipe2e.ti.com/.../FLASH_5F00_ccs10.zip

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

    感谢您访问 E2E 论坛。

    需要记住的一点是、与 RAM 相比、闪存中的代码的执行速度会更慢。  这是由于闪存的访问时间最大为50MHz。  SYSCTRL.c 中有一个函数、用于根据定义的器件速度设置闪存 WS、例如、如果您以200MHz CPU 时钟运行、则它将设置等待状态= 3。  

    所有这些话都说、您可能需要将代码中时间最关键的部分从闪存复制回 RAM、以获得真正的200MHz。  一个很好的开始位置是将所有与控制相关的 ISR 映射到 RAM 中、并查看这是否解决了问题。  您可能需要尝试不同的段、以查看 GAP 在何处与纯 RAM 实现方案。

    C2000Ware 中的大多数工程都具有 RAM 或闪存构建配置。  您可以通过查看这些文件来找到正在使用的 memcpy 函数、以及如何构建链接器文件以加载到闪存但从 RAM 运行。

    最棒的

    Matthew

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

    清川

    添加到 Matt 提到的上述详细信息中:

    1.您可能注意 到 InitSysCtrl()中的闪存初始化例程。  请确保在您的应用中未注释掉该内容。  该函数启用预取和数据高速缓存-考虑到闪存访问所涉及的额外等待状态、这有助于显著提高线性代码的性能。

    此外、请查看此常见问题解答帖子:  https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/878674 

    谢谢、此致、
    Vamsi