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.

[参考译文] TMS570LS1114:nowECC 校正参数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/758321/tms570ls1114-nowecc-correct-params

器件型号:TMS570LS1114
主题中讨论的其他器件:NOWECCUNIFLASH

您好!

我对 ECC 生成 iSide CPU 有几个问题。

1) 1) I generate ECC using nowECC tool with the following params:

nowECC.exe -R4 -l -F021 16M_ADD -I -o

但是、我获得的输出文件与 CPU 生成的输出文件不同。 在 DWORD 中没有两个字节的镜像:

已生成:

68 1C 7B 03 0F 10 E6 CC 02 7A 14 8A 71 0A FB F7
1D 9F CE 88 26 92 D5 5E 13 AE 93 3B B7 2C 25 2E
C5 4D E3 76 05 9B 94 4A B3 D0 CE E8 5D 09 38 A0
29 B8 C7 C6 D5 6C 09 63 A8 EF 6C C7 E8 5B 70 AE
42 1F F4 B6 1C CB DA 81 5D C3 63 76 71 01 C4 09
B3 D7 67 39 98 28 05 B8 80 9E CF DA EF B1 90 B2

实际:
68 1C 68 1C 0F 10 0F 10 02 7A 02 7A 7A 71 0A 1D 9F 1D 9F 26 92 26 92 13 AE 13 AE B7 2C B7 2C C5 4D 05 9B 05 B3 D0 B3 D0 B3 D0 5D 09 5D 09 29 B8 29 B8 D5 6C D5 6C A8 EF A8 5B E8 5B 42 1F 42 1F 42 1C CB 1C CB 5D C3 5D C3 71 01 71 01 B3 D7 B3 D7 98 28 98 80 9E 80 9E EF B1 EF B1 B1 B1 B1 B1

问题是:如何生成相同的数据?

2) 2)当我使用闪存加载程序更新闪存时、ECC 数据是否会自动更新? 所有闪存区域? 还是需要执行一些代码?

非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您发表您的问题。
    我们的回应可能会因假期而延迟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Zend、

    我将为您进行检查。  

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

    您好、Zend、

    如果您在 CCS 闪存加载设置中选择"Auto ECC Generation"、则 ECC 将自动生成并编程。

    我比较了 nowECC 生成的 ECC、CCS 生成的 ECC 和闪存 API 生成的 ECC。 它们完全相同:

    由 nowECC 生成的 ECC:  

    CCS 加载生成的 ECC:

    在 ECC 数据中、实际的 ECC 是否是 nowECC 生成的 ECC?  您是如何在 CPU 内生成 ECC 的?

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

    当我将闪存上传到 CPU (通过 Jlink)时、 会自动生成 FLASH-ECC。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白了、您可以使用 CCS 或 uniflash 在加载时自动生成 ECC 并对其进行编程。 我在测试中使用了相同的方法。

    您是否使用 nowECC 中的"镜像"功能来生成 ECC?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找不到该参数(镜像)。 您能告诉我如何实现它吗?

    谢谢

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

    您好、Zend、

    您的实际 ECC 是否由 nowECC 生成?

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

    否 第一个数字由 newECC 生成、实际值由 CPU 本身在闪存上载到它之后生成。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Zend、

    此问题是由您使用的 IDE 中的 ECC 读数引起的。 闪存组为144位宽、支持 ECC。 ECC 字节必须被读取为字节或半字。 在启用 ECC 的情况下读取单个 ECC 字节实际上会导致从闪存中读取144位。

    如果以字(32位)的形式读取 ECC、则会得到镜像 ECC、但这并不意味着 ECC 区域中的 ECC 错误。 在 CCS GEL 文件中、我们指定以2个字节读取闪存 ECC。

    • memmap (memSel){
    •   GEL_MapOff ();
    •   GEL_MapReset();
    •   /*闪存/RAM 定义*/
    •   if (memSel ==闪存){
    •     /*闪存定义*/
    •     GEL_MapAdd (0x00000000、0、0x00060000、1、0); /*内部闪存()  */
    •     GEL_MapAddStr (0xF0400000、0、0x0000C000、"R|AS2"、0); /*内部闪存 ECC  */     
    •     GEL_MapAdd (0x08000000、0、0x00008000、1、1); /*内部 RAM      *
    •     GEL_MapAdd (0x08400000、0、0x00008000、1、1); /*内部 RAM ECC   */
    •     GEL_MapAdd (0x20000000、0、0x00060000、1、0); /*镜像闪存    */     
    •     GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC/PSA        *
    •   }

    如果将 AS2更改为 AS4、IDE 将以字(4字节)的形式读取 ECC 并显示镜像 ECC。 请检查 IDE 以确保 ECC 被读作字节或半字。