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.

[参考译文] TMS570LC4357:部分时间禁用闪存预取功能的 L2FMC#5

Guru**** 2601915 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/739417/tms570lc4357-l2fmc-5-with-the-flash-prefetch-disabled-part-of-the-time

器件型号:TMS570LC4357

我需要在启动时从 EEPROM 闪存区域中读取一些配置信息。 我还想让闪存预取单元保持启用状态、并且所有数据闪存地址空间在启动后映射为正常存储器。 您能否确认此操作序列是否受勘误 表 L2FMC#5的约束?

  1. 器件启动(默认情况下启用闪存预取)、从数据闪存运行代码
  2. 禁用闪存预取
  3. 在整个过程中继续执行数据闪存中的代码
  4. 从 EEPROM 闪存读取一些数据
  5. 重新启用闪存预取
  6. 继续以将数据闪存映射为正常存储器来启用 MPU

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

    您好 Brian、

    我建议使用勘误表中的权变措施。 LS4357 TRM 指出:

    '引导代码必须通过初始化 FRDCNTL 寄存器来初始化等待状态和所需的预取模式、以实现最佳系统性能。 这需要在切换到最终器件工作频率之前完成。"

    请参阅 SPNA106D 中的"Hercules 初始化序列"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、
    您没有回答我的问题、您引用的任何一个文档也没有回答。 我列出的操作序列是否满足触发本勘误表中提到的器件问题所需的所有条件?
    很明显、我希望避免满足勘误表的条件、而不是采用变通办法。 具体而言、我想知道是否满足第一个列出的条件("在闪存接口模块内启用预取缓冲器")和第三个条件("用于访问这些区域的指令的地址位21:5以及正在访问的位置的地址位21:5是匹配的") 在不同的时间段内、是否会受到此勘误表的约束。 换言之、如果我的代码将硬件配置为每次都具有勘误表的三个条件中的最多两个条件、是否存在不正确的行为?
    Brian Silverman
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Brian、

    触发 L2FMC#5的条件是:

    预取被启用并且存储器(ECC、OTP、EEPROM)为"正常"并且地址位25:5匹配

    如果其中只有一两个为真、则不会触发该问题。

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

    QJ、

    必须执行哪些操作来及时隔离这些条件、以确保所有三个条件在任何中间点都不会为真? 考虑到它涉及处理器的内存系统、似乎需要某种形式的内存障碍(以及其他因素)。 您能否列出始终避免触发问题的特定操作序列?

    谢谢、

    Brian

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

    您好 Brian、

    基于 TMS570LC4357勘误表、权变措施为:

    应用程序必须配置 CPU 的 MPU 以将闪存数据 ECC 存储器区域、闪存 OTP 存储器区域和数据闪存存储器区域配置为"器件"类型或"严格排序"类型存储器区域。

    使用"器件"类型或"严格排序"类型将始终避免触发问题。

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

    您好 Brian、

    原始帖子中的建议解决方法也可以避免 L2FMC#5描述的问题。 请注意您描述的顺序中的一些更改:

    1. 器件启动(默认情况下启用闪存预取)、从数据程序闪存运行代码
    2. 禁用闪存预取
    3. 继续执行整个过程中数据程序闪存中的代码
    4. 从 EEPROM 闪存读取一些数据
    5. 重新启用闪存预取
    6. 继续以将数据闪存映射为正常存储器来启用 MPU

    请注意、禁用闪存预取(缓存缺失时不再从闪存中预取高速缓存行)会带来很大的损失、因为它会影响到对闪存的所有访问、包括程序存储器。 对数据闪存组、ECC 位置和 OTP 存储器的访问不频繁、如果这些存储器位置被定义为"器件"类型或"严格排序"类型、则应用性能不会受到显著影响。

    此致、

    Sunil