This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LC4357: ECC implementation

Part Number: TMS570LC4357
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