Hi, I have question about ECCAD for NFC. It is written as "NOTE:The address of the ECC status byte = Buffer n's start address + ECCAD[11:0] + 7 (n=0,1,2,3)" in "31.4.2 Error Corrector Status" of "VYBRIDRM.pdf". However, my test result was ”The address of the ECC status byte = Buffer n's start address + ECCAD[11:0] + 4”. This is different from a description of Manual. Q1.)Please give me right information. Everyone please, help me out. Best regards, soichi
Solved! Go to Solution.
You are right. I have come to the same conclusion and was going to post my results here. I believe that this is an errata. The Vybrid is little-endian. The byte value is at +7 on the ColdFire and PPC, but on the Vybrid is it +4. If you read a full 32 bits at offset +4 and use only the low byte then all platforms should work. Ie, the result should be a 32bit value at offset +4 and all bits above 8 are undefined. You should accept your answer.
I think this is actually what the MQX driver is doing. I found it for confirmation after I already discovered this by dumping memory as you did; but I first poisoned it with 0xaa55.
Yeah, this 7 looks wrong
But the 0x4 also does not look right either because the last 3 less significant bits of ECCAD[11:0] are always zeros.
So it should be aligned to 0x0 or 0x8.
Dear Juan,
Thank you for reply.
As a result of having tested follows, I am different from your explanation.
Q1) ECC state is written in ECCAD[11:0]+4 by this result.
Is this specifications?
■test
ECCAD[11:3] sets it in 0x102.(This is because it writes an ECC state in "offset 0x800+0x10".)
Result:
"ECC Status = 0" (1 byte) was written in 0x400E0814.
Please see the following figure.
You are right. I have come to the same conclusion and was going to post my results here. I believe that this is an errata. The Vybrid is little-endian. The byte value is at +7 on the ColdFire and PPC, but on the Vybrid is it +4. If you read a full 32 bits at offset +4 and use only the low byte then all platforms should work. Ie, the result should be a 32bit value at offset +4 and all bits above 8 are undefined. You should accept your answer.
I think this is actually what the MQX driver is doing. I found it for confirmation after I already discovered this by dumping memory as you did; but I first poisoned it with 0xaa55.
Yes, it looks like the observations are correct. I will pass this info to Design Team.
Thanks for taking care, Juan!
Please, also take measures to have it fixed in the Vybrid documentation.
Regards, Naoum Gitnik.
IMO, make sense to check it for Kinetis as well...
So glad I found this thread! The Kinetis has exactly the same issue, undocumented anywhere. Just verified that "+4" is the fix - and you can read it as a byte at that address. The Kinetis manual (at least, K20 and K60) show it as +7.