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.

[参考译文] TMS320F2800132:ECC RAM 测试

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1381005/tms320f2800132-ecc-ram-test

器件型号:TMS320F2800132
Thread 中讨论的其他器件:C2000WARE

工具与软件:

尊敬的支持团队:

我尝试在项目中添加 ECC RAM 测试。

我从下面的例子开始:

C20004.12.1SDK_5_02_00_00\c2000ware\libraries\diagnostic\f280013x\examples\sdl_ex_flash_ecc_test Ware_Motor

但我面临一些问题/有一些问题。

在函数 runCorrectableECCTest 中:

      //
        // Put the M0RAM into test mode so we can write to the data without
        // updating the ECC, flip a bit, and put the RAM back into the normal
        // functional mode.
        //
        testRAMLogic(MEMCFG_SECT_M0, MEMCFG_TEST_WRITE_DATA,
                     (uint32_t)&m0Data, (RAM_DATA_SINGLE_BIT << index));

此函数的工作方式为错误 ISR (可纠正错误)、但:

   //
        // Put the M0RAM into test mode so we can write to the ECC bits
        // directly, flip multiple bits, and put the RAM back into the
        // normal functional mode.
        //
        testRAMLogic(MEMCFG_SECT_M0, MEMCFG_TEST_WRITE_ECC,
                     (uint32_t)&m0Data, (RAM_ECC_SINGLE_BIT << index));

这个没有触发错误 ISR、但 NMIISR、因此我有点困惑。

注释为"翻转多个位"、因此如果正确、则不可纠正、并且正常触发 NMI、但对我而言、代码仅翻转 single-bit。

请告诉我错误在哪里? 在这个例子中?

此致。

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

    您好!

    我进行了密集测试、并修改示例代码、以同时处理 LS0和 M1。

     我遇到的第一个问题是:

    使用 testRAMLogic (MEMCFG_SECT_M0、MEMCFG_TEST_WRITE_ECC、 (uint32_t)&m0Data、(RAM_ECC_SINGLE_BIT << INDEX)) trigs NMIISR 而不是 errorISR 测试 single-bit ECC。

    对于低16位或高16位数据的 ECC 都是如此。

    您能解释原因吗?

    第二个问题是:

    M0和 M1在测试上的反应不同:

            testRAMLogic(ramSection, MEMCFG_TEST_WRITE_ECC,
                         (uint32_t)ptradress, (RAM_ECC_SINGLE_BIT << index));

    和:

            testRAMLogic(ramSection, MEMCFG_TEST_WRITE_ECC,
                         (uint32_t)ptradress, (RAM_ECC_MULTI_BIT << index));

    对于 M1 、预期地址和返回地址之间存在差异(需要将1添加到预期地址、因为它是在原始示例中)、但对于 M0不是这样。

    您能解释一下为什么会有差异吗? 它是否与链接器选择的地址相关(对齐问题)?

    此致。

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

    制造商:

    您是否有可以用来重现此问题的示例项目?

    Vivek Singh

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

    您好!

    我认为最简单的方法是从以下示例开始:

    C20004.12.1SDK_5_02_00_00\c2000ware\libraries\diagnostic\f280013x\examples\sdl_ex_flash_ecc_test Ware_Motor

    此致。

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

    粗略这不是正确的示例、正确的示例是:

    C2000 C20004.12.1SDK_5_02_00_00\c2000ware\libraries\diagnostic\f280013x\examples\sdl_ex_ram_ecc_parity_test Ware_Motor

    此致。

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

    再增加一些输入、

    根据示例、使用 M1按照预期触发错误 ISR 并添加1到地址=>完全正常。

    使用 M0触发多个 NMI 而不是错误 ISR 进行测试、但听起来这是一个不同的错误、可能会解释 TAT 不需要向地址添加1。 因此,事实上这两个问题都是相关的,我怀疑这是有关的数据位置..

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

    我想我发现了问题的根源、问题是当测试在与.stack...相同的位置执行时

    我将尝试按照讨论的最后一篇文章中的建议重写一些代码:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1360578/tms320f2800157-ram-ecc-test

    如果您有其他建议、请执行此操作。

    此致。

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

    我能够通过 为堆栈所在的 M0 RAM 编写一个特定的 testRAMLogic 函数来解决我的问题。

    我删除了对其他函数的调用、仅复制代码并进行了一些简化、因为我将仅将这一个用于 M0。

    现在一切都好!

    此致。