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.

[参考译文] TMS320C6678:测试 EDC/ECC 机制

Guru**** 2559190 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/619366/tms320c6678-test-edc-ecc-mechanism

器件型号:TMS320C6678

您好!

我正在开发一个软件序列、目标是测试 DSP TMS302C6678的 EDC/ECC 机制。

顺序如下:

  1. 在 DDR3中启用 EDC (在 L1P、L2和 MSM 中)和 ECC

  2. L2、MSM 和 DDR3的初始化为0

  3. 存储器保护、中断的初始化

  4. 运行 EDC/ECC 测试

L2 EDC 测试包括:

5-1/写入任意 L2地址(本例中为0x00868000)值0xFFFFFFFF

N.B:0x00868000是一个任意地址。 唯一的条件是选择一个允许 R/W/X 的地址。

5-2/通过将 L2EDCMD 寄存器的位3设置为1来挂起 L2 EDC 计算(以暂停 EDC 计算)

5-3/在地址0x00868000处写入0xFFFFFFF3。

N.B:选择0xFFFFFFF3的值是因为只有两个位与之前的0xFFFFFFFF 值不同

N.B.2:此步骤的目标是模拟地址0x00868000处位2和位3的损坏。 由于 EDC 机制被暂停、奇偶校验 RAM 不会被更新

5-4/通过将 L2EDCMD 寄存器的位0设置为1来启用 L2 EDC 机制

5-5/在地址0x00868000处执行读取访问

5-6/等待 L2 EDC 中断

但是、该序列不起作用(永远不会调用对应于 corepac 事件117的 L2 EDC 中断)。

我怀疑在步骤5-1期间完成的 L2写入不会在128位中执行。 我知道我的指令是32位写操作、但我初想 DSM 存储器控制器将始终以128位执行访问。 看来情况并非如此。 如果已确认、则相应的奇偶校验 RAM 不会按预期更新(因为访问小于128位、如 C66x corepac 数据表的§11中所述)、仅更新位有效性。

因此、我已经尝试在上一个序列中替换步骤5-1、方法如下:

               5-1-bis/Program IDMA、通过如下方式设置 IDMA 寄存器、在[0x00868000-0x00868010]范围内写入值0xFFFFFFFF:

  1. IDMA1_SOURCE 设置为0xFFFFFFFF

  2. IDMA1_目的 设置为0x00868000

  3. IDMA1_COUNT 设置为0x00010010

仅通过此修改、我的测试就会正常(即生成了 corepac 事件117)。

这似乎证实了我对存储器访问的分析在128位内没有完成。

我执行了第三项测试、如下所示:

5-1-ter/在4条汇编指令中在地址0x00868000、0x00868004、0x00868008和0x0086800C 处写入0xFFFFFFFF

结果:测试为 KO、未生成事件117。 这似乎确认了每个 DSP 访问都是在32位中完成的。

因此、我的测试工作正常(使用 IDMA)、但我有以下问题:

Q1-如果 DSP R/W 指令在32位内完成、则奇偶校验 RAM 将永远不会更新、并且只有位有效性将被设置为无效。 您能否解释一下在这种情况下如何检测/纠正 L2存储器损坏?

问题2 - C66x corepac 数据表的§11.3.3中介绍了一种清理技术。 是否是检测 L2数据损坏的唯一方法?

问题3 -您能解释一下、如果有办法强制 DSP 内核的每个 R/W 访问在128位内完成吗? 如果已经是这种情况、您能向我解释一下我在测试序列中做了哪些错误?

Q4-我正在尝试在 MSM 内存中执行相同类型的测试,但它似乎很复杂,因为 SPRUGW7A 的§2.5.2.1“Setting ECM=1启用错误校正; 但是,对 ECM 位的任何进一步写入都将被忽略(也就是说,一旦启用,错误校正将保持启用状态,直到 MSMC 复位)。” 由于 ECC 机制无法停用,因此无法使用我的技术测试 MSM EDC 机制,因为我无法“模拟”MSM 数据损坏。 我是对的、还是有其他测试方法?

 

问题5 - DDR3的同一个问题、是否可以测试 DDR3 ECC 机制(使用下面描述的测试序列或通过其他方式)?

 

提前感谢您的回答。

 

此致、

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

    我已将其转发给软件团队。 他们的反馈应发布在此处。

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

    好的、我正在等待软件团队的回答。

    请问他们可以尽快回答我的问题吗?

    这对我来说非常紧迫。

    如有需要,我可以向你提供其他资料。

    此致

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

    很抱歉、我错过了这个主题。

    L2中的 EDC (错误检测和校正):EDC 功能旨在保护 SRAM 免受随机、瞬态存储单元错误的影响、这些错误通常由高能粒子(宇宙粒子、辐射等)引起。 L2 EDC 保护的粒度为128位、执行1位校正和2位检测。 它通过生成和检查一个名为"综合征"的特征来实现这一目的。 在某些规范中,该综合征可能被称为‘奇偶校验’信息。 当128位数据存储在 L2中并与数据一起写入 SRAM 时、会生成该故障。 读取时、数据会生成综合征、并与存储的综合征进行比较。 任何不正确的比较都表明存在错误。

    复位时、EDC 被禁用。 处于该状态。 从复位开始、L2控制器不会初始化 L2SRAM–这意味着在复位后、L2SRAM 的内容未知(相对于所有零)。 因此、L2SRAM 中可能存在数据、其中实际数据和故障(奇偶校验签名)不同步、 如果 CPU 此次读取该 SRAM 的内容、L2控制器将检测到(随机)数据和(随机)故障不一致、并采用2位 EDC 异常。

    IDMA 清理是为 L2SRAM 数据重新生成新的综合征信息的机制。 这就是其完成方式(SPRUGW0B 中的第11.3.2-3节)。

    DSP R/W 指令在32位而不是128位中完成。 您需要清理要保护的存储器范围、以检测/更正 L2错误。

    此致、Eric