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:器件#49勘误表/错误互连安全检查器错误标志-验证权变措施

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/718554/tms570lc4357-device-49-errata-false-interconnect-safety-checker-error-flag---verifying-workaround

器件型号:TMS570LC4357

您好!

我不清楚器件#49的条件(我可能稍后会问这些...)。 为了避免我遇到这个问题、我想验证 MPU 设置是否足以防止这个问题的发生。 以下是我的(可能有问题)验证计划:

1) 1)在我的系统上禁用 MPU。

2) 2)执行非推测数据取指令、故意使 ESM 组1通道52发出信号。

3) 3)将获取修改为仅推测发生、验证我遇到器件#49 (ESM 组1通道52已发出信号)。

4)在我的系统上重新启用 MPU、然后重复(3)、验证我没有遇到 器件#49 (ESM 组1通道52未发出信号)。

这是我当前的问题--我对无效内存空间的取指令(只在这里执行 CPU 加载指令)似乎都不会引起 ESM 组1通道52的信号。 中止处理程序似乎总是被调用、我看不到预期的 ESM 位被置位。 下面是我的问题:

1) 1)我如何故意使 ESM 组1通道52发出信号? 和:

2) 2)是否有任何示例代码可用于演示 器件#49错误和/或权变措施?

感谢您的支持。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果更简单、可能可以更精确地定义错误条件。

    "(1) MEMORY 属性配置为正常。
    (2)有效存储器范围之外存在推测取指令。"

    是否可以更精确地将其定义为"如果 MPU 区域配置为正常访问、并且该区域的某些部分超出有效存储器范围、然后对有效存储器范围之外的部分进行推测取指令..."? 此外、您能否澄清"有效存储器范围"到底意味着什么?

    "(3)多总线主控被配置为使用。"

    CPU 始终是总线主控、但另一个总线主控是否需要为 DMA 才能使该条件保持为真? EMAC 呢?

    此外、产生误差是否需要 CPU 和其他总线主控之间同时进行访问/计时、或者无论存储器访问时序如何、我们是否总是会看到它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    让我解释一下这个问题、然后在必要时可能会更新文档中的描述。

    4GB 地址空间中存在许多空白、任何访问都会导致对总线主控的错误响应、从而设置访问和 ESM 错误标志。

    CPU 还为分支发出推测取指令以尝试和加快应用程序代码执行。 允许从定义为"正常"类型且允许执行代码的任何存储器区域进行推测取指令(从未执行-对于该区域、MPU 中的 XN 位未置位)。 TMS570架构的一个重要约束和特性是、如果实际未使用推测取指令(错误分支预测)、这些推测取指令一定不能导致异常。

    此勘误表器件#49中描述的问题是、对"正常"类型的无效存储器区域的推测访问仍会导致设置异常标志。

    权变措施是使用 MPU 来明确定义允许执行代码的存储器区域(包括推测取指令)。

    希望这对您有所帮助。

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

    -推测取指令只会发生在存储器类型为"正常"且 XN = 0的 MPU 区域。
    -如果我确保所有这些定义的区域只包含有效的内存空间(不包含可能触发中止或 ESM 错误的间隙),那么我可以避免器件#49。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、没错。

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

    您好、Sunil、

    一个相关问题。 芯片上电默认为在未定义 MPU 区的情况下禁用 MMU。 在此状态下、是否可能 遇到器件#49? 基本上、我想知道我是否需要在引导过程的早期(在初始化其他总线主控之前?)小心打开 MPU。

    再次感谢。

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

    当 MPU 未启用时、仍有一个适用的默认存储器映射。 Cortex R5 TRM 版本 r1p2的第191页对此进行了定义。 如您所见、有几个区域属于"正常"类型、并且允许在其中执行代码。

    此致、
    Sunil