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.

[参考译文] AM625-Q1:AM620-Q1:[Valeo][AM625-Q1/[AM625-Q1][SDKLA v10.01.10.04]:最后一页选项的错误块管理

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1642217/am625-q1-am620-q1-valeo-am625-q1-sdkla-v10-01-10-04-bug-in-bad-block-management-for-last-page-option

器件型号: AM625-Q1

您好:

由于最近 NAND 芯片发生变化、我们需要启用最后一页的坏块标记扫描。
为了便于参考、要检测/标记坏块、我们需要检查 块的第一页、第二页和最后一页(页 0、1、63) 。   

在浏览 U-Boot 软件包 (SDKLA AM62x (v10.01.10.04) 中的`nand_base.c`文件时、我们发现可以通过启用 NAND_BBT_SCANLASTPAGE 芯片选项来启用最后一页扫描选项。

然而,在分析和测试功能的过程中,我们发现了一个错误,阻止此功能正常运行。

image.png
 
如上图所示、如果 NAND_BT_SCANLASTPAGE 和 NAND_BT_SCAN2NDPAGE 都启用、则会导致以下错误行为:

  1. 标记选定块的最后一页
  2. 标记 下一个块的第一页

坏块检查功能中也存在类似的逻辑错误。  

为了解决该问题、我们在以下文件中添加了以下修改(为便于使用,请将 .txt 文件转换为 .patch 文件):

 nand_base.c 0001-NAND-Bad-Block-Management-Fix.txt 

如果此更改/修复有任何问题、请告知我们。  

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

    尊敬的 Marwan:

    通常、u-boot 将坏块标记 (BBM) 写入可擦除块内第一页和/或第二页中的 OOB 区域。
    将 BBM 写入其他页面通常不会提高可靠性、但可能会引入兼容性问题或减慢系统的启动过程。

    这是有关 GPMC-NAND 引导上 AM64x ROM 中错误块管理的参考
    【常见问题解答】GPMC-NAND 引导时 AM64x ROM 中的错误块管理 

    1/。 Valeo 电路板上的 GPMC-nand 器件是什么?
    2/。 将 BBM 写入可擦除块内的多个页面(即 0、1、63)是否有特殊要求?

    此致、
    - Hong

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

    Hong Hong:

    1.  我们不会支持单个 NAND 设备;相反,我们会通过读取其 ONFI 参数页面并进行相应调整来支持多个 NAND 设备版本。

    2.有些 NAND 供应商需要在多个页面中使用 BBM、如下所示。


    是否通过与我 在上面的原始问题中描述的不同方法支持此功能? 如果这是唯一的方法,那么它不能正常运行。


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

    尊敬的 Marwan:
    我在 AM62-LPSK 电路板上检查了 Linux SDK 10.0.7.4。
    它看起来 BBM 只放置在 u-boot 中可擦除 GPMC-nand 块内第一页 OOB 区域的第一个字节中。
    此致、
    - Hong

    e2e.ti.com/.../am62_2D00_lp_5F00_nand_5F00_bb_2300_200000.log

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

    Hong Hong:

    从我所看到的、这是默认行为、但据称可以使用    我在上面介绍的 NAND_BT_SCAN2NDPAGE 和 NAND_BT_SCANLASTPAGE 标志对其进行配置。

    这是否意味着 SDK 不支持在块的第二页和最后一页中标记坏块?

    此致、
    Marwan

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

    尊敬的 Marwan:

    是的、BBM 会记录在默认 u-boot 中的可擦除块内第一页 OOB 的第一个字节中。

    它看起来通常在 u-boot 中不启用 NAND_BBT_SCAN2NDPAGE/NAND_BT_SCANLASTPAGE 标志、而是根据 NAND 芯片的制造商 ID 和内部属性自动触发。 例如、Samsung 和 Hynix MLC NAND 器件以及 Toshiba 和 AMD 器件。
    -三星
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/mtd/nand/raw/nand_samsung.c?h=12.00.00.07#n99
    - Hynix
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/mtd/nand/raw/nand_hynix.c?h=12.00.00.07#n72
    -东芝
    https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/drivers/mtd/nand/raw/nand_toshiba.c?h=12.00.00.07#n68

    根据 NAND 芯片的制造商 ID 触发代码中的标志将确保 u-boot 和内核之间的一致性...如果引导加载程序和内核在查找坏块标记的位置上不一致、它们可能会意外写入一个认为“良好“的块、而另一个认为它“不良“、从而导致数据损坏。

    此致、
    - Hong

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

    Hong Hong:

    我赞赏所提供的例子;然而、我的原始发言非常清楚:

    当  NAND_BBT_SCAN2NDPAGE 和 NAND_BT_SCANLASTPAGE  标志均启用时、坏块标记和检测 无法正常工作。


    请在您结束时确认此行为、并查看上面提到的修复。  

    此致、  
    Marwan

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

    尊敬的 Marwan:
    我认为您的查询是关于 u-boot 中 BBM/BBT 处理的 NAND 内核函数、还可能与内核如何处理它们相关联。
    我建议将您的问题发布到 u-boot 邮件列表中。
    u-boot@lists.denx.de
    此致、
    - Hong