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.

[参考译文] AM625:如何处理 M4内核上 SRAM 的 ECC SEC 和 DED 错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1481115/am625-how-to-handle-ecc-sec-and-ded-errors-for-sram-on-m4-core

Thread 中讨论的其他器件:AM625SK-AM62-LP

工具/软件:

您好、  

我想知道如何为 AM625芯片 M4内核上的 SRAM 正确处理 ECC SEC 和 DED。 您能否提供一些示例来展示如何处理 SEC 和 DED 错误:
1.如果发生 SEC、用户函数处理程序可以决定是否更正错误的位;

2、如果发生 DED、则用户函数处理程序可以执行一些其他操作、例如复位系统。

我在 MCU+ SDK AM62x 中找到了示例"ecc_app_am62x-sk_m4fss0-0_nortos_ti-arm-clang"、但不知道:

1.如何仅控制 SRAM 执行 ECC ?

2.如何控制 SEC 发生后的行为,以决定是否更正该位?

3.如何为 DED 执行自定义操作

这是 在基于 SK-AM62-LP HS-CLANG FS 的定制板上运行的示例"ecc_app_am62x-sk_m4fss0-0_nortos_ti-arm-clang"的控制台输出、 但我无法看到任何错误回调函数输出:

[BLAZAR_Cortex_M4F_0] 
ECC Example Application

ECC_Example_init: Init MAIN ESM complete 

ECC_Example_init: Init WKUP ESM complete 


SDTF_init: AGGR0 ECC Init complete 

ESM Safety Example tests: starting

AGGR0 Double bit error inject Example test UC-1: starting

AGGR0 Double bit error inject test: Subtype 0x00000001 test complete

Waiting for ESM Interrupt

UC-1: Got Low priority ESM Interrupt 

AGGR0 Single bit error inject Example test UC-2: starting

AGGR0 Single bit error inject test: Subtype 0x00000002 test complete

Waiting for ESM Interrupt

UC-2: Got High priority ESM Interrupt

AGGR0 Memory Parity inject Example test UC-3: starting

AGGR0 Single bit error self test: Subtype 0x00000001 test complete

Waiting for ESM Interrupt

UC-3: Memory Parity Error Test Complete 

ECC Safety Example tests: success

ECC UC-1 and UC-2 Test

All Use_Cases have passed.

谢谢!

BR、

徐子建。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    这是 在 FS 基于 SK-AM62-LP HS-CLANG 的定制电路板上运行的示例"ecc_app_am62x-sk_m4fss0-0_nortos_ti-arm-clang"的控制台输出、 但我看不到任何错误回调函数输出:

    我‘ve 的原因是在中断回调内执行输出、实际上已在调试期间通过在中断内部设置断点来调用和测试了回调。

    但是、当我更改为 将 SDL_MCU_M4FSS0_BLAZAR_ECC 测试为 eccMemType、且 SDL_MCU_M4FSS0_BLAZAR_ECC_BLAZAR_ECC_BLAZAR_IIRAM_ECC_RAM_ID 和 SDL_MCU_M4FSS0_BLAZAR_ECC_BLAZAR_BLAZAR_IDRAM_ECC_RAM_ID 均 未被调用为 SubType、但似乎没有调用回调函数为 b、但似乎仅为回调函数。

    对于 ESM 配置位图、我的设置是:

    static SDL_ESM_config ECC_Test_esmInitConfig_WKUP =
    {
        .esmErrorConfig = {0u, 3u}, /* Self test error config */
        .enableBitmap = {0x00000030u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                     0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                    },
        .priorityBitmap = {0x00000030u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                            },
        .errorpinBitmap = {0x00000030u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                           0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u,
                          },
    };

    对于0x00000300、我的原因是  SDL_MCU_M4FSS0_BLAZAR_ECC_BLAZAR_IIRAM_ECC_RAM_ID 和 SDL_MCU_M4FSS0_BLAZAR_ECC_BLAZAR_IDRAM_ECC_RAM_ID 、它们位于第一组、ID 为4和5、因此应为0x00000300。

    我的测试 EVM 模型是 SK-AM62-LP HS-EVM FS

    希望有人能帮助我解决这个问题。 谢谢。

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

    我想使用 IRAM 和 DRAM 测试上传我修改后的 ECC 示例程序、但 文件上传功能在此编辑器中不起作用:

    /multipleupload?UploadContext=8795dab9-78fc-455c-8605-d066d3a90d2d:1 : Failed to load resource: the server responded with a status of 500 (Internal Server Error)

    (好的、我发现这是由于文件扩展名非法、不允许.tar.xz、但允许.zip、希望 会有任何用户友好的通知让用户知道这一点。)

    e2e.ti.com/.../ecc.zip

     对于我的测试程序、 控制台输出为:

    [BLAZAR_Cortex_M4F_0] 
    ECC Example Application
    
    ECC_Example_init: Init MAIN ESM complete 
    
    ECC_Example_init: Init WKUP ESM complete 
    
    
    SDTF_init: AGGR0 ECC Init complete 
    
    ESM Safety Example tests: starting
    
    AGGR0 Double bit error inject Example test UC-1: starting
    
    AGGR0 Double bit error inject test: Subtype 1: test failed
    
    ESM_ECC_Example_run: UC-1 has failed...
    
    ECC Safety Example tests: failed
    
    ECC UC-1 and UC-2 Test
    
    Some Use_Cases have failed.

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

    您好 、Zijian XU、

    对缺少此线程表示歉意。 如果您仍需要有关该主题的帮助、请告诉我。  

    此致、

    Nihar Potturu。  

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

    您好、  

    问题已经解决。 谢谢!

    BR、

    徐子建