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.

[参考译文] TMS570LS1224:FEE ECC 自检触发 ESM 通知

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1368543/tms570ls1224-fee-ecc-selftest-triggering-esm-notification

器件型号:TMS570LS1224

工具与软件:

您好 Jagasish、

我需要回到这个主题。 我使用 TMS570LS1224的 EEPROM 扇区作为 EEPROM 仿真、现在使用我自己的 Wear leveinig 算法已经有很多年了、到目前为止它都能正常工作。 现在、我要 EEC 功能、以在 FEE 损坏时获得 ESM 异常。

因此、我使用 Fapi_Auto EccGeneration 模式和8字节的多字节来向费编写 wehn。

Fapi_issueProgrammingCommand ((uint32_t*) u32_Addr、&(u8_Buffer[0])、u8_idx、NULL、0、 Fapi_Auto E.ccGeneration)

我按如下方式配置了 ESM:

我已尝试启用 ECC 错误检测功能

   Fapi_Fmc 4.0类型* p_FmcRegisters = F021_CPU0_BASE_ADDRESS;

   P_FmcRegisters->EeCtrl2.EE_CTRL2_BITS.EE_SEC_THRESHOLD = 1;

   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_EDACMODE = 0x05;   //仅检测模式
   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_EOFEN   = 1;      //将在其上生成 ESM 组1通道35事件
                                                //当一读取为0并被校正时出现一位错误
   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_EZFEN    = 1;      //将在其上生成 ESM 组1通道35事件
                                                               //当零读取为1时出现一位错误并被纠正
   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_PEN    = 1;      //已启用错误分析。
                                                //在编号时将生成 ESM 组1通道35事件
                                                //已检测到和已校正的可纠正位错误
                                                // EE_CTRL2寄存器中定义的阈值。
   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_All1_OK = 1;      //读取已擦除位置(64个数据位及其相应的值)
                                                // 8个 ECC 位都为1)将不会生成 ECC 错误。
                                                //分析的错误计数器不会递增 if
                                                //检测到所有数字。
   P_FmcRegisters->EeCtrl1.EE_CTRL1_BITS.EE_EDACEN  = 0x0a;   //已启用错误检测和校正

并尝试在 Hercules Safety_Lib 的帮助下触发 ESM 异常:

   sl_Sel4.12.7Fe_stResult Test_Result;
   bool b_result = false;

   B_Result = SL_SelfTest_FEE (FEE_ECC_TEST_MODE_1bit_FAULT_INJECT、FALSE、&FEE_stResult);
   B_Result = SL_SelfTest_FEE (FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT、FALSE、&FEE_stResult);

sl_SelfTest_FEE()的调用返回 true、但是 FEE_stResult 为 ST_FAIL、并且我没有得到 ESM 异常。

我该怎么做?

