您好!
也试图通过 emai 23.5问这个问题,没有答案。
测试类型 FLASH_ADDRESS_ECC_FAULT_INject:
应生成 ESM_G3ERR_FMC_Uncorr 错误
-这确实会产生任何故障、请参阅代码行1240-1246如果不包括故障注入测试、实际故障生成就会滞后
#if defined (_TMS570LS31x_)|| defined (_TMS570LS12x_)|| defined (_RM48x_)|| defined (_RM46x_)|| defined (_RM42x_)|| defined (_TMS570LS04x_)
if ((flash_ecc_test_mode_2BIT_FAULT_Inject!= testType)&&(flash_address_ecc_fault_inject!= testType))
#endif
#if defined (_TMS570LC43x_)|| defined (_RM57Lx_)
if (flash_ecc_test_mode_2BIT =testType)
#endif
{
因此最终结果是、某些寄存器会被反向更新和更改、但不会返回(因为返回的 IF 后面是相同的 IF)。
regBkupFPUVr = sl_flashWREG->FPAROVR;
sl_flashWREG->FPAROVR |= F021F_FPAROVR_SYN_ADDRE_ECC;
à if 语句应排除以恢复该反向值
DATA_ABORT 或 ERROR 引脚操作不会生成 μ… 那么、该测试不会测试任何东西???
因此、基本上通过运行此测试、您的 sl_flashWREG->FPAROVR 寄存器值已损坏、就是这样–这不能是此测试的点…
===================================
测试类型 FLASH_ADDRESS_奇 偶校验_FAULT_INject:
代码无法从 ESM_HIGH 中断 SL_ESM_HIGH_intr_handler ()返回、问题与 FLASH_ADDRESS_奇 偶校验_self_test 中的问题相同
https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/602737
看起来像 SafeTI ESM 处理程序代码设置 sl_flashWREG->FPAROVR = 0x5400U;在 if regular test (FLASH_ADDRESS_奇 偶校验_自检)中
尝试在 ESM_application_callback 中设置该值、但这不起作用–是否应该设置该值、如果是、那么为什么 SafeTI ESM 处理程序也没有为此测试类型设置该值? 如果返回 SafeTI-test 代码将起作用、则会恢复备份(实际上不会、请参阅下面的内容) 但对于非故障注入测试、它所做的就是魔法编号0x5400实际上完全需要中断、或者它是否应该以某种方式消除错误生成、从而必须在 ISR…中执行
此外、这些也位于 if (flash_address_parity、fault_inject!= testType)后面
/*清除诊断模式设置*/
sl_flashWREG->FPAROVR = regBkupFPUVr;
sl_flashWREG->FDIAGCTRL = regBckupFdiagctrl;
因此、如果测试不起作用、则返回 SafeTI 后寄存器会损坏…
if 语句现在应排除这些值、寄存器值在从 SafeTI 代码返回后损坏
===================================
测试类型 FLASH_ECC_TEST_MODE_2BIT_FAULT_Inject:
由于存在相同的防护装置、因此问题与 FLASH_ADDRESS_ECC_FAULT_INject 中的问题完全相似
===================================
因此、设法在运行时运行以下测试(当未启用 FIQ 时、所有5个正常的非故障注入测试在启动阶段工作)
FLASH_ECC_TEST_MODE_1位
FLASH_ECC_TEST_MODE_2BIT
FLASH_ECC_ADDR_TAG_REG_MODE
FLASH_ADDRESS_ECC_SELF 测试
但无法运行:
FLASH_ADDRESS_奇 偶校验_self_test
FLASH_ADDRESS_ECC_FAULT_INject
FLASH_ADDRESS_奇 偶校验 FAULT_INject
FLASH_ECC_TEST_MODE_2BIT_FAULT_INject
===========================================