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.

[参考译文] AM3352:不可纠正的 ECC 错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1622758/am3352-uncorrectable-ecc-errors

器件型号: AM3352

我使用 AM335x 与 NAND MT29F8G08ABACAH4。 (BCH8)。

当 MLO 尝试加载 uboot 时、它始终失败。
读取调试消息。 读取 ECC 匹配 Calculate ECC
步骤 0 代码:BD 6e 53 23 92 31 02 B2 c0 4b D5 11 72
步骤 0 计算:  BD 6e 53 23 92 31 02 B2 c0 4b D5 11 72  
步骤 1 代码:10 ae D1 F6 12 6c 65 3D 68 86 1a db 4a
步骤 1 计算:10 ae D1 F6 12 6c 65 3D 68 86 1a db 4a  

Elm location_config(之前):0x07ff0001(表示 BCH8)。 配置已更正。


这里是计算的综合
BCH-8 SYND[0]:0x4bd51172
BCH-8 SYND[1]:0x3102b2c0

但 LOCATION_STATUS =0x00。  这是错的
你知道为什么它报告错误? 我是否需要为此情况运行 ECC 检查?  

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

    你好、Yolanda、

    我已经联系了 ELM 专家。 请预计他们的响应会有一些延迟。

    谢谢、

    Stan

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

    有关此问题的任何更新?

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

    你好、Yolanda、

    Elm 专家目前是 ooo。 当他回来时,他会回应。

    此致、

    Stan

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

    你好、Yolanda、

    我使用 AM335x 与 NAND MT29F8G08ABACAH4。 (BCH8)。

    中导出 MT29F8G08ABACA 数据表。
    •PCIe 标准
    页大小 x8:4320 字节(4096 + 224 字节)
    –页面大小 x16:2160 个字(2048 + 112 个字)
    块大小:64 页(256K + 14K 字节)
    –平面尺寸:每平面 2 个平面 x 2048 个块
    –设备大小:8GB:4096 块
    –设备大小:16GB:8192 块

    对于 nand 几何体、“页面大小 x8:4320 字节(4096 + 224 字节)“  =>应使用 BCH16 而不是 BCH8。

    此致、
    - Hong

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

    我知道为什么吗? TI ROM 可以检测 NAND 引导、如果我绕过 ECC 错误、它可以成功读取存储器、甚至引导。 当前版本的 uboot (2017.03) SPL 不支持 BCH16。 我无法升级 u-boot 版本

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

    你好、Yolanda、

    AM335x ROM 和 AM335x Linux SDK 支持 BCH16。
    请参阅部分 从该链接读取数据
    https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/gpmc-nand.txt

    TI 支持 u-boot 2017.3(例如 TI Linux SDK 4.3)具有挑战性、但在 u-boot 中启用 BCH16 是可行的。
    1/。 您是否能够构建 u-boot (2017.3)?
    2/。 如何在电路板上刷写 GPMC-nand?
    3。 您的电路板上有哪种引导模式可用?

    此致、
    - Hong

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

    是的,我能够构建 u-boot。

    通过 RS232 终端刷新 nand

    NAND 引导。

    因此、即使电路板引导成功、我也必须将设置从 BCH8 切换到 BCH 16。 读取 ECC 与计算 ECC 相匹配。 但 AM335x 仍会标记 ECC 错误。 ECC 错误是由 BCH8 引起的?

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

    你好、Yolanda、

    我使用 AM335x 与 NAND MT29F8G08ABACAH4。 (BCH8)。

    根据 NAND MT29F8G08ABACAH4 数据表、我为 BCH16 创建了 u-boot 补丁(附加)。

    当前版本的 uboot (2017.03) SPL 不支持 BCH16。 我无法升级 u-boot 版本

    该补丁位于 TI Linux SDK 4.3.0.5 (u-boot 2017.01) 上、这是最接近 u-boot (2017.03) 的补丁。 我自己尚未测试该补丁、因为 TI AM335x EVM 上不提供 MT29F8G08ABACAH4。

    让我们在设置中集成补丁、然后在电路板上测试 u-boot 刷写/引导。

    此致、
    - Hong

    e2e.ti.com/.../am3_5F00_4.3.0.5_5F00_cs_5F00_nand.patch

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

    感谢您的补丁。 我将 NAND BCH8 更改为 BCH16。 但仍报告 ECC 错误。 这是日志

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

    Hong、谢谢您提供的补丁。 我使用补丁将 BCH 8 更改为 BCH 16。 但系统仍会标记 ECC 错误。 这是日志  

    第一行表示这是 BCH16_code HW。

    NAND IO_ADDR_R:0xFF、IO_ADDR_W:0xFF
    步骤 0 代码:E8 5c 20 60 45 91 A3 1e fa 7f 60 BD 69 30 54 49 28 68 7d 14 1D 76 84 46 be 95
    步骤 0 计算:E8 5c 20 60 45 91 A3 1e fa 7f 60 BD 69 30 54 49 28 7d 14 1D 76 84 46 be 95

    对于该日志、第一行是从 NAND 中读取 ECC。 第二行是根据数据计算 ECC。 它们是匹配的。

    [OMAP_CORRECT_DATA_BCH] 562 BCH16 ECC->Bytes=26
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    [SPL] calc_ecc=52 ed 12 d6 fd ee 12 cb 83 52 1e 4D 35 ca bc 60 20 5a 43 ac 61 E3 62 39 6e 92
    [SPL] origin_calc_ecc=92 6e 39 62 E3 61 AC 43 5a 20 60 bc ca 35 4D 1e 52 83 cb 12 ee FD d6 12 ed 52
    [SPL] READ_ECC=92 6e 39 62 E3 61 AC 43 5a 20 60 bc ca 35 4D 1e 52 83 CB 12 ee FD d6 12 ed 52

    在本例中、  OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1

    在这种情况下、AM335x 仍会抛出不可纠正的 ECC 错误。

    第一行是反向 ECC(ECC 校验前需要反向执行)

     第二行是原始计算的 ECC

    第三行是读取 ECC

    根据测试结果、我得到了 BCH8 和 BCH16 的相同结果。 它仍在报告中   不可纠正的 ECC 错误

    我的问题是、我们应该忽略这个错误。 我怎么会遇到这个错误。

    谢谢!

    Yolanda

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

    你好、Yolanda、

    我们是否可以从电路板上的任何引导模式将新的 u-boot 构建(带 BCH 补丁)引导到 u-boot 提示符?
    如果是、运行的消息日志(作为附件)是什么
    NAND 信息
    NAND 转储 0x0

    此致、
    - Hong

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

    你好、Yolanda、

    OOB 数据从日志中看起来正确。
    我在 GPMC-n 上附加了 BCH16 的参考 OOB 布局、页面大小为 4096、OOB 大小为 224。
    - 2 字节标记
    - 208 字节 BCH (26 x 8)
    - 14 字节空闲

    GPMC-nand 在您的电路板上是如何刷写的?
    日志中的 OOB 显示页面大小为 2048 和 BCH8。

    此致、
    - Hong

    e2e.ti.com/.../gpmc_2D00_nand_5F00_page4096_5F00_oob224.log

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

    是否知道 uboot 中的 NAND 写入命令支持页面大小 4096 和 OOB 224? 这就是我如何使用 uboot 上的 NAND 写入对映像进行编程的方法

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

    你好、Yolanda、

    我@了一个参考日志、其中从 SD 引导后刷写了 GPMC-n 和 u-boot 提示符、其中 GPMC-n 上的 BCH16、页面大小为 2048、OOB 大小为 128。

    => N 和信息

    器件 0:nand0、扇区大小为 128KiB
    页面大小 2048 b.
    OOB 大小 128 位
    擦除大小 131072 b
    子页大小 512 b
    选项 0x c.
    BBT 选项 0x 8000

    此致、
    - Hong

    e2e.ti.com/.../am3_5F00_4.3.0.5_5F00_2048_5F00_128_5F00_nand_5F00_flash.log

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

    Hong Guan64 
    这是我的 OOB 打印输出

    NAND 信息

    器件 0:nand0、扇区大小为 256KiB
    页面大小 4096 b.
    OOB 大小 224b
    擦除大小 262144 b
    子页面大小 4096 b.
    选项 0x4000000c
    BBT 选项 0x 0

    fatload USB 0 ${loadaddr}image.ubi
    正在读取 image.ubi
    52953088 字节、在 35237 毫秒 (1.4 MiB/s) 内读取
    => n 并写入${loadaddr}0x100000 ${filesize}

    NAND 写入:器件 0 偏移 0x100000、大小 0x3280000
    52953088 字节写入:正常


    NAND dump.OOB 0x100000
    页 00100000 转储:
    OOB:
    FF FF 17 93 81 7b C5 e0
    72 7c B2 d6 3b 2D 92 68
    22 83 47 D4 BD 42 28 07
    42 C3 6d 91 65 28 10 6e.
    77 7f 04 08 F9 C5 A3 60
    B6 db 2f 8a FD 1c A6 1f
    1B 43 E1 df 8f D1 65 28
    10 6e 77 7f 04 08 F9 C5
    A3 60 B6 db 2f 8a FD 1c
    A6 1f 1b 43 e1 df 8f d1
    65 28 10 6e 77 7f 04 08
    F9 C5 A3 60 B6 db 2f 8a
    FD 1c A6 1f 1b 43 E1 df
    8F D1 65 28 10 6e 77 7f
    04 08 F9 C5 A3 60 B6 db
    2F 8a FD 1c A6 1f 1b 43
    e1 df 8f d1 65 28 10 6e
    77 7f 04 08 F9 C5 A3 60
    B6 db 2f 8a FD 1c A6 1f
    1B 43 E1 df 8f D1 65 28
    10 6e 77 7f 04 08 F9 C5
    A3 60 B6 db 2f 8a FD 1c
    A6 1f 1b 43 e1 df 8f d1
    65 28 10 6e 77 7f 04 08
    F9 C5 A3 60 B6 db 2f 8a
    FD 1c A6 1f 1b 43 E1 df
    8F D1 ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF
    FF 和 FF FF 和 FF
    => N 和信息

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

    但是、如果我运行 nand dump 0。 OOB 看起来不正确。 即 MLO 字段
    nand dump.OOB 0
    页面 00000000 转储:
    OOB:
    00 ff C8 b0 e8 12 b2 4a
    63 70 83 0f C6 76 57 00
    9C 34 A5 19 8a E9 约 90
    6b 4e 55 29 3a 00 e8 92
    C8 58 30 af dd 3D 2f A9
    38 08 20 00 A1 05 5b 92
    06 请参阅 4D 55 91 49 A3 df
    6e 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF
    FF 和 FF FF 和 FF

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

    你好、Yolanda、

    从 nand 块@0x100000 进行的 OOB 读取看起来不错、但从 nand 块@0x0 进行的 OOB 读取表示损坏的块 (BB)。

    当运行两个 cmds @u-boot 提示符时、输出是什么

    nand bad
    nand dump 0x40000

    此致、
    - Hong

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

    是的。 它的 NAND 器件有损坏的块。 我使用良好的 NAND 重新编程新电路板。
    器件 0:nand0、扇区大小为 256KiB
    页面大小 4096 b.
    OOB 大小 224b
    擦除大小 262144 b
    子页面大小 4096 b.
    选项 0x4000000c
    BBT 选项 0x 0
    => n 和 dump.OOB 0
    页面 00000000 转储:
    OOB:
    FF ff 8b 02 19 8a E3 CB
    F8 A5 fa 72 E9 C7 62 01
    9F ef 03 2c 90 2c 75 0d
    C9 F9 A5 7e 7a af 2D 59
    A6 00 91 17 17 F9 31 7b
    D4 B2 e0 69 27 A7 20 F9
    8B 98 D4 49 6c 1D AB 0f
    BD D7 3c 为 C5 9c CD 9e
    8C ed 87 da 41 36 50 82
    59 E5 7c 47 7f 3a 26 D4
    B5 D2 8f df 28 7f 9e 3D
    76 BD 20 19 96 62 C1 8d.
    41 6c 71 57 63 49 D8 08
    72 直流 5F af 5c 44 4F 5d
    D5 6d C6 ee f0 79 f1 E1
    A9 C3 77 83 40 9f 44 B3
    53 4c 4b E2 74 57 3b E7
    3e 32 7c 3a 0A f0 4D 46
    0A 1e 9d AB 60 E7 52 0c
    F4 C8 A8 b9 ff 24 C4
    C1 A2 9d BD ad 8c CF BD
    0C 46 c0 B3 0d F4 3f 52
    5B AD E2 E1 D7 90 C1 25
    EF F9 b0 89 2D 48 BD
    18 0f fa 33 69 59 34 7a.
    87 56 80 36 A5 38 92 da.
    84 94 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF
    FF 和 FF FF 和 FF
    =>

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

    你好、Yolanda、

    OOB 从 nand 块@0x0 读取现在看起来不错。

    在您电路板上刷写新的 u-boot(有 BCH16 补丁)后、我们是否尝试过从 GPMC-n 引导新的 u-boot(带 BCH16 补丁)?

    此致、
    - Hong

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

    但我仍然有 不可纠正的 ECC 错误  

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

    嗨、Hong

    CRC 校验后重新编程。 控制器从 NAND 引导  

    它会尝试从 NAND 引导
    调试:OMAP_SELECT_ECC_PRODUCT 939 OMAP-LECC_BCH16_code_HW
    调试:ecc.mod = 2 nand->options=12
    NAND IO_ADDR_R:0xFF、IO_ADDR_W:0xFF
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    [SPL] calc_ecc=9b 38 4b D8 61 24 46 D3 b0 60 08 35 63 30 76 2a F4 85 18 9a 1c 2b 1f 94 67 7b
    [SPL] READ_ECC=9b 38 4b D8 61 24 46 D3 b0 60 08 35 63 30 76 2a F4 85 18 9a 1c 2b 1f 94 67 7b
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    [SPL] calc_ecc=39 3b 1D 82 51 9b 23 9e 6e 4D f0 12 56 1e 8d 42 78 AD C6 4D 45 13 F7 ef 83 5f
    [SPL] READ_ECC=39 3b 1D 82 51 9b 23 9e 6e 4D f0 12 56 1e 8d 42 78 AD C6 4D 45 13 F7 ef 83 5F
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    [SPL] calc_ecc=bc 37 D9 8c 4F bb 9c 0A d6 65 ed 75 f2 68 D2 03 5F A9 B3 4F D1 85 0c 1D 20 0d
    [SPL] READ_ECC=bc 37 D9 8c 4F bb 9c 0A d6 65 ed 75 f2 68 D2 03 5F A9 B3 4F D1 85 0c 1D 20 0d
    OMAP-Lm:不可纠正的 ECC 错误 LOCATION_STATUS=0x3
    [SPL] calc_ecc=58 18 26 70 C7 B3 AD 1e 10 f2 ef 21 96 B7 7b E7 55 5F 65 65 1b 20 14 73 C2 f0
    [SPL] READ_ECC=58 18 26 70 C7 B3 AD 1e 10 f2 ef 21 96 B7 7b E7 55 5F 65 65 1b 20 14 73 C2 f0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    [SPL] calc_ecc=89 32 5e 23 73 37 93 93 92 b0 12 C1 F8 A3 5F C9 28 19 6d 20 E7 41 29 E4 6e C8
    [SPL] READ_ECC=89 32 5e 23 73 37 93 93 92 b0 12 C1 F8 A3 5F C9 28 6d 20 E7 41 29 E4 6e C8
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    [SPL] calc_ecc=C6 02 D7 9c 5b bf 86 7a 82 2A 93 D1 F9 04 82 E7 30 06 33 5c 2f 3b 71 6c 90 d0
    [SPL] READ_ECC=C6 02 D7 9c 5b bf 86 7a 82 2a 93 D1 F9 04 82 E7 30 06 33 5c 2f 3b 71 6c 90 d0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    [SPL] calc_ecc=59 71 57 4b 80 83 BA 7e 46 32 EB 4c 16 AC 4c b9 D2 99 2e fb 59 97 25 48 dc 77
    [SPL] READ_ECC=59 71 57 4b 80 83 BA 7e 46 32 EB 4c 16 AC 4c b9 D2 99 2e fb 59 97 25 48 dc 77
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    [SPL] calc_ecc=b2 f1 0b 3c 8f 25 74 61 40 69 C9 bc FD d0 7b aa 90 9d 84 57 49 38 ed 6c 23
    [SPL] READ_ECC= f1 b2 0b 3c 8f 25 74 61 40 69 C9 bc FD d0 7b aa 90 9d 84 57 49 58 38 ed 6c 23
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    [SPL] calc_ecc=D2 df 1b 63 D3 04 6B 38 1e 64 B2 8e 8f A2 34 77 39 08 01 75 18 95 2f DE B1 9c
    [SPL] READ_ECC=D2 df 1b 63 D3 04 6B 38 1e 64 B2 8e 8f A2 34 77 39 08 01 75 18 95 2f DE B1 9c
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    [SPL] calc_ecc=e8 30 9c 09 34 83 98 60 ee 12 CD 81 70 c0 80 92 ce FD 34 A1 5F 43 18 59 1b 94
    [SPL] READ_ECC=e8 30 9c 09 34 83 98 60 ee 12 CD 81 70 c0 80 92 ce FD 34 A1 5F 43 18 59 1b 94
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2

    uboot 因 ECC 错误而卡住。 CAL_ECC 和 READ_ECC 都是连续的、

    你知道为什么  location_status (elm_check_error() 函数。 /driver/mtd/nand/omap_elm.c) 报告 0x01、0x02 或 0x03...

    不管用。 我必须跳过 ECC 错误

    谢谢!

    Yolanda

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

    你好、Yolanda、

    我设法保护了一个 nand 器件 (MT29F2G08ABAGAH4)、并使用 u-boot 2017.01(类似于 u-boot 版本)进行刷写和引导、同时修改 u-boot 以支持 BCH16。 我将连接 nand 刷写的两个日志、并在 MT29F2G08ABAGAH4 上引导。
    MT29F2G08ABAGAH4:
    –页大小 x8:2176 字节(2048 + 128 字节)
    –块大小:64 页(128K + 8K 字节)
    –平面尺寸:2 个平面 x 每平面 1024 个块
    –设备大小:2GB:2048 块

    我知道您为附加的调试消息修改了 u-boot 代码。
    1/。 在您删除调试代码并在我的早期回复中应用 BCH16 补丁后、我们是否可以有新的 u-boot clean 构建?
    2/。 共享 MLO/u-boot.img 刷写的完整日志。
    3。 共享 MLO/u-boot.img 引导的完整日志。

    此致、
    - Hong

    e2e.ti.com/.../2642.am3_5F00_4.3.0.5_5F00_2048_5F00_128_5F00_nand_5F00_flash.log

    e2e.ti.com/.../am3_5F00_4.3.0.5_5F00_2048_5F00_128_5F00_nand_5F00_boot.log

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

    请与我分享代码  elm_check_error() 和 OMAP_CORRECT_DATA_BCH() 函数

     

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

    你好、Yolanda、

    我没有在 AM335x Linux SDK 4.3.0.5 (u-boot 2017.01) 中修改以下两个文件
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/mtd/nand/omap_elm.c?h=ti2017.06#n94
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/mtd/nand/omap_gpmc.c?h=ti2017.06#n511

    - AM335x Linux SDK 4.3.0.5 软件包
    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX AM335X/04.03.00.05

    此致、
    - Hong

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

    Hong Hong:

    我在删除所有调试代码后对器件重新编程。   elm_check_error() 和 OMAP_CORRECT_DATA_BCH() 函数都与您共享的代码相匹配。

    NAND erase.chip:器件 0 完整芯片
    在 0x3ffc0000 处擦除-- 100%完成。
    好的
    => USB 启动
    正在启动 USB...
    USB0:扫描器件的总线 0…… 找到 1 个 USB 设备
    正在扫描 USB 以查找存储设备... **第一描述符不是 0:1 *上的主描述符
    找到 1 个存储设备
    => fatload USB 0 ${loadaddr}MLO
    正在读取 MLO
    在 109 ms (1.1 MiB/s) 内读取 131072 字节
    => fatload USB 0 ${loadaddr}MLO
    正在读取 MLO
    在 109 ms (1.1 MiB/s) 内读取 131072 字节
    => n 并写入${loadaddr}0x0 ${filesize}

    NAND 写入:器件 0 偏移 0x0、大小为 0x20000
    131072 字节写入:正常
    => n 并写入${loadaddr}0x40000 ${filesize}

    NAND 写入:器件 0 偏移 0x40000、大小为 0x20000
    131072 字节写入:正常
    => n 并写入${loadaddr}0x80000 ${filesize}

    NAND 写入:器件 0 偏移 0x80000、大小为 0x20000
    131072 字节写入:正常
    => n 并写入${loadaddr}0xC0000 ${filesize}

    NAND 写入:器件 0 偏移 0xc0000、大小为 0x20000
    131072 字节写入:正常
    => fatload USB 0 ${loadaddr}image.ubi
    正在读取 image.ubi
    在 35956 ms (1.4 MiB/s) 内读取 52953088 字节
    => n 并写入${loadaddr}0x100000 ${filesize}

    NAND 写入:器件 0 偏移 0x100000、大小 0x3280000
    52953088 字节写入:正常

    => N 和信息

    器件 0:nand0、扇区大小为 256KiB
    页面大小 4096 b.
    OOB 大小 224b
    擦除大小 262144 b
    子页面大小 4096 b.
    选项 0x4000000c
    BBT 选项 0x 0


    => n 和 dump.OOB 0
    页面 00000000 转储:
    OOB:
    FF ff 8b 02 19 8a E3 CB
    F8 A5 fa 72 E9 C7 62 01
    9F ef 03 2c 90 2c 75 0d
    C9 F9 A5 7e 32 D1 fc 79
    9F FD 7c 7e b4 C8 96 19
    3B 88 74 0b D3 B7 94 70
    A6 89 91 E7 94 C6 fa BA
    A2 4b 95 3a 50 48 85 77
    C5 7d 3f ad 87 3D CF 96
    96 69 C5 68 B2 A6 0d 3D
    第 492 章我是不是也不知道
    99 1D fb C8 E3 5F B3 59
    0A 4b ca 31 A7 Fe F4 ee
    Bc af 58 7e D9 C2 96 23
    E8 D5 F7 6c 3c B2 96 47
    B1 1a 6e ca 01 E9 02 A1
    4C 85 05 14 2f bc 1D 44
    Bd af B2 D5 ae 00 92 24
    FD 28 51 2a 14 FD de e0
    69 12 2b A1 7e D1 C3 73
    24 F6 6a ca 74 15 7d 5b
    10 FD 6B D4 70 B8 3e 8e.
    6F B3 7a D9 A5 f0 CB 5e
    04 DE c0 C9 ED 5F 81 3e
    D5 e0 85 0e 1b AD bc CD
    43 36 ef 76 41 49 98 39
    5f 62 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF
    FF 和 FF FF 和 FF


    => N 和 dump.OOB 0x100000
    页 00100000 转储:
    OOB:
    FF ff ff db fe de 26 ff b3
    98 89 EC 55 BA 09 05 63
    DD 直流 C4 2a 7a 73 B7 65
    AD 68 60 6B 65 28 10 6e.
    77 7f 04 08 F9 C5 A3 60
    B6 db 2f 8a FD 1c A6 1f
    1B 43 E1 df 8f D1 65 28
    10 6e 77 7f 04 08 F9 C5
    A3 60 B6 db 2f 8a FD 1c
    A6 1f 1b 43 e1 df 8f d1
    65 28 10 6e 77 7f 04 08
    F9 C5 A3 60 B6 db 2f 8a
    FD 1c A6 1f 1b 43 E1 df
    8F D1 65 28 10 6e 77 7f
    04 08 F9 C5 A3 60 B6 db
    2F 8a FD 1c A6 1f 1b 43
    e1 df 8f d1 65 28 10 6e
    77 7f 04 08 F9 C5 A3 60
    B6 db 2f 8a FD 1c A6 1f
    1B 43 E1 df 8f D1 65 28
    10 6e 77 7f 04 08 F9 C5
    A3 60 B6 db 2f 8a FD 1c
    A6 1f 1b 43 e1 df 8f d1
    65 28 10 6e 77 7f 04 08
    F9 C5 A3 60 B6 db 2f 8a
    FD 1c A6 1f 1b 43 E1 df
    8F D1 ff ff ff ff ff ff ff ff ff ff ff ff ff ff FF
    FF 和 FF FF 和 FF

    对装置进行编程后、我可以循环操作系统

    -Boot SPL 2017.03 (Mar 17 2026 - 23:34:36)
    康普 SPL - 2016 年

    它会尝试从 NAND 引导
    调试:OMAP_SELECT_ECC_PRODUCT 943 OMAP_ECC_BCH16_code_HW
    调试:ecc.mod = 2 nand->options=12
    NAND IO_ADDR_R:0x00、IO_ADDR_W:0x00
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x4
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    ubi:坏魔术块 03292 06b08ae1.
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x4
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    ubi:坏魔术块 03293 06b08ae1.
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x4
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    ubi:坏魔术块 03294 06b08ae1.
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x4
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    ubi:坏魔术块 03295 06b08ae1.
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x0
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x2
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1
    OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1

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

    启动失败

    UBI 警告:音量:0 LEB 1 PEB 3 数据 CRC 故障
    UBI 警告:LEB 1 of 3 缺失
    ubi 警告:无法加载卷 0
    ubi:正在加载 VolId #0 res =–22

    ubi 警告:失败
    加载[NAND.image1:uboot] ret =–22
    SPL:无法从所有引导设备引导
    ###错误###请重置主板###

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

    你好、Yolanda、

    从您的日志中、MLO 和 image.ubi 已刷写到 GPMC-nand。
    Falcon 引导是否用于您的系统? SPL 直接引导内核的位置?

    据我所知、您的平台上之前使用了 nand MT29F4G08ABADAH4 (2048 页大小、64 OOB)。
    您是否为新的 nand MT29F8G08ABACAH4 (4096 页大小、224 OOB) 重新生成了 image.ubi?

    此致、
    - Hong

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

    image.ubi 包括 uboot/kernel/rootfs。

    SPL 将读取 MLO 和 图像并运行代码。 但失败了。

    我使用您的补丁支持 BCH 16 和配置重新编译 uboot、以支持  MT29F8G08ABACAH4。 但我没有改变任何功能。

    是的、uboot 适用于  MT29F4G08ABADAH4 (BCH8)。  

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

    您是否知道为什么  location_status 在此案例中显示了错误的数据?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否为新的 nand MT29F8G08ABACAH4 (4096 页大小、224 OOB) 重新生成了 image.ubi?

    UBIFS 生成依赖于 GPMC-n 和几何结构。
    当 GPMC-n 和器件发生更改(即 2048 页大小=> 4096 页大小)时、需要生成新的 UBIFS。

    此致、
    - Hong

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

    这是用于生成 image.ubi 的 make 文件。下面是参数:-e 0x3e000(eraseblock 有效大小)-c 4096 -m 0x1000 -x lzo


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

    我们以正确的大小重建映像。

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

    您只需在生成 UBIFS 时调整参数以匹配新的 nand 几何体。
    测试结果如何?
    此致、
    - Hong

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

    image.ubi 已使用新的 nand 几何体  -e 0x3e000 -c 4096 -m 0x1000 进行重建。 它 仍然具有相同的结果。

    我想结果。 it OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1

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

    image.ubi 已使用新的 nand 几何体  -e 0x3e000 -c 4096 -m 0x1000 进行重建。 它 仍然具有相同的结果。

    我想结果。 it OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1

    谢谢!

    Yolanda

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

    image.ubi 已使用新的 nand 几何体  -e 0x3e000 -c 4096 -m 0x1000 进行重建。 它 仍然具有相同的结果。

    我想结果。 it OMAP-Lm:不可纠正的 ECC 错误 location_status=0x1

    谢谢!

    Yolanda

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

    Hong Guan64 

    有什么建议吗?

    我更改了代码

    for (int i = 0;i < ecc->bytes;i++)
    synd[i]= READ_ECC[i]^ calc_ecc[i];

    在检查错误时使用此 synd

    Err = elm_check_error (synd、bch_type、&error_count、error_loc);

    这是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我设法保护了一个 nand 器件 (MT29F2G08ABAGAH4)、并使用 u-boot 2017.01(类似于 u-boot 版本)进行了 u-boot 修改以支持 BCH16、从而实现了闪存和引导。 我将附加两个日志、用于 nand 刷写并在 MT29F2G08ABGAH4 上引导。

    如我在前面的答复中所述、BCH16 在 AM335x 上的 u-boot 2017.01 中工作。 因此、我认为无需修改 u-boot 代码。

    我的理解是、u-boot 包含在 UBIFS 中。 我的理解是否正确?
    为进行测试、
    1/。 我们是否可以将 u-boot.img 重定位到 GPMC-nand MTD 分区?
    2/。 运行 GPMC-n 和读取/写入测试@u-boot 提示符?

    此致、
    - Hong

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

    ubifs 中包含 u-boot。

    可能导致此错误的原因是什么?

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

    根据您的测试结果、 BCH16 在 AM335x 上以 u-boot 2017.01 模式工作。  您知道我的代码出了什么问题吗  

    Yolanda

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

    我想在您的设置中从 GPMC-n 和引导到 u-boot 提示符、我们将能够运行 GPMC-n 和读取/写入测试@u-boot 提示符。

    此致、
    - Hong

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

    对不起,我被其他事情打断。 我没有机会尝试。 您是否有一些我可以在我的设备上编程的示例代码?

    顺便说一句,你有没有尝试编程 ubi 文件系统之前使用此设置?  它有 ECC 错误?

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

    我构建的 SPL/u-boot 适用于 TI AM335x GP EVM 板、但它们无法在您的电路板上引导。
    我们是否曾尝试过我在早期答复中提到的做法?   这有助于首先在设置中测试 SPL/u-boot 中的 GPMC-nand。

    我的理解是您的 u-boot 包含在 UBIFS 中。 我的理解是否正确?
    为进行测试、
    1/。 我们是否可以将 u-boot.img 重定位到 GPMC-nand MTD 分区?
    2/。 运行 GPMC-n 和读取/写入测试@u-boot 提示符?

    此致、
    - Hong