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.

[参考译文] PROCESSOR-SDK-AM335X:NAND 启动失败

Guru**** 2580605 points
Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631680/processor-sdk-am335x-nand-boot-fails

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:AM3358

你(们)好

我有一个带有 am3358处理器的定制板。

从 SD 卡运行系统时、它会成功识别连接的 NAND 设备:

从内核启动日志:

[1.122752] nand:device found、Manufacturer ID:0x2C、Chip ID:0xd3
[1.129161] nand:Micron MT29F8G08ABACAWP
[1.133192] nand:1024 mib,SLC,擦除大小:256 KiB,页大小:4096,OOB 大小:224
[1.140993]与:使用 OMAP-ECC_BCH8_CODE_HW ECC 方案

我尝试使用来自 MMC 的 uboot 将 MLO 和 u-boot 写入 NAND。

我可以在之后读出它以确认数据已写入。

但是、如果在没有插入 MMC 的情况下引导、它会使所有4个引导选项都失败并重复该操作。

我可以看到 NAND 上的活动、但无论器件是空白的还是上面有数据、它看起来都是一样的。

从引导分析脚本中、引导配置看起来正常:

控制:CONTRAL_STATUS = 0x00400333
* SYSBOOT[15:14]= 01b (24MHz)
* SYSBOOT[11:10]= 00b 无 GPMC CS0地址/数据多路复用
*器件类型=通用(GP)
* SYSBOOT[7:6]= 00b MII (仅限 EMAC 引导模式)
* SYSBOOT[5]= 1使能 CLKOUT1
*引导顺序:NAND -> NANDI2C -> MMC0 -> UART0

我应该使用什么 NAND 布局?

我尝试 了 http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#NAND_2 ,但我认为 由于页面大小,我的分区应该是它的2倍。

查看 uboot/include/configs/中的 am335x_evm.h

#define MTDPARTS_DEFAULT "mtdparts=nand.0:"\
"128K (NAND.SPL)、"\
"128K (NAND.SPL.Backup1)、"\
"128K (NAND.SPL.Backup2)、"\
"128K (NAND.SPL.backup3)、"\
"256K (NAND.u-boot-spl-OS)、"\
"1M (NAND.u-boot)、"\
"128K (NAND.u-boot-env)、"\
"128K (NAND.u-boot-env.Backup1)、"\
"8M (NAND.kernel)、"\
"-(NAND.file-system)"

我的 Nand 布局是否应采用与最小块相同的格式、但仅为256k? 如果是 、什么是 u-boot-spl-OS?

如果我在地址0处只有 MLO、而没有其他内容、那么这是否足以在 控制台上打印 U-Boot SPL? 或者我是否需要拥有所有分区?

是否可以使用 JTAG 调试引导?

此致、

Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我设法使它开始执行 MLO。
    我使用 e2e.ti.com/.../168416 建议来导线 bootargs[9]= 1;
    以便 ECC 由硬件处理。
    这表明 ROM 代码无法支持我正在使用的 NaN?

    但是、现在 MLO 在打印两行后停止执行:

    U-Boot SPL 2016.05-超量程-脏(2017年10月12日- 09:41:46)
    尝试从 NAND 引导

    MLO 是否尝试在软件中使用 ECC?bootarget[9]是否进行传播、而 MLO 是否使用此选项?

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

    应使用 SYSBOOT[9]= 0。 对于此 NAND 页/OOB 大小、您应该配置 BCH16。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    ROM 代码是否尝试使用 BCH16读取?

    如何使用 BCH16进行写入?

    为什么内核会自动选择 BCH8?

    器件数据表显示 ECC 是每540字节一个字节。

    ISI 不是这个 BCH8?

    此致、

    Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、在大小为224字节的 OOB 上、ROM 代码将尝试使用 BCH16进行读取。 我不是软件专家。 我将要求软件团队评论 BCH16设置。 他们将在这里作出回应。