Other Parts Discussed in Thread: NOWECC
Hello TI Forum,
My name is Dai. I am investigating TMS570LC4357 SoC's ECC implementation. I'm reading this document https://www.ti.com/lit/pdf/spna126 and I encountered problems.
1. What memory map option must be used for TMS570LC4357 in nowECC tool
Reading the SPNU491D document ( https://www.ti.com/lit/pdf/spnu491 ), we need to specify memory map option in nowECC tool. But I couldn't figure out which option to use for TMS570LC4357. TMS570LC4357 has 4MB flash but there is no F021 4MB option. I also couldn't figure out if TMS570LC4357 must use with ECC address option or without address option. Also it seems there is -r5 option (ECC in CPU feature of Cortex-R5). We are not sure this option must be used of not.
Please advice which option must be used for TMS570LC4357 in nowECC tool.
2. ECC calculation logic
2-1. Regarding "ECC Handling in TMSx70-Based Microcontrollers (spna126)", I have a question about ECC calculation logic. On page 7 of spna126.
"Table 3. Example of ECC Values Without Address" says Data High and Data Low and the width seems 127:64 for high and 63:0 for low but actual data for each word is 32 bit. Is this just a wrong printing? Data high is 63:32 and data low is 31:0?
2-2. For the ECC bit in "Table 1. ECC Encoding", bit 7 of ECC2 doesn't have "X", but the ADDR_MSW_LSW of ECC2 is 2A9B5_A699A699_A699A699, which means bit 7 = 1. Can you tell us which one is correct, "X" mark or ADDR_MSW_LSW value?
2-3. "Table 3. Example of ECC Values Without Address" says if we calculate the ECC of
954F6D2F 2992A9B6
the ECC will be "AA"
But no matter what I calculate the ECC based on the "Table 1. ECC Encoding", the result is not AA.
The bit pattern of "954F6D2F 2992A9B6" is
| 7 6 5 4 3 2 1 0
-----|----------------
7 95 | 1 0 0 1 0 1 0 1
6 4F | 0 1 0 0 1 1 1 1
5 6D | 0 1 1 0 1 1 0 1
4 2F | 0 0 1 0 1 1 1 1
3 29 | 0 0 1 0 1 0 0 1
2 92 | 1 0 0 1 0 0 1 0
1 A9 | 1 0 1 0 1 0 0 1
0 B6 | 1 0 1 1 0 1 1 0
And if we calculate for example ECC6,
| 7 6 5 4 3 2 1 0
| ----------------
7 | 1 0 0 1 0 1 0 1
6 |
5 |
4 | 0 0 1 0 1 1 1 1
3 | 0 0 1 0 1 0 0 1
2 |
1 |
0 | 1 0 1 1 0 1 1 0
Then, I assumed that XOR of multiple bits are odd parity. So ECC6 becomes "1"
But The result says AA = 1 0 1 0 1 0 1 0, ECC6 is "0". I checked all of the other values but none of them matches.
Can you tell us what is wrong with my calculation? Please advice.
Thanks for your corporation.
Best regards,
Dai
