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.

[参考译文] RM57L843:L2RAM 冗余地址解码测试

Guru**** 2466670 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/668689/rm57l843-l2ram-redundant-address-decoding-test

器件型号:RM57L843

您好!

我正在尝试实施 L2RAM 冗余地址解码测试、并且遇到测试失败的问题(RAMERRSTATUS 读取0x14表示 Adde 和 ADE 错误)。

是否有此测试的示例? 相关文档不清楚、安全库仅检查 Adde / ADE 错误是否未设置、但我无法让它们指示错误。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在寻求有关如何注入 Adde 和 ADE 错误的建议。

    谢谢!
    未设置 ADDE 和 ADE 的代码检查:

    空 checkSRAMRAD (空)

    /*清除先前的任何诊断错误状态位[22、21、20、19、12、11、10、4]-触发前需要*/
    l2ramwREG->RAMERRSTATUS = 0x781C10U;

    /**从平等测试计划开始**/
    l2ramwREG->DIAG_ECC =(uint32_t) 0xCU;//为零设置正确的 ECC 值(以避免 ECC 错误)*/
    l2ramwREG->RAMADDRDECVECT =(uint32_t) 0x400FFFFU;//为零设置正确的 ECC 值(以避免 ECC 错误)*/

    /*平等检查测试*/
    l2ramwREG->ramtest =(uint32_t) 0x0000008AU;/* 1->Trigger、8->eq.、测试模式、A->Test enable */

    /*开始测试*/
    l2ramwREG->ramtest =(uint32_t) 0x00000100U;

    /*等待测试完成*/
    while (((l2ramwREG->ramtest & 0x00000100U)== 0x00000100U){}/*等待*/

    /*检查是否已设置诊断错误状态位*/
    if (((l2ramwREG->RAMERRSTATUS & 0x14U)== 0x14U)/*检查 ADDE 和 ADE 错误是否被置位*/

    /*测试失败*/
    /*清除错误状态*/
    l2ramwREG->RAMERRSTATUS |= 0x14U;/*清除 Adde 和 ADE 错误*/
    while (1){}

    其他

    /*清除先前的任何诊断错误状态位[22、21、20、19、12、11、10、4]-触发前需要*/
    l2ramwREG->RAMERRSTATUS = 0x781C10U;

    /*然后在比较中进行不等式检查*/
    l2ramwREG->DIAG_ECC =(uint32_t) 0xCU;//为零设置正确的 ECC 值(以避免 ECC 错误)*/
    l2ramwREG->ramtest =(uint32_t) 0x0000004AU;/* 1->Trigger、4->InEq、测试模式、A->Test enable */

    /*开始测试*/
    l2ramwREG->ramtest =(uint32_t) 0x00000100U;

    /*等待测试完成*/
    while (((l2ramwREG->ramtest & 0x00000100U)== 0x00000100U){}/*等待*/

    /*检查是否已设置诊断错误状态位*/
    if (((l2ramwREG->RAMERRSTATUS & 0x14U)== 0x14U)/*检查 ADDE 和 ADE 错误是否被置位*/

    /*测试失败*/
    /*清除错误状态*/
    l2ramwREG->RAMERRSTATUS |= 0x14U;/*清除 Adde 和 ADE 错误*/
    while (1){}



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

    在执行不等性测试的代码的后半部分、您正在测试两个设置的标志的状态、TRM 指出、在不等性测试中、预计会设置 ADDR_COMP_LOGIC_FAIL 标志、并且不设置 ADDR_DEC_FAIL 标志。 这将指示地址比较逻辑发生故障、 但是、您不会检查仅 ADDR_COMP_LOGIC_FAIL 位自身设置的条件、这是通过状态、因此如果存在条件 ADDR_COMP_LOGIC_FAIL = 0和 ADDR_DEC_FAIL = 1、则可能会发生意外情况、我也会推测出故障情况。

    总之、您正在将故障注入比较逻辑、预期结果不是 ADDE 和 ADE 标志都被设置。 这一事实表明逻辑已识别故障并按预期工作。 据我所知、在没有真正的硬件故障的情况下、无法使比较逻辑本身发生故障并生成此测试的故障条件。 即、地址比较自检正在测试逻辑的正负条件以确定其是否适合使用。 任何进一步的操作都是对诊断本身的测试、而不是主要故障机制的测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!