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:U-boot 中的空白 NAND 识别

Guru**** 2578945 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630629/am3358-blank-nand-recognition-in-u-boot

器件型号:AM3358

您好!

我设计了一个与 NAND 连接到处理器的定制板。 除 NAND 外、一切都正常。

引导时、U-boot 的 NAND 大小为0 MIB、任何与 NAND 相关的命令都表示没有 NAND 存储。

尚未为 Nand 设置内核、我希望 u-boot 先识别它。

我通过 JTAG 使用 nandflash 程序成功地从 NAND 中写入和读取、因此处理器和芯片之间的连接应该正常。

NAND 驱动程序看起来会被设置、因为我可以看到引脚在引导期间处于活动状态。

我还修改了以下文件:

UBoot/include/configs/am335x_evm.h (更改了 NAND 器件和 NAND 驱动器定义)

uBoot/arch/arm/include/asm/arch-am33xx/mem.h (将 M_NAND_GPMC_CONFIG1和7更改为 nandflash 程序使用的值)

还有其他需要修改的内容吗?

我使用的是1GB、8位宽度 NAND。

是否应该向 NAND 闪存写入任何内容以便 u-boot 识别它?

此致、

Ugnius

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

    这是哪个 Linux/U-boot 版本? 您能否布置原理图的 NAND 部分?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    我使用的是 Processor SDK 03.03。

    U-boot 和内核都是从 SDK 构建的。

    CPU 侧连接:

    与非侧连接:

    此致、

    Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从我看到的结果中、您将 R/B 信号上拉至 VDDSHV1。 但是、如果您使用 ZCZ 封装、则 GPMC_WAIT0 (焊球 T17)位于 VDDSHV3上。 VDDSHV1和 VDDSHV3是否位于同一电压轨上?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    VDDSHV1和 VDDSHV3都连接到3.3V 电源。

    此致、
    Ugnius
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没关系。 您能否检查 WAIT0信号的电平? 您有一个10kOhm 上拉电阻、这是相当高的、如果在 WAIT0引脚上启用了内部下拉电阻、则可能会产生分压器。 通常使用4.7kOhm。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还有一个问题-如何设置 SYSBOOT[9]?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    LCD_DATA[15..0]被连接:

    0100 0000 0011 0011

    使 SYSBOOT[9]= 0;

    等待信号上的电压电平看起来正常:

    绿色表示等待信号。

    紫色是 CLE。

    如果我发布对原始帖子中提到的文件所做的更改、是否会有所帮助?

    此致、

    Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、请、硬件似乎正常、这必须与软件相关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 uboot/include/configs/am335x_evm.h 中、我更改了

    CONFIG_SYS_NAND_PAGESIZE 设置为4096

    CONFIG_SYS_NAND_OOBSIZE 至224

    CONFIG_SYS_NAND_BLOCK_SIZE 至(256*1024)

    如数据表所述:

    我从 am43xx_EVM 中获取了与 NAND 驱动程序相关的配置。

    在 uboot/arch/arm/include/asm/arch-am33xx/mem.h 中

    将 M_NAND_GPMC_CONFIG1更改为0x00000810

    将 M_NAND_GPMC_CONFIG7更改为0x00000048

    因为这些值由设法从 nand 中写入和读取的 nandflash 程序使用。

    此致、

    Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将要求软件团队查看这一点。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进一步调查此问题、我注意到 NAND 引脚上的活动不是由 SD 卡上的 u-boot 创建的、而是由处理器本身创建的。 如果我卸下 SD 卡、则开机后活动仍然存在。

    看起来 u-boot 根本不会尝试读取 NAND。 通过 u-boot 源代码跟踪 NAND:0 MIB
    信息从 nand.c 文件中打印。

    对其进行调试时、CONFIG_SYS_NAND_SELF INIT 未设置、它仅尝试从 NAND_INFO 缓冲区读取信息、而不是尝试从芯片读取信息。
    看起来、CONFIG_SYS_NAND_self_init 会设置函数中的信息。
    不确定从芯片本身读取它的代码在哪里。

    我尝试使用 uboot 文件夹中的 menuconfig 来启用 NAND 引导命令。
    但是、在从 SDK 顶部运行 make 脚本后、默认情况下会覆盖.config。
    如何修改顶部 make 文件的 u-boot 配置以使用它?
    为了启用 NAND 读取、我应该在 u-boot 配置或文件中更改任何特定的内容吗?

    我在内核侧向 AM335x-evmsk.dts 添加了 NAND 支持、并对 NAND 器件和分区进行识别和初始化。
    它是唯一不执行它的 u-boot。

    此致、
    Ugnius
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我现在有 U-boot 识别 NAND。

    u-boot/configs/AM335x_EVM_defconfig 需要 CONFIG_NANN=y

    使用此参数、u-boot 可正确识别我的 NAND 器件。