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.

[FAQ] [参考译文] 【常见问题解答】GPMC-NAND 引导时 AM64x ROM 中的错误块管理

Guru**** 2845700 points

Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1635006/faq-bad-block-management-in-am64x-rom-on-gpmc-nand-booting

器件型号: AM6442
Thread 中讨论的其他器件: TMDS64EVM

AM64x 引导 ROM 支持从并行 GPMC-NAND 引导。
从 AM64x TRM 中的“4.4.10 GPMC NAND 引导“更改为“4.10 GPMC NAND 引导“
“AM64x ROM 仅支持从 ONFI 1.0 兼容的 8 位并行 NAND 存储器启动、大小最高可达 2GB
通过以下几何形状连接到 GPMC CS0:
•2KB 页和至少 64 字节的备用区域或
•4K 字节页大小和至少 128 字节的备用区域“

有关引导 ROM 支持 GPMC NAND 的详细信息、请参阅 AM64x TRM“第 4 章初始化“。

常见问题解答介绍了如何实现 坏块 (BB) 在中、当使用 BB 从 GPMC-NAND 加载第一级用户引导加载程序 (BL) 时、会在 AM64x ROM 中处理 GPMC-NAND。 该常见问题解答 以 AM64x Linux SDK 10.0.7.4 [3]为例、使用 TMDS64EVM [1]和[2]上的 u-boot 刷写/引导从 GPMC-NAND 启动。
[1]。 TMDS64EVM www.ti.com/.../TMDS64EVM
[2]。 TI 参考 NAND 卡 (TMDS64DC02EVM)
[3]。 www.ti.com/.../10.00.07.04

还有一个有关如何从 AM64x 上的并行 GPMC NAND 刷写和引导 u-boot 的配套常见问题解答
https://e2e.ti.com/support/processors-group/processors/f/791/t/1406344

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

    GPMC-NAND 坏块管理的关键组件
    坏块管理可确保识别和绕过 NAND 闪存不可靠或出厂有缺陷的区域、以防止数据损坏。
    -坏块标记 ( BBM ):出厂设置的坏块由擦除块第一页或第二页的 OOB(带外)区域的特定字节中的非 0xFF 值标识。
    -坏块表 ( BBT ):为了避免每次启动时扫描整个闪存、Linux 内核通常会维护一个 BBT。

    u-boot 中 GPMC-NAND 坏块标记 (BBM) 的关键详细信息
    -标记位置: u-boot 在每个块第一页的 OOB 区域中的特定偏移(第一个或第二个字节)处扫描一个非 0xFF 值。
    -块级状态:如果发现一个坏块标记,整个块(即 128KB 或 256KB )被标记为坏,并在 nand 读/写操作期间跳过。
    -扫描策略:因为扫描每一页的速度太慢,通常只检查前两页的 OOB 来确定整个块是否不可靠。

    坏块标记 (BBM) 上的一致性
    ROM、SPL/u-boot 和 Linux 内核使用相同的 BBM 方案至关重要、否则可能会错误地将正常块识别为坏块或无法看到现有的坏块标记。

    ROM 中错误块跳跃的简化逻辑
    与 SPL(二级程序加载程序)类似、ROM 主要依赖预扫描 的出厂标记坏块标记或在运行时扫描的简单 BBM 来支持坏块跳过:在引导过程中、ROM 读取每个块第一页的 OOB 区域。 如果坏块标记不是 0xFF、ROM 会跳过整个块并移动到下一个块、ROM 会继续执行此操作、直到完成用户的 SPL 读取。

    使用 BB 从 GPMC-NAND 进行 u-boot 刷写/引导的日志

    1.am64_10.0.7.4_nand_flash_bb#0.log:刷写 GPMC-n 且 BB @0x0 时的 u-boot 日志
    如日志中所示、u-boot 根据块第一页的 OOB 读取结果来检测 BB @0x0、并在 GPMC-n 和擦除操作中跳过 BB @0x0。 在 GPMC-n 和刷写期间、u-boot 跳过 BB @0x0、并将 SPL 刷写到下一个 GPMC-n 和块@0x40000。

    2. am64_10.0.7.4_nand_boot_bb#0.log:BB @0x0 时的正常 u-boot GPMC-n 和引导日志
    BB @0x0 由 ROM 根据从 块第一页的 OOB 读取中读取的 BBM 进行扫描和检测、SPL 从下一个 GPMC-n 和块@0x40000 加载到内部 SRAM 以由 ROM 引导。

    e2e.ti.com/.../2742.am64_5F00_10.0.7.4_5F00_nand_5F00_flash_5F00_bb_2300_0.log

    e2e.ti.com/.../am64_5F00_10.0.7.4_5F00_nand_5F00_boot_5F00_bb_2300_0.log