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.

[参考译文] AM3358:NAND 页面大小问题

Guru**** 2952000 points

Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/674243/am3358-nand-page-size-questions

器件型号:AM3358

大家好、

我的公司通过安装 AM3358板来增加其 NAND 大小。 新的 NAND 规格:

–页大小 x8:8640字节(8192 + 448字节)
–块大小:128页(1024K + 56K 字节)
–平面尺寸:2个平面 x 每个平面2048个块
–设备大小:32GB:4096块;
64GB:8192块;

问题1:

在启动期间、Linux 输出了此错误:

OMAP-elm 48080000.elm:不支持的配置 ecc-step=16

我深入探讨了有关 GPMC/ELM 的内核代码和 TRM 部分、问题似乎是 ELM 仅支持2KB 或4KB 的页面大小:

26.1.7.4.1特性
•使用 GPMC 作为通信接口
•512Mbit (64MB)的器件
•x8和 x16总线宽度
•支持大页大小(2048字节+ 64个备用字节)或大页大小4096字节+ 128 /
218个备用字节)

有没有办法解决这个问题、以便我们可以使用新的 NAND 器件、其页大小为8K?

问题2:

对于总大小为8GB 的 NAND、我假设我们需要将 NAND 器件连接到其中的两个 LUN (逻辑单元)、然后还需要配置 Linux 器件树的 GPMC 节点以告诉 GPMC 使用2条芯片选择线路。

这是因为器件树 GPMC 节点的分区字段存储了32位的分区大小和偏移量、这意味着我们无法拥有单一8GB 地址空间。  

提前感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请发布您使用的 Linux 版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉、我们使用的是 TI 处理器 SDK 3.03.00.04、即 Linux 4.4.41
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、我已通知 NAND 专家。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在等待 NAND 专家时、我将添加一些可能有用的背景信息。

    这是对具有正常工作的1GB NAND 器件的4K 页大小的电路板的更新。 NAND 已按照我在 OP 中提供的规格(8K 页大小)升级为8GB 器件。

    我能够将 SPL 和 U-Boot 编程到新的 NAND 器件中、并且可以从 NAND 引导到 U-Boot 的命令行(我首先通过 USB 加载 SPL/U-Boot、然后使用它们将 SPL/U-Boot 编程到 NAND 中)。

    我将 MTD 分区表设置为现在仅使用前4GB NAND、以避免使用 GPMC 芯片选择。

    为了使 NAND 的 SPL/U-Boot 访问正常工作、除了修改描述 NAND 的振量配置宏之外、我还必须修改 Marco 中的 CONFIG_SYS_NAND_ECCPOS 以包含更多 OOB 偏移:
    - ECCPOS 最初指定了从偏移2到偏移209的208个 OOB 偏移。
    -我将其更改为指定416个偏移量,从偏移量2到偏移量417。

    上述更改可防止 SPL 从 NAND 加载 U-Boot 时发生 SPL 崩溃。

    我不确定内核中是否存在上述更改。 嗯、现在我不确定 SPL/U-Boot 是否甚至使用 CPU 的 ELM 单元、或者它是否在软件中执行 ECC、因为我还没有这么远地遵循代码。

    正如我说过的、当我从 TFTP 服务器加载内核时、问题就会出现;当内核尝试配置 ELM 时、它会报告"OMAP-elm 48080000.elm: 不支持的 config ecc-step=16"错误、在深入研究内核的 MTD/n 和 OMAP2代码以及 TRM 后、我认为这意味着 ELM 没有足够的综合多项式来处理 NAND 的8K 页大小。

    在遇到上述问题并查看 TRM 状态、即支持2K 和4K 的 NAND 页面(没有提到8K)后、我对 SPL/U-Boot ECCPOS 所做的更改使我能够从 NAND 引导至 U-Boot、这让我想知道:
    - SPL/U-Boot 在没有 ELM 的软件中执行 ECC
    -或者、在允许 U-Boot 从 NAND 加载的同时、ECPOS 变化可能不会实际对8K 页大小执行足够的错误检测和校正。

    无论如何、我最初的问题是 OP 的问题1、即确定是否支持8K 页大小、如果支持、如何配置内核和/或器件树来处理它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeff、

    如离线讨论的那样、GPMC/ELM 无法支持8K 页、因此我们建议将4K 页部件与 AM335x 配合使用。

    此致、
    Michael