您好:
我想请问一下RM48中TCRAM模块中的Single-Bit Error是如何发生的?是自己对寄存器的赋值还是运行某函数时自动产生?
请明白的人尽快帮忙解答一下,谢谢了!!
Jay:
Hi yiwei,
Single-Bit Error是一种RAM的异常情况,TCRAM及ECC就是用来检测和纠正这种异常的。
Regards,
Jay
Jay:
回复 yiwei:
Hi yiwei,
tcram1REG->RAMCTRL = 0x0005010AU;
这一句主要是把RAMCTRL的第8位ECC WR EN给使能了,这样就可以通过人为的改写ECC值来制造ECC的错误。
由于错误是人为制造的,所以位数可以控制,请看例程。
tcramA1bitError ^= 0x1U;
这一句中把ECC的最后一位翻转了,制造了一位ECC错误。
tcramA2bitError ^= 0x3U;
这一句把ECC的最后两位都翻转了,制造了两位ECC错误。
Regards,
Jay
yiwei:
回复 Jay:
Hi Jay,
您说的我明白了,那产生两位ECC错误后,ramread = tcramA2bit;即可,为什么上面还要添加ramread = tcram1REG->RAMCTRL;和ramread = tcram2REG->RAMCTRL;这两段代码呢?
yiwei:
回复 Jay:
谢谢您的回复,我用的是03.05版本,产生的代码就包含了那两行,并且没有ramread = tcramA2bit;这一行代码,我自己添加进去了。
ron chow:
回复 Jay:
hi,TI专家,
通过cramA1bitError ^= 0x1U; 这一句中把ECC的最后一位翻转了,制造了一位ECC错误。 这样数据和ECC值就一致了,此时当读取数据时会纠正错误吗?
Yichao Jiang:
回复 Jay:
你好,ECC是只要使能就可以吗,需要nowECC和nowFlash配合吗,如果需要,该怎么使用呢?谢谢