您好!
我尝试测试 ECC 逻辑、代码如下所示:
/*数据中的双位错误*/
FECC_CTRL.bit.ECC_TEST_EN = 0;
FADDR_TEST.ALL =
;FDATAH_TEST =
FDATAL_TEST =
Fecc_test.all = ;
FECC_CTRL.bit.ECC_SELECT = 0;
FECC_CTRL.bit.ECC_TEST_EN = 1;
FECC_CTRL.bit.do_ECC_CALC = 1;
NMIFLGCLR.ALL = 0x0E7F;//清除 NMI 标志*/
if (fecc_status.bit.UNC_ERR!= 1)
{
/* ECC 逻辑不起作用,错误*/
}
上述代码在不生成处理器复位的情况下工作正常。 但是、如果我在 IF 条件之后移动指令"NMIFLGCLR.ALL = 0x0E7F;"、处理器将持续复位。
我想首先检查"NMIINT"标志是否已设置、然后我要清除该标志、而不仅仅是清除该标志。 但是、一旦我在"Do_ECC_CALC = 1"之后执行任何小操作(即使是简单的分配)、处理器就会被复位。
当我在复位时检查 NMIWDCNT 时、它仅为"0xAA"或0xAB"、甚至不接近 设置为0xFFFF 的 NMIWDPRD、
我能够测试数据和 ECC 中的单个位错误、而不会出现任何问题。 唯一的问题是不可纠正的错误(数据/ECC 中的双位错误或地址中的单位错误)。
我使用的是 CCS8.1.0.00011。
谢谢你。