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**** 2589245 points
Other Parts Discussed in Thread: C2000WARE, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/741047/compiler-tms320f28379d-basic-question-about-flash-memory-usage

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

工具/软件:TI C/C++编译器

1) 1)程序数据和代码看起来可以直接从闪存中运行、即像 RAM 一样处理。  对吧?

2) 2)当程序数据和代码 通过链接器命令文件指定从闪存中运行时、是否会自动存储为非易失性存储器?

3) 3)从文献中可以看到、闪存的速度与易失性存储器差不多、但运行效率较低。  对吧?

好的、

Graham

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

    格雷厄姆

    您的问题有点令人困惑。  我试图根据我的理解回答。  如果您需要进一步澄清、请告诉我。   

    1) 1)您是否询问是否可以从闪存执行代码?  如果是、您可以从闪存执行代码。  确保您从 RAM 正确初始化闪存。  请检查 C2000Ware 中提供的闪存初始化例程。  它配置闪存组/泵功率模式、闪存等待状态、闪存 ECC 等

    2) 2)将代码/数据映射到链接器命令文件中的闪存并进行编译后、需要使用 TI 的 CCS 闪存插件、UniFlash 或其他第三方闪存工具将代码加载到闪存。  

    3) 3)闪存不如易失性存储器快。  这就是引入等待状态的原因。

    谢谢、此致、
    Vamsi

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

    谢谢 Vamsi、

    1) 1)初始化闪存的例程是否为 F2837xD_GlobalPrototyps.h 中提供的 InitFlash()函数?

    2) 2)是否有有关设置 CCS 闪存插件的操作方法或示例?

    3) 3)是否有理由更喜欢 CCS 闪存插件或 Uniflash?

    4) 4)代码/数据实际上可以直接从闪存运行、还是需要加载到易失性 RAM 中才能执行?  这方面的文件令人困惑。   

    好的、

    Graham  

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

    1) 1)是的。

    2) 2)出于所有正常目的、您应该能够像加载基于 RAM 的工程那样简单地加载可执行文件。
    这意味着、CCS Debug -> Run menu -> Load -> Load Program。
    如果可执行文件中的段映射到闪存、CCS 加载程序将自动调用 CCS 闪存插件。
    但是、请注意、当您使用基于闪存链接器的工程时、您的可执行文件应该将所有已初始化的段映射到闪存。 如果有任何已初始化的段映射到 RAM、它们可能不会被加载。

    您可以在 CCS Debug View -> Tools menu -> On-Chip Flash 中查看 CCS 片上闪存插件。

    3) 3) UniFlash 是独立的闪存编程解决方案、不包含 CCS 等开发/调试环境。

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

    看起来您在回答后编辑并添加了另一个问题。

    4. 这取决于代码的功能和性能要求。
    示例:
    (i)闪存初始化代码和闪存 API 库函数应始终复制到 RAM 并从该器件中的 RAM 执行。
    (ii)如果您的应用需要0等待状态性能的任何时间敏感 ISR、您可以从 RAM 复制/执行。

    谢谢、此致、
    Vamsi