工具与软件:
我们使用的是 SDK 8.6
1- 要 确保 ECC_sdlFuncTest ();实际上在 SRAM 中注入物理位错误。
2-以及 代码的哪个特定部分(代码行) 在 ECC_sdlFuncTest ()中进行注入;。
以及哪个 SRAM 地址用于错误注入。
以及如何在实际 RAM 中确认错误注入。
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.
工具与软件:
我们使用的是 SDK 8.6
1- 要 确保 ECC_sdlFuncTest ();实际上在 SRAM 中注入物理位错误。
2-以及 代码的哪个特定部分(代码行) 在 ECC_sdlFuncTest ()中进行注入;。
以及哪个 SRAM 地址用于错误注入。
以及如何在实际 RAM 中确认错误注入。
您好!
\SDL\ESC\SDL\ECC\SDL_ECC.c 中的 SDL_ECC_injectError() API src 执行错误注入。
ECC 错误注入通过 ECC 聚合器进行、其地址可在 SDL\ECC\SDL\ECC\ECC\j784s4\SDL_ECC_SoC.h 的 SDL_ECC_aggrBaseAddressTable 中找到 src soc
此致、
Josiitaa.
您好!
我们需要确认错误注入方法、是实际错误还是在寄存器中写入错误指示才能启动 ECC 功能?
对于所有可访问的 RAM ID、SDL 会通过位翻转注入实际的错误。 如果 RAM ID 无法访问、则可以通过设置寄存器值强制执行错误。
第二点如何在复位前(2位错误)或纠正前(1位错误)在实际 SRAM 中监控此错误?
硬件会自动纠正 single-bit 错误。 我不知道是否有方法可以直接在 SRAM 中监控错误。 我会与内部团队核实并回复您。
您为什么要查找这些信息的任何原因?
此致、
Josiitaa.
您好!
感谢您的回答、
如果是所有可访问的 RAM ID、SDL 将通过位翻转注入实际错误。 如果 RAM ID 无法访问、则通过设置寄存器值强制执行错误。
您是指谁?
您为什么要查找此信息?
是的(当然有一个原因)、我们需要在我们的软件中集成 ECC、但在此之前、我们需要确保每个点、并确认对其进行压力测试的方法、因为在2位错误中、将发生复位、因此是关键的变化。
我将与内部团队核实并回复您。
将等待您的回答。
谢谢。
您好!
可通过谁来访问?
可由在 MCU R5F 内核中运行的 SDL 访问。
[报价 userid="558337" url="~/support/processors-group/processors/f/processors-forum/1448983/tda4vl-q1-ensuring-that-the-ecc-test-function-is-capable-of-injecting-1-or-2-bit-error-in-sram-ensuring-of-the-injecting-error-mechanism-is-done-correctly/5561646 #5561646"]是的、我们肯定需要在软件中集成 ECC、但在此之前、我们需要确保每个要点并确认对其进行压力测试的方法、因为在2位错误中、将发生复位、因此是关键变化。有关如何通过 ECC 聚合器注入错误的说明、请参阅 SDL 用户指南- https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j721s2/09_02_00_05/exports/docs/sdl/sdl_docs/userguide/j721s2/modules/ecc.html
发生 single-bit 错误时、ECC 聚合器能够检测和纠正这些错误、从而确保数据的完整性。 所有端点和校验器都支持单位错误注入。 奇偶校验和冗余类型校验器不支持 single-bit 纠错。
对于双位错误、ECC 聚合器可以检测这些错误。 但是、它无法纠正这些错误。 相反、它通过 ESM 中断将这些错误的出现发送到中央处理单元(CPU)(复位/中止是 CPU 或应用决定的)。 所有 RAM 包装器类型和端点的互连 EDC 校验器类型都受支持。 奇偶校验和冗余校验器类型不支持双位 ECC 错误注入。
有关 ECC 端点类型、请参阅此常见问题解答- https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1310234/faq-tda4vm-types-of-ecc-aggregators-ram-ids-and-error-injection
错误注入流程:
对于 ECC 包装器类型端点:
1.写入 ECC_ERR_CTRL1寄存器以设置需要应用 FORCE_SEC 或 FORCE_DED 的行地址。 如果设置了 FORCE_N_ROW、则忽略该位。
2.根据错误注入类型配置 ECC_RAM_CTRL bits[6:3]寄存器。
3.执行 ECC_RAM_CTRL 寄存器的回读以确认错误注入。 读取的值可能与写入的值不同、因为寄存器中的某些字段不可写入或可以自行清除。
4.对于 RAM 包装器类型、在注入错误后、为了触发错误中断、需要在注入错误的行(如果使用了 FORCE_N_ROW、则可以访问任何行)访问 RAM。
5.对于仅注入包装器端点,只有错误注入可以通过 ECC 聚合器实现,检测和校正由 IP 本身完成。
对于 ECC 互连类型端点:
1.通过向 ECC_CBASS_CTRL 寄存器的位字段写入0x0来清除任何挂起的错误注入
2.根据错误组和错误注入类型配置 ECC_CBASS_ERR_CTRL1和 ECC_CBASS_ERR_CTRL2寄存器。
3.写入 ECC_CBASS_CTRL 寄存器以注入错误。
4.对于互连类型、错误注入在空闲周期时发生、因此无需额外存取内存。
错误处理流程:
1.当发生错误事件时、用户可以查询并收集端点的相关信息、以及相对于相关 RAM 起始位置的偏移信息。
2.要清除 ECC 错误事件、请通过配置 ECC_RAM_ERR_STAT1 (用于包装类型端点)和 SDL_EDC_CTL_ERR_STATUS1 (用于互连类型端点)寄存器来清除 ECC 错误事件的挂起状态。
3. ECC_SEC_EOI_REG 寄存器用于重新触发脉冲中断信号、以确保处理任何嵌套的中断事件。 软件中断处理程序必须在当前中断处理例程结束时写入 ECC_SEC_EOI_REG 寄存器、以便新事件可以再次重新触发脉冲中断信号。 对于电平中断信号、ECC_SEC_EOI_REG 寄存器不起作用、不得使用。
4.使用 ESM 寄存器清除 ESM 错误中断。
此致、
Josiitaa.