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:高速缓存 ECC 和 ESM 组3通道9

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/709285/tms570lc4357-cache-ecc-and-esm-group-3-channel-9

器件型号:TMS570LC4357

大家好、

为了能够正确管理系统中出现的不可纠正的 ECC 错误、我正在尝试了解 Cortex-R5F 中的高速缓存 ECC 如何工作、以及 TMS570LC 和 ESM。

在 Cortex-R5文档中、可以将高速缓存配置为"不生成中止、强制执行写操作、启用硬件恢复"(请参阅 Cortex-R5 TRM 的第8.5章)。

采用这种配置时、缓存中不可纠正的 ECC 错误是静默的、数据从 L2存储器中重新加载(实际上、这些不是不可纠正的错误...?)。 由于该区域在写通模式下运行、因此没有线路会变脏、因此缓存中的任何数据都不会丢失。

这对于使软件看不见数据缓存中不可纠正的 ECC 错误并提高系统可用性来说是完美的(注:在我们的系统中、ESM nERROR 引脚被路由到系统有效性逻辑。)。

但是、我看到在 ESM 中、当 Cortex-R5通过事件总线发出"数据高速缓存数据/标签/脏污 RAM 致命错误"信号时、会生成组3通道9、这将使 nERROR 引脚进入故障状态(在我们的系统中、这将使系统不可用)。

是否有人可以确认这一说法、或者向我解释如果高速缓存被配置为"不生成中止、强制执行直写、启用硬件恢复"、ESM 组3.9是否未被触发? 据我所知、无论中止的配置如何、Cortex-R5的事件总线都将向所有事件发出信号、但如果我错了、我希望专家纠正我的问题。

如果无论高速缓存中止配置如何、cortex-R5都将向事件发送信号、是否有办法防止它在事件总线上发出信号(如事件总线事件配置寄存器)?

我在寻找 Cortex R5和 TMS 的配置、以便使缓存 ECC 错误保持安静、但在将 nERROR 引脚连接到系统有效性逻辑的情况下、是否有一种可能?

谢谢。

盖尔

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

    启用 ECC 检查时、硬件恢复始终启用。 当检测到1位 ECC 错误时、校正后的数据将从 L2存储器系统中重新加载。 如果检测到不可纠正的错误、则始终会生成中止、因为数据可能已丢失。 预计这种情况对运行的软件进程可能是致命的。

    如果启用了强制写通设置之一(CEC=b010、或 B110)、则存储器表现为写通、并且缓存行永远不会变脏、因此错误始终可以恢复。

    如果禁用了中止、则不会向 SW 通知错误。 该事件仍会生成并导出到 ESM。

    如何生成2位未校正高速缓存 ECC 错误(事件值0x60/0x61)? 我想在我的工作台上进行测试。 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ。

    抱歉、我不清楚:因此您确认、即使中止已禁用、错误仍会转发到 ESM、这将标记组3的致命错误?

    我还没有生成致命的 ECC 错误、我的假设只是基于文档的理论假设。 迟早我会尝试测试高速缓存 ECC 功能(我还必须在我们的软件中嵌入一个测试)。

    就我在 Cortex-R5文档中所见、有一个 AXI 从器件访问高速缓存 RAM、可在 ACTLR (位24)中启用。 这样、我们就可以访问高速缓存数据 RAM、并在 ECC 禁用时注入新数据、从而生成1位错误和2位错误。 进行测试。

    次级辅助控制寄存器中还有 DR2B 位(如果注意 b 指示它仅可用于奇偶校验使能的内核、则为事件:该位的说明表示该位用于 ECC 校验使能的情况)。 这也会有所帮助、但在这种情况下、文档不会指示错误是注入到数据 RAM 中还是注入到标签中、还是注入到脏 RAM 中。

    如果您进行一些测试、我想知道我们可以或不能做什么以及您是如何做的。

    谢谢、

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

    是的、当 CPU 检测到 ECC 错误(1位或2位)时、它会在专用的"事件"总线上发出该错误信号。 通过设置 PMCR 寄存器(ARM)的"X"位来启用这个"事件"总线。 输出到事件总线上的 ECC 错误事件首先由 EPC 模块捕获、然后生成发送到 ESM 模块的错误信号。 即使中止被禁用(ACRLR 寄存器的 CEC)、ECC 错误事件也会被转发到 ESM。

    我将在接下来的几周内进行测试。