主题中讨论的其他器件:TMS570LC4357、 NOWECC、 HALCOGEN
大家好、
我们通过调用 checkFlashECC 函数来使用 sys_selftest.c 文件、以在闪存中生成 single-bit ECC 错误。
但是、不会生成可纠正的 ECC 错误(ESM 通道6)、而是会获得不可纠正的 ECC 错误。
FEDACSTATUS 值始终为0x100。
请告诉我们闪存是否无法获得单位 ECC 错误?
此致、
M.Sreenivasan。
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.
大家好、
我们通过调用 checkFlashECC 函数来使用 sys_selftest.c 文件、以在闪存中生成 single-bit ECC 错误。
但是、不会生成可纠正的 ECC 错误(ESM 通道6)、而是会获得不可纠正的 ECC 错误。
FEDACSTATUS 值始终为0x100。
请告诉我们闪存是否无法获得单位 ECC 错误?
此致、
M.Sreenivasan。
您好!
为了检查 FMC ECC、在 OTP 中故意放置了单位和双位错误
功能。 TI OTP 组0中64位的任意部分位置 F008 03F0h 至 F008 03F7h 如所示
如图5-6所示、将生成一个单一位错误。 如图5-6所示、TI OTP 组0位置 F008 03F8h 至 F008 03FFh 中64位的任何部分都将生成双位错误。
sys_selftest.c 中的 fmcECCcheck()函数用于生成1位和2位 ECC 错误。 ESM 状态寄存器 SR[0]和 SR[2]将针对1位和2位错误进行设置。
对于2位 ECC 错误、FEDACSTATUS 的值为0x00020100、对于1位错误、值为0x00010002。 这是我的测试:
您好!
如果启用了 CPU 事件导出、将检测到任何单位和双位错误并将其报告给 ESM。
_coreEnableEventBusExport_(); -->应在 sys_startup.c 中调用
spnu563.pdf (TMS570LC4357 TRM)的第342页描述了"故意的单个位和双位错误"的特性。 TMS570LS3137 TRM 中不具有此功能、但所有 Hercules 器件都具有此功能(在 OTP 中开发)。
您可以使用闪存 API 将多个字编程到闪存、但不要对 ECC 进行编程。 读取这些字将导致 ECC 错误:
示例代码:
void main (void)
{
uint32_t fnRetValue;
/*进行其他测试*/
uint32_t ll、i、val1、val2;
char buf[32];
对于(i=0;i<32;i++)
buf[i]= i;
LL = Fapi_BlockErase (1、0x00300000、0x20000);
LL = Fapi_BlockProgram (1、0x00300000、(无符号长整型) buf、32); //仅程序数据
val1 =*(unsigned int *)(0x00300000); //导致 ECC 错误
val1 =*(unsigned int *)(0x00300004);
在 ESM STAT2寄存器中设置 ECC 错误: