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.

[参考译文] TMS570LS0332:ECC算法差异

Guru**** 657500 points
Other Parts Discussed in Thread: TMS570LS0332
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1093799/tms570ls0332-ecc-algorithm-discrepancies

部件号:TMS570LS0332

您好,

我们的一位客户 需要详细了解Hercules TMS570LS0332上的ECC算法。 他们无法启用ECC。

 

客户查看了基于修改的哈明代码(基于TMSx70的微控制器中的ECC处理  -章节1.5 表1 https://www.tij.co.jp/jp/lit/an/spna126/spna126.pdf )的ECC编码算法,并注意到以下指定的一些异常:

  • ECC位5的ADDR_MSW_LSW缺失。
  • ECC (5),ECC (0)的CPU奇偶校验丢失
  • ECC编码表中标记为'X'的位与ADDR_MSW_LSW不匹配
  • ECC0 - 554EA_B4D1B4D1_4B2E4B2E
  • ECC2 - 2A9B5_A699A699_A699A699
    • 示例:ECC(2)-位7应标记为'X'表示LSW A699A699
  • ECC3 - 6A78D_39E338E3_38E338E3

 

请帮助您了解ECC算法吗?

观察到的结果与 基于TMSx70微控制器的ECC处理中的结果不匹配  -第1.5 节表3 https://www.tij.co.jp/jp/lit/an/spna126/spna126.pdf 

总之,客户对ECC算法的理解如下:

ECC(7)= D0异或D1异或D2异或D3异或D4异或D5异或D6异或D7异或D24异或D25异或D26异或D27异或
D28异端D29异端D30异端D31异端D40异端D41异端D42异端D43异端D44异端D45异端D46异端D47异端
D48异端D49异端D50异端D51异端D52异端D53异端D54异端D55


ECC (6)= D0异或D1异或D2异或D3异或D4异或D5异或D6异或D7异或D24异或D25异或D26异或D27异或
D28异端D29异端D30异端D31异端D32异端D33异端D34异端D35异端D36异端D37异端D38异端D39异端
D56 XOR D57 XOR D58 XOR D59 XOR D60 XOR D61 XOR D62 XOR D63


ECC(5)= D8异或D9异或D10异或D11异或D12异或D13异或D14异或D24异或D25异或D26异或D27异或D28
XOR D29 XOR D30 XOR D40 XOR D41 XOR D42 XOR D43 XOR D44 XOR D45 XOR D46 XOR D56 XOR D57 XOR D58
XOR D59 XOR D60 XOR D61 XOR D62 XOR D63


ECC(4)= D2异或D3异或D4异或D5异或D6异或D7异或D14异或D15异或D18异或D19异或D20异或D21异或
D22异端D23异端D30异端D31异端D34异端D35异端D36异端D37异端D38异端D39异端D46异端D47异端
D50异端D51异端D52异端D53异端D54异端D55异端D62异端D63


ECC (3)= D0异或D1异或D5异或D6异或D7异或D11异或D12异或D13异或D16异或D17异或D21异或D22异或
D23异端D27异端D28异端D29异端D32异端D33异端D37异端D38异端D39异端D43异端D44异端D45异端
D48异端D49异端D53异端D54异端D55异端D59异端D60异端D61


ECC(2)= D0异或D3异或D4异或D9异或D10异或D13异或D15异或D16异或D19异或D20异或D23异或D25
异端D26异端D29异端D31异端D32异端D35异端D36异端D39异端D41异端D42异端D45异端D47异端D48
XOR D51 XOR D52 XOR D55 XOR D57 XOR D58 XOR D61 XOR D63


ECC(1)= D0异或D1异或D2异或D4异或D6异或D8异或D10异或D12异或D16异或D17异或D18异或D20异或
D22异端D24异端D26异端D28异端D32异端D33异端D34异端D36异端D38异端D40异端D42异端D44异端
D48异端D49异端D50异端D52异端D54异端D56异端D58异端D60


ECC (0)= D1异或D2异或D8异或D17异或D18异或D24异或D38异或D44异或D47异或D54异或D60

请根据需要进行更正。

谢谢!

——Gunter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • ECC位5的ADDR_MSW_LSW缺失。
    • ECC (5),ECC (0)的CPU奇偶校验丢失
    • ECC编码表中标记为'X'的位与ADDR_MSW_LSW不匹配
    • ECC0 - 554EA_B4D1B4D1_4B2E4B2E
    • ECC2 - 2A9B5_A699A699_A699A699
      • 示例:ECC(2)-位7应标记为'X'表示LSW A699A699
    • ECC3 - 6A78D_39E338E3_38E338E3
    [/引述]

    您回答正确。  应用程序注释(spna126.pdf)遗漏了用于ECC Bit5的ADDR_MSW_LSW列下的值,并且遗漏了奇偶校验列中用于ECC[5]和ECC[0]的奇偶校验值。  WCC0/ECC2/ECC3中标记有“x”的几个字段与ADDR_MSW_LSW列下的十六进制数据代码不匹配。 我认为这是文件转换的结果。  

    我在昨天的回应中还提到,此表用于RM4x部件,而不是TMS570LSx部件。  

    请使用设备TRM中的表4-1: https://www.ti.com/lit/ug/spnu517c/spnu517c.pdf 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang,您好!

    感谢您的回复。

    如果数据(十六进制)'3.0005万03 000000000.3万00000 0000C2610万 0000C261 3C000000'0000 3C000000'写入0万写入闪存地址0x1万。  为该数据计算的ECC值是多少?

    对于TMS570LS0332微控制器,我认为地址0x1万的ECC数据将在地址0xF40.2万处生成。 是这样吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    地址:0x1万

    数据0x3c0万 (0x1万)和0x0000c261 (0x1.0004万)的ECC为0x76

    数据0x0万 (0x1.0008万)和0x300.0503万 (0x1000c)的ECC为0x0A

    从0xF40万 + 0x1000/8 = 0xF40.2万开始,ECC写入闪存

    0x76位于0xF40.2万处

    0x0A位于0xF40.2001万

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果0x300.0503万位于0x1万,0x3C0万位于0x1000C

    0x1万 --> 0x300.0503万

    0x1.0004万 --> 0x0万

    0x1.0008万 --> 0x0000C261

    0x1000C --> 0x3C0万

    ECC为0x92和0xE8