器件型号: AM263P4-Q1
基于以下 ECC MSS L2 样本的 OCSRAM 原型 ECC 检测。 但是、在调用 sdl_ecc_injectError 函数后、有些情况下会调用 ESM 回调函数、而有些情况下则不调用此函数。
https://software-dl.ti.com/mcu-plus-sdk/esd/AM263PX/09_02_00_56/exports/docs/api_guide_am263px/SDL_ECC_PAGE.html#autotoc_md1214
我有两个问题。
(1) 如果 testLocationValue = injectErrorConfig.pErrMem[0];命中高速缓存、它是否可能无法访问实际内存、因此无法检测到错误?
如果是、是否有必要在错误注入测试代码之前禁用缓存、然后再重新启用它、如下所示?
如果没有调用回调函数、请说明未调用回调函数的可能原因以及相应的对策。
CacheP_wbInvAll (CacheP_TYPE_ALL);
CacheP_DISABLE (CacheP_TYPE_ALL);
__ASM__ volatile (“:::“存储器“);/*存储器屏障*/
sdl_ecc_injectError (...);
__ASM__ volatile (“:::“存储器“);/*存储器屏障*/
testLocationValue = injectErrorConfig.pErrMem[0];
CacheP_wbInvAll (CacheP_TYPE_ALL);
CacheP_ENABLE (CacheP_TYPE_ALL);
(2) 在 2‑位错误样本中、有指定要翻转以进行错误注入的位模式的代码、例如:
injectErrorConfig.flipBitMask = 0x30002;
值 0x30002 会翻转 3 位、而不是 2 位。 是否有具体原因? 注释指出“2 位错误“、但由于它实际影响超过 2 位、它是否有意使用 3 位进行测试?
此外、如果我们简单地使用 0x03 只翻转 2 位、我们是否会获得相同的结果?