此致
Jens

 

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

    Jens、您好!

    我开始处理您的问题、并将尽快为您提供我的更新。

    ——
    谢谢、此致、
    Jagadish。

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

    Jens、您好!

    我没有 LS1224板、因此我在 RM46板上创建了一个与您类似的测试项目、我的发现如下:

    但是 fee _stResult 是 ST_FAIL 并且我没有得到 ESM 异常。

    您对此是对的、原因是这样  

    在诊断代码中、仅在测试类型为 FEE_ECC_TEST_MODE_2BIT 或 FEE_ECC_TEST_MODE_1BIT 的情况下、才会验证错误标志并将 FEE_stResult 设置为 ST_PASS

    但是、对于 FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT 或 FEE_ECC_TEST_MODE_1bit_FAULT_INJECT、它们直接进入 ELSE 语句、并将 FEE_stResult 设置  为 ST_FAIL。 我不知道他们为什么这样做。

    除了此状态、我在 FEE_ECC_TEST_MODE_1bit_FAULT_INJUST 和 FEE_ECC_TEST_MODE_2BIT_FAULT_INJUST  测试方面的观察结果是

    FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT 测试正常运行、没有任何问题、我的意思是我在上面也获得了此测试的中断。 我随附代码供您参考、请核实。

    我怀疑您的问题不能正常工作的原因是您可能没有致电下面突出显示的行。

    还请记住、ESM 是 FIQ 中断、而不是 IRQ、因此、为了启用该 FIQ 中断 、我们应调用_enable_interrupt_函数、如果我们调用 _enable_IRQ、则只会启用 IRQ 中断、而不会启用 FIQ。 请确保这一点。

    我还发现  FEE_ECC_TEST_MODE_1bit_FAULT_INJUST 无法正常工作、我的意思是我将无法获得任何中断、并且 ESM1.35标志也无法设置。 但我的观察结果是、它正确纠正了单一位、但未设置状态。 我正在验证这一点、并将尝试提供有关这方面的进一步更新。

    同时你可以参考我的代码:

    e2e.ti.com/.../FEE_5F00_ECC_5F00_Errors_5F00_TEST_5F00_RM46_5F00_New.zip

    ——
    谢谢、此致、
    Jagadish。

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

    您好 Jagadish、

    非常感谢您的快速响应。 我现在还收到了针对 FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT 的中断。  

    等待您关于 FEE_ECC_TEST_MODE_1bit_FAULT_INJECT 的信息。

    此致、
    Jens

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

    Jens、您好!

    非常感谢您的快速回复。 我现在还收到了针对 FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT 的中断。  [报价]

    很高兴听到这个消息。

    等待有关 FEE_ECC_TEST_MODE_1bit_FAULT_INJUST 的信息。

    我将检查它。

    ——
    谢谢、此致、
    Jagadish。

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

    Jens、您好!

    等待有关 FEE_ECC_TEST_MODE_1bit_FAULT_INJUST 的信息。

    我今天已经调试了这个问题。

    但我在代码中找不到任何问题、我的操作与  FEE_ECC_TEST_MODE_2BIT_FAULT_INJECT 完全相同、但不明白它为什么不触发中断。 我 确保了在 VIM 中的 FIQ 中断被启用、并且我还确保了在 ESM 模块中启用了单一位中断。 但仍然没有触发中断。

    我怀疑这可能是控制器内的硬件问题。

    我要做的就是在其他电路板中进行测试、以验证是否触发了该中断。

    ——
    谢谢、此致、
    Jagadish。

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

    您好 Jagadish、

    有任何关于本期的新闻吗?

    此致、
    Jens

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

    Jens、您好!

    很抱歉,在我的回答后,我没有机会再处理它。

    我将在本周重试、并在本周结束时向您提供最新信息。

    ——
    谢谢、此致、
    Jagadish。

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

    Jens、您好!

    我了解了问题的根本原因。

    如果您参考下面突出显示的陈述:

    要触发 single-bit 闪存错误的 ESM 错误、我们应该需要设置配置文件。 如果我们没有设置配置文件、那么就不会有任何针对 single-bit 闪存错误的 ESM 错误。

    我对代码进行了以下修改:

    对于 single-bit 错误情况、我只启用错误描述、还会将 single-bit 错误阈值设置为1 (这 意味着即使是一个 single-bit 错误也需要触发 ESM 模块)。

    在进行此修改后、此处是针对 single-bit 错误的诊断运行的结果。

    您可以看到 ESM 1.35标志已设置、这只不过是闪存组7中的可纠正错误。

    我随附经修改的代码供您参考:

    e2e.ti.com/.../5756.FEE_5F00_ECC_5F00_Errors_5F00_TEST_5F00_RM46_5F00_New.zip

    ——
    谢谢、此致、
    Jagadish。

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

    你好 jagadish、

    非常感谢。 我现在收到了关于单人和双人自检的通知。 那么、我能否确定我是否会收到包含真实 FEE ECC 错误的这些通知?

    此致
    Jens

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

    Jens、您好!

    非常感谢。 我现在收到了关于单人和双人自检的通知。 那么、我能否确定我将收到包含实际费用 ECC 错误的这些通知?

    您需要确保还有另外一件事:

    您需要确保启用"EEPROM 仿真错误检测和校正使能(EE_EDACEN)"。

    您可以看到、默认值为0x5、表示禁用、但应启用该值来触发 FEE ECC 错误。 这不是 FEE 诊断所必需的、但是它被启用来检测实际 FEE ECC 错误。

     ——
    谢谢、此致、
    Jagadish。