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:在数据表中查找 ESM 错误的定义

Guru**** 2535710 points
Other Parts Discussed in Thread: RM57L843, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1223580/rm57l843-where-to-find-the-definition-of-esm-errors-in-data-sheet

器件型号:RM57L843
主题中讨论的其他器件: HALCOGEN

您好!

您能帮助您在某些数据表中找到以下 ESM 错误定义吗?

或说明如何设置 ESM 模块的 esmREG->IOFFHR/esmREG->IOFFLR 寄存器来选择通道? 谢谢。

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

    您好、Shenruming、

    我们已着手解决您的问题、并将很快提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    同上问题。

    我们只执行如下闪存 ECC 2位错误强制测试:

    1.使用测试类型"flash_ecc_test_mode_2bit"运行 API 函数

    RetVal = SL_SelfTest_Flash (FLASH_ECC_TEST_MODE_2bIT、true、&failInfoFlash);

    2.预计会出现以下 ESM 错误。 对吧?

    但是发生了如下所示的意外中断类型"ESM_G2ERR_CR5_BUSERR":

    4.通过 CCS 调试、我们发现寄存器 esmREG->IOFFHR 的值变为"36" 、并且 ERR 组2的通道在错误注入"flash_ecc_test_mode_2bit"后变为"36-1-32=3" 。

    问题是如何将寄存器"esmREG->IOFFHR"设置为"36"、以及如何将其设置为"54"、以使信道成为预期值"54-1-32=21"。 在故障注入测试期间肯定犯了错误。

    通过进一步调查,我们 发现了 将寄存器"esmREG->IOFFHR"设置为"36"的根本原因。

    如果我们标记以下代码、组2通道3的 ESM 中断将消失。

    我们渴望知道 如何将其设置为"54"、以使信道按照预期值设置为"54-1-32=21"。

    此外、SRAM/CCMR5F 故障注入也不能触发相应的 ESM 中断。

    现在、由于该问题、我们的测试任务已暂停。

    此处是 TI 提供的相关源代码、请帮助您尽快进行检查。 非常感谢。

    e2e.ti.com/.../5684.sl_5F00_selftest.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2. 预计会出现以下 ESM 错误。 对吗?

    SL_SelfTest_Flash (FLASH_ECC_TEST_MODE_2bIT、true、&failInfoFlash); -->  ESM 2.3将被设置。  

    SL_SelfTest_Flash (FLASH_ECC_TEST_MODE_1位、true、&failInfoFlash); -->  ESM 1.4将被置位。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    4. 通过使用 CCS 进行调试、我们发现寄存器 esmREG->IOFFHR 的值变为"36" [/报价]

    这是 ESM 2.3->21h + 3 = 36

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

    您好、QJ:

    1.为什么  FLASH_ECC_TEST_MODE_2BIT 触发 ESM2.3、而不触发 ESM2.21? 在另一个帖子中、Jagadish 已确认 FLASH_ECC_TEST_MODE_2BIT 将触发 ESM2.21。

    2.我们的测试,无论我们 为函数 sl_SelfTest_Flash 选择何种测试类型,它总是触发 ESM2.3(esmREG->IOFFHR 变成"36" )。

    这是因为我们在下面添加了代码。 如果我们将其标记为0、则也不会触发 ESM2.3。

    3.请按以下方式检查您的代码。 非常感谢!!

    e2e.ti.com/.../3386.sl_5F00_selftest.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们渴望知道 如何将信道设置为"54"以使信道为"54-1-32=21"作为预期值。

    ESM 1.54 --> 41h +54-32 = 41h+22 = 87

    如果  esmREG->IOFFHR = 54 = 36h --> 36h - 21h = 15h = 21 --> ESM 2.21

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

    我知道。 您没有提到如何将  esmREG->IOFFHR 设置为"54"。

    我仔细搜索了您的诊断库源代码和相关的 API 函数、sl_selftest.c 中 根本没有寄存器 esmREG->IOFFHR 相关操作。

    您是否测试了所有 API 并验证了它们 在 RM57L843器件上的可用性? 非常感谢。

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

    该寄存器为只读、我们无法 手动将此 esmREG->IOFFHR 设置为"54"。

    您是否测试了所有 API 并验证了它们 在 RM57L843器件上的可用性? [/报价]

    SDL 开发团队在 SDL 发布之前测试了所有 API。 但我没有测试所有的 API。

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

    谢谢 QJ、

    我知道如何获取中断功能的当前通道编号。 但我不知道在实现相应的故障注入后、如何使用在源代码中预定义的正确通道号触发 ESM 中断。 触发机制是什么?  

    在使用 TI 提供的 API 进行错误强制测试后、我们无法按预期触发相应的 ESM 中断。

    您能否帮助检查代码或提供用于故障注入的新实现? 非常感谢。

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

    ESM 由3组组成。 第3组误差始终生成 nERROR 引脚输出。 组2错误总是生成一个高优先级中断(VIM 通道0)、而组1错误具有一个可配置的中断响应(启用或禁用、低优先级或高优先级)。

    使用:ESMIESR1/4/7寄存器启用组1错误的中断、而中断优先级由 ESMILSR1/4/7寄存器控制。 您可以使用 HALCoGen 配置 ESM 中断:

    对于故障注入选项、ESM 中断被启用、所以在错误注入时生成中断:

    ESM 中断处理程序定义如下:

    但 SDL 不针对闪存1位 ECC 自检提供故障注入选项。 因此、要启用中断、请注释以下语句:

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

    您好、QJ:

    1.您能否确认我们是否需要将代码标记为以下代码来为 RM57进行故障注入?

    因为如果我们没有将其标记为0、 无论 参数是何种类型、或者即使参数为空、任何对 sl_SelfTest_Flash 的调用都将始终触发 ESS2.3故障。

    2.在标记完步骤1中提到的代码后,让 我们执行闪存 ECC 1位错误强制测试。

    根据你的建议、我将代码标记为如下、但是相应的 ESM 组1中断仍未发生。

    通过使用 CCS 进行调试、 已执行故障插入的密钥处理:

    3. 在对 步骤1和步骤2中提到的代码进行标记后,让我们执行闪存 ECC 2位错误强制测试。

    开始时、相应的 ESM 组2中断仍未发生。

    但是如果我们在检测到 nERROR 是激活的时继续标记"return"行、那么 ESM 组2中断被触发。

    如果 nError 处于活动状态,为何不继续执行检测代码中会触发 nError 的检测程序?

    通过使用 CCS 进行调试、我们发现通道编号仍然为"3"、这意味着故障类型为"ESM_G2ERR_CR5_BUSERR"。

    在我们执行"FLASH_ECC_TEST_MODE_2BIT"故障注入之后、您能否确认故障是否为"ESM_G2ERR_CR5_BUSERR"?

    ESM 组"ESM_G2ERR_EPC_Uncorr"的中断类型不是吗?

    为了节省时间、 请您一次性回答我的所有问题吗? 非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    1. 您能否确认我们是否需要将代码标记为以下代码以进行 RM57故障注入?

    对于 RM57Lx、闪存自检应该从 SRAM 中执行。

    sl_selftest_flash()函数中存在软件错误:

    原始代码为:

    权变措施:

    if (sl_epcREG1->CAMAVAILSTAT != regBkupCamAvail){

      无符号整型 计数器 = 0

      for (content = 0u;content<32u;content++){

         if ((volatile UINT32)(sl_epcREG1->CAM_content[content] & EPC_CAM_content_ADDR)==(* volatile UINT32 *)(flashBadECC1和                    EPC_CAM_content_ADDR){

           中断;

         }

         计数器++

    /*计算索引位置*/

    索引=  计数器 /4;

    索引=  计数器  -索引*4;

    计数器 =  计数器 /4;

    bf_set (sl_epcREG1->CAM_INDE[* counter*]、EPC_CAM_INDEX_CLEAR、EPC_CAM_INDEX_START (INDEX)、EPC_CAM_INDEX_LENGTH);

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

    2.在标记完步骤1中提到的代码后,让 我们执行闪存 ECC 1位错误强制测试。

    根据你的建议、我将代码标记为如下、但是相应的 ESM 组1中断仍未发生。

    [/报价]

    请确保设置 IntEnaSet1的位4:

    我只是运行测试、并获得 ESM 中断:

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

    3. 在对 步骤1和步骤2中提到的代码进行标记后,让我们执行闪存 ECC 2位错误强制测试。

    开始时、相应的 ESM 组2中断仍未发生。

    [/报价]

    我的测试显示中断已生成、且 nERROR 变为激活(ErrPinStat = 0x0):

    intOffstHigh = 0x24 --> ESM 2.3  -- Cortex-R5F 内核-所有致命的总线错误事件。 [通常是由于 闪存中的 ECC 值不正确或不完整引起的。]

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

    您好、QJ:

    必须强调两点。 必须在通过特定测试类型的正式故障注入之前解决这些问题。

    1.如果我们保持以下处理有效、那么 无论测试类型如何、运行 sl_SelfTest_Flash 将始终触发 ESS2.3故障、即使函数体为空也是如此。

    2. nERROR 每次在正式故障注入前都处于激活状态。 因此、如果我们不对其进行标记、我们将无法继续进行测试。

    为什么会这样呢? 它是在初始阶段激活吗?

    关于正式故障注入测试:

    标记上述两个位置后、我开始故障注入测试"FLASH_ECC_TEST_MODE_1位"。

    IntEnaSet1的位4在所有测试程序完成后才设置。

    2.如果"FLASH_ECC_TEST_MODE_2BIT"触发"ESM_G2ERR_CR5_BUSERR"(ESM2.3)、

    哪个故障注入将触发"ESM_G2ERR_EPC_Uncorr"(ESM2.21)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 如果我们保持以下处理有效、则 无论测试类型是什么、运行 sl_SelfTest_Flash 将始终触发 ESS2.3故障、即使函数主体为空也是如此。

    需要从 SRAM 而不是从闪存运行闪存自检。 此语句的目的是为 sl_Selftest_Flash ()函数分配内存空间。 请勿将此陈述注释掉。 谢谢

     

    2. nERROR 每次在正式故障注入前都处于激活状态。 因此、如果我们不对其进行标记、我们将无法继续进行测试。

    为什么会这样呢? 它是在初始阶段激活吗?

    [/报价]

    如果您从闪存运行闪存自检、则可能会触发 ESM 2.3、并将 nERROR 置为有效。 在运行闪存自检之前、请确保没有设置 ESM 错误标志、例如 ESM 2.3。

    如果有任何 ECC 错误、如 ESM2.3、请在执行自检之前修复该错误。

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

    2.如果"FLASH_ECC_TEST_MODE_2BIT"触发"ESM_G2ERR_CR5_BUSERR"(ESM2.3)、

    哪个故障注入将触发"ESM_G2ERR_EPC_Uncorr"(ESM2.21)?

    [/报价]

    FULT 注入(SRAM、闪存)不会生成 ESM 2.21错误。

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

    您好、QJ:

    1. QJ:在运行闪存自检之前、请确保没有设置 ESM 错误标志、例如 ESM 2.3。

    你是什么意思"自检"? 我只是执行错误强制测试"flash_ecc_test_mode_1bit/flash_ecc_test_mode_2bit"、没有"自检"。

    我已经通过在每次错误强制测试之前运行"esmTriggerErrorPinReset"来重置 nERROR 标志、并且不再激活 nERROR。

    2. QJ:FULT 注入(SRAM, FLASH)不会生成 ESM2.21错误。

    哪个故障注入将生成 ESM 2.21错误(EPC ECC 不可纠正的错误)? 在另一篇文章中、Jagadish 已确认"FLASH_ECC_TEST_MODE_2BIT"故障注入将触发"ESM_G2ERR_EPC_Uncorr"。

    3.在哪里查找并检查从以下配置生成的映射代码?

    因为"FLASH_ECC_TEST_MODE_1位"错误强制始终触发 ESM2.3中断、与"FLASH_ECC_TEST_MODE_2BIT"相同 。

    我想检查原始配置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是什么意思"自检"? [/报价]

    在调用 sl_Selftest_Flash (...)之前、请检查 ESM 寄存器。 状态寄存器1/4/7用于 ESM 组1。 状态寄存器2用于组2。  状态寄存器3用于组3。

    3. 在哪里可以找到并检查从以下配置生成的映射代码?

    它们在 esmInit()中启用

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

    您好、QJ:

    1.您漏掉了上面列出的第二个问题:

    由于"FLASH_ECC_TEST_MODE_2BIT"生成"ESM_G2ERR_CR5_BUSERR"、哪个故障注入将生成"ESM_G2ERR_EPC_Uncorr"?

    2. "flash_ecc_test_mode_1bit"错误强制执行可以正常地生成 ESM 组1中断"ESM_G1ERR_EPC_SERR"。

    在我将 esmREG->ILSR1设置为"1"后调用了函数"sl_esm_high_intr_handler"。

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

    1. "flash_ecc_test_mode_1bit"--> ESM 1.4已设置

    2. 应该设置"flash_ecc_test_mode_2bit"--> ESM 2.3。 但我没有设置该位。

    函数"sl_esm_high_intr_handler"是在我将 esmREG->ILSR1设置为"1"后调用的。

    这是预料之中的。