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.

[参考译文] AM62L:NAND/NOR 引导问题

Guru**** 2434370 points
Other Parts Discussed in Thread: AM62L

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1494539/am62l-nand-nor-boot-issues

器件型号:AM62L


工具/软件:

引导 SD 卡后、可以查看 NAND 分区:

root@am62lxx-evm:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00080000 00040000 "ospi_nand.tiboot3"
mtd1: 00200000 00040000 "ospi_nand.tispl"
mtd2: 00400000 00040000 "ospi_nand.u-boot"
mtd3: 00040000 00040000 "ospi_nand.env"
mtd4: 00040000 00040000 "ospi_nand.env.backup"
mtd5: 17e00000 00040000 "ospi_nand.rootfs"
mtd6: 05fc0000 00040000 "ospi_nand.phypattern"

我想知道如何烧录固件、然后使用 OSPI NAND 引导。

我使用 nandwrite 命令刷新从官方网站下载的固件文件(例如 tiboot3.bin 和 tispl.bin)。 切换到 OSPI NAND 引导模式后、系统无法引导。  

root@am62lxx-evm:~# flash_erase /dev/mtd0 0 0 ; sleep 1 ; nandwrite -a -p /dev/mtd0 tiboot3.bin 
Erasing 512 Kibyte @ 0 -- 100 % complete 
Writing data to block 0 at offset 0x0
root@am62lxx-evm:~# 
root@am62lxx-evm:~# flash_erase /dev/mtd1 0 0 ; sleep 1 ; nandwrite -a -p /dev/mtd1 tispl.bin 
Erasing 2048 Kibyte @ 0 -- 100 % complete 
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x40000
Writing data to block 2 at offset 0x80000
root@am62lxx-evm:~# 

官方网站上的固件是否支持作为 OSPI NAND 引导、我是否需要先更改软件、然后重新编译。 请提供一种编译和烧录 OSPI NAND 映像的方法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    切换到 OSPI NAND 引导模式后、系统无法引导。  [/报价]

    “无法引导“是什么意思? 是否有任何输出(U-Boot?)。 如果是、请共享部分引导日志。

    此致、Andreas

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

    我在 EVM 板上进行了测试、使用 boot0-boot15 引导拨号代码:(1100 0001 0011 0000)、boot 仅打印图片中的信息。

    日志如下所示

    root@am62lxx-evm:/run/media/boot-mmcblk0p1# cat /proc/mtd 
    dev:    size   erasesize  name
    mtd0: 00080000 00040000 "ospi.tiboot3"
    mtd1: 00200000 00040000 "ospi.tispl"
    mtd2: 00400000 00040000 "ospi.u-boot"
    mtd3: 00040000 00040000 "ospi.env"
    mtd4: 00040000 00040000 "ospi.env.backup"
    mtd5: 037c0000 00040000 "ospi.rootfs"
    mtd6: 00040000 00040000 "ospi.phypattern"
    mtd7: 00080000 00020000 "ospi_nand.tiboot3"
    mtd8: 00200000 00020000 "ospi_nand.tispl"
    mtd9: 00400000 00020000 "ospi_nand.u-boot"
    mtd10: 00040000 00020000 "ospi_nand.env"
    mtd11: 00040000 00020000 "ospi_nand.env.backup"
    mtd12: 05fe0000 00020000 "ospi_nand.rootfs"
    mtd13: 00020000 00020000 "ospi_nand.phypattern"
    root@am62lxx-evm:/run/media/boot-mmcblk0p1# 
    root@am62lxx-evm:/run/media/boot-mmcblk0p1# flash_erase /dev/mtd7 0 0 ; sleep 1 ; nandwrite -a -p /dev/mtd7 tiboot3.bin 
    Erasing 512 Kibyte @ 0 -- 100 % complete 
    Writing data to block 0 at offset 0x0
    Writing data to block 1 at offset 0x20000
    root@am62lxx-evm:/run/media/boot-mmcblk0p1# 
    root@am62lxx-evm:/run/media/boot-mmcblk0p1# 
    root@am62lxx-evm:/run/media/boot-mmcblk0p1# flash_erase /dev/mtd8 0 0 ; sleep 1 ; nandwrite -a -p /dev/mtd8 tispl.bin 
    Erasing 2048 Kibyte @ 0 -- 100 % complete 
    Writing data to block 0 at offset 0x0
    Writing data to block 1 at offset 0x20000
    Writing data to block 2 at offset 0x40000
    Writing data to block 3 at offset 0x60000
    Writing data to block 4 at offset 0x80000
    Writing data to block 5 at offset 0xa0000
    root@am62lxx-evm:/run/media/boot-mmcblk0p1#

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“546216" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1494539/am62l-nand-boot-issues/5743568 #5743568“]

    我在 EVM 板上进行了测试、使用 boot0-boot15 引导拨号代码:(1100 0001 0011 0000)、boot 仅打印图片中的信息。

    日志如下所示

    [/报价]

    这些打印表明、当主引导模式失败时、ROM 会回退到 UART 引导。

    使用 boot0-boot15:(1100 0001 0011 0000)、

    是否可以尝试将 BOOTMODE[7]设置为“0"?“? 这将配置为 1-1-8 模式(而不是 1-1-4 模式)。 从 AM62L TRM...

    此外、您的第一个日志在/proc/mtd 下显示 7 个分区、但您的第二个日志显示 14 个分区? 为什么第二个日志显示这些重复的条目?

    此致、Andreas

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

    BOOTMODE[7]设置为“0"也“也不会启动、启动打印输出没有变化。

    第二个日志是因为我在 AM62L EVM 电路板上烧录了 TI 映像、对于 ospi_nor、请使用 mtd0-mtd6。

    我想首先在 AM62L EVM 电路板上实现 OSPI 引导。
    谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第二个日志是因为我将 TI 映像烧录到 AM62L EVM 板上、对于 ospi_nor、mtd0-mtd6。

    「我知道,我知道你想要我。 是的、特定 EVM 实际上同时将 OSPI NOR 和 QSPI NAND 闪存器件连接到同一个 AM62L OSPI 外设模块、但使用不同的片选信号 (CS0 表示 NOR、CS3 表示 NAND) 来区分两个闪存器件。

    (来自 AM62L EVM 用户指南)

    话虽如此、在选择串行 NAND 引导模式时、无法将片选信号更改为 CS0 以外的信号。 换句话说、使用 AM62L EVM 无法从板载串行 NAND 闪存引导。

    但是、您应该能够使用板载的 OSPI NOR 闪存。 如果您想使用它并需要帮助、请告诉我。

    此致、Andreas

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

    谢谢、我明白了。

    我以相同的方式将固件写入 OSPI NOR、它仍然像这样启动。 只有当引导切换设置为“xSPI SFPD 1“时、它才会打印一点点、但会卡住。

    当我使用 OSPI NOR 引导时、如何设置拨号代码?

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

    您得到的错误日志指向器件引导 ROM 正在 从 OSPI NOR 闪存成功加载引导固件 (tiboot3.bin) 的第一阶段、但随后无法加载和/或验证第二个引导状态 (tispl3.bin)。 我刚刚在自己的 AM62L EVM 上快速尝试了下、似乎可以轻松地重新创建此问题。 引导模式开关设置正确。

    我需要花更多时间对此进行进一步分析。 它看起来有点像勘误表  i2474、但是该勘误表并未明确将 OSPI NOR 列为受影响的引导模式、因此这可能是相关的、也可能不是相关的。 太早了,说真的,我会花更多的时间来解决这个问题,然后回到这里。

    此致、
    Andreas

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

    经过一些更多的实验后、似乎出于某种原因(可能与前面提到的勘误表 i2474 相关)、8D-8D-8D 传输模式似乎不适用于加载/验证第二个引导阶段。 但是我发现 1D-1D-1D 模式可以工作。 要使用此模式、您需要首先禁用 SFDP 模式(以便 ROM 在解析功能后不会自动启用 8D 模式)、并确保手动配置为 1D-1D-1D 模式。 这意味着使用的引导模式设置 0xc73 。 以下示例展示了这种如何使用 SDK v11.0 二进制文件以编程方式设置引导模式(更易于测试)、但您应该能够通过 AM62L EVM DIP 开关使用相同的设置。

    # SFDP disabled, 0x0B Read Command, 1D-1D-1D Mode -> OK !!
    => mw.l 0x43010030 0x00000c73 && reset
    resetting ...
    NOTICE:  bl1_plat_arch_setup arch setup
    NOTICE:  Booting Trusted Firmware
    NOTICE:  BL1: v2.12.0(release):11.00.04-10-gdd46885ec-dirty
    NOTICE:  BL1: Built : 05:00:39, Feb 26 2025
    NOTICE:  lpdd4_init <--
    NOTICE:  DDR ram size =80000000
    NOTICE:  bl1_platform_setup DDR init done
    NOTICE:  k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE:  BL31: v2.12.0(release):11.00.04-10-gdd46885ec-dirty
    NOTICE:  BL31: Built : 05:00:39, Feb 26 2025
    ERROR:   Failed to get response (-19)
    ERROR:   Transfer send failed (-19)
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    U-Boot SPL 2025.01-00253-g9a3137c5c11a (Feb 26 2025 - 17:07:57 +0000)
    SPL initial stack usage: 1872 bytes
    Trying to boot from SPI
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    
    U-Boot 2025.01-00253-g9a3137c5c11a (Feb 26 2025 - 17:07:57 +0000)
    
    SoC:   AM62LX SR1.0 HS-FS
    Model: Texas Instruments AM62L3 Evaluation Module
    DRAM:  2 GiB
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    Core:  66 devices, 28 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   eth0: ethernet@8000000port@1
    Warning: ethernet@8000000port@2 (eth1) using random MAC address - ee:54:21:4e:e1:c0
    , eth1: ethernet@8000000port@2
    Hit any key to stop autoboot:  0
    =>

    您能否查看是否可以在您的最后重新创建成功引导至 U-Boot 提示符

    此致、Andreas

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

    只是一个快速跟进此...

    经过一些更多的实验后、似乎有一些原因(可能与前面提到的勘误表 i2474 相关)8D-8D-8D 传输模式似乎不适用于加载/验证第二个引导阶段

    与团队讨论、我获悉最近发现的引导 ROM 问题尚未包含在外部勘误表中(但很快会出现)、该问题会像您遇到的那样影响 8D-8D-8D 引导。 此问题的权变措施是、在引导过程中、闪存必须由 TF-A 复位  如果您要使引导在 8D-8D-8D 模式下工作、请尝试对当前暂存的 TF-A 应用以下权变措施、然后重新构建 TF-A 并重新构建 U-Boot。

    PENDING: feat(ti): Add workaround for errata i2462
    https://github.com/r-vignesh/arm-trusted-firmware/commit/b86d40329ad2dce45afd12e6d12c4d058c740b80

    适用于 AM62L 的 Yocto SDK 用户指南中提供了需要(重新)构建 U-Boot 和 TF-A 的步骤、

    此致、Andreas

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

    谢谢、我将重新编译并再次测试此问题。

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

    您好、

    我在电路板上重新编译以便进行测试、它卡在 U-Boot SPL 中:

    NOTICE:  Booting Trusted Firmware
    NOTICE:  BL1: v2.12.0(release):33c1fcc3c-dirty
    NOTICE:  BL1: Built : 02:53:16, Apr  8 2025
    NOTICE:  BL1: dram_class: 10
    NOTICE:  lpddr4: post start - PI training status=0x29c02000 
    NOTICE:  bl1_platform_setup DDR init done
    NOTICE:  k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE:  BL31: v2.12.0(release):33c1fcc3c-dirty
    NOTICE:  BL31: Built : 02:53:16, Apr  8 2025
    NOTICE:  0_ADC0's parent is 0
    NOTICE:  0_ADC0's parent (after set_parent) is 2
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    U-Boot SPL 2025.01-00256-gab383c3b7d56 (Mar 28 2025 - 06:58:19 +0000)
    SPL initial stack usage: 1872 bytes
    SPL: failed to boot from all boot devices
    ### ERROR ### Please RESET the board ###

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

    因此、您似乎可以顺利解决之前的问题、现在 U-Boot SPL (A53) 已加载并成功启动。

    我被告知此时整个 U-Boot 链应该能正常工作、而不会出现任何问题。

    您使用的是哪个 U-Boot/SPL 版本? 我在我们的源树中看不到你有的提交 (`ab383c3b7d56`)。

    请   使用 SDK 随附的适当配置、重新构建并使用 git.ti.com/.../ 中的最新 U-Boot/SPL(与 www.ti.com/.../11.00.05.02 上的官方 AM62L SDK 相同)。

    此致、Andreas

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

    打扰一下。
    实际上、我无法在 AM62L EVM 上验证 OSPI-NOR 引导、因为 AM62L EVM 电源存在问题、导致无法进行上电和引导。
    我的最终目标是在自己的开发板上实现 QSPI NAND 引导、我使用 QSPI NAND 制作了自己的开发板、SD 卡启动并现在可以读取/写入 QSPI NAND、但我还无法使用 QSPI NAND 引导。 关于 QSPI NAND 引导、目前是否可以支持它?

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

    目前、我烧录了固件并将其写入 QSPI NAND、然后将拨号代码拨打到 BOOTMODE[15:12]:1001、并打印出如下消息:

    我最终需要确保 QSPI NAND 引导、以便客户可以使用它。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    发生的情况是我无法验证 AM62L EVM 上的 OSPI-NOR 引导、因为 AM62L EVM 电源存在导致无法加电和引导的问题。
    我的最终目标是在我自己的开发板上实现 QSPI NAND 引导、

    好的、现在我很困惑、请帮助我解决这个问题。 根据我的理解、您的 AM62L EVM 由于某种原因无法上电和启动(是否损坏? 如何实现?)。 但随后您也有自己的支持 NAND 的定制 AM62L 电路板。 这是 您之前共享的引导日志 的来源吗? 但您说 QSPI NAND 不引导吗?

    此致、Andreas

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

    我为这个混乱而道歉。 最初、我测试了您在 AM62L EVM 上提供的 TF-A 补丁。 但是、我错误地配置了 DIP 开关、导致系统在 U-Boot/SPL 阶段停止。 昨天、在意识到 DIP 开关错误后、我将其调整为 xSPI 引导模式以进行重新测试。 但是、在连接电源后、AM62L EVM 无法通电(没有指示灯)、可能是由于芯片损坏。 因此、我无法在 AM62L EVM 上成功验证您的补丁。
    此外、我们开发了自己专为 QSPI NAND 引导设计的电路板、随后遇到了我昨天报告的日志问题。

    最初、我打算验证 NAND 启动功能并了解使用 AM62L EVM 的 AM62L 平台。 现在我的定制电路板已经准备就绪、接下来要解决该电路板上的 QSPI NAND 引导故障问题。 我非常感谢您为应对这一挑战提供的技术支持。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们开发了自己的专为 QSPI NAND 启动设计的电路板、

    从您之前的帖子中、看起来您正在使用它  W25N02KV 是这样吗?

    https://www.winbond.com/hq/product/code-storage-flash-memory/qspinand-flash/?__locale=en&partNo=W25N02KV

    此致、Andreas

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

    我需要澄清一下:原理图主要说明了我们的电路设计意图、而在硬件中实现的实际 QSPI NAND 芯片是 ​​MT29F4G01ABBFDWB-IT:F ​​。

    www.micron.com/.../mt29f4g01abbfdwb-it-f

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

    好的、感谢您的澄清。 本周我将在 PTO 上工作、但下周将再次查看。

    此致、Andreas

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

    尊敬的 Andreas:

    只需 ping、该问题有任何进展?  

    -托马斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 EVM 板上进行了测试、使用 boot0-boot15 引导拨号代码:(1100 0001 0011 0000)、boot 仅打印图片中的信息。

    我在内部进行了一些研究、发现有几个参考文献表明、 MT29F4G01FLASH 之前在我们的一款 AM62x 器件上已成功验证。 虽然没有明确提及 AM62L、但我认为此时特定器件型号应该存在问题、或者没有任何理由认为这样做不起作用。 此外、提到的“串行 NAND“是要使用的正确引导模式。  在 TI ROM 中、QSPI 不是 NOR 闪存。

    但是、在相关讨论中、如果出现问题、建议尝试通过设置 BOOTMODE 位 8 将 SPI 传输模式设置为 1-1-1、如果有任何区别、请在您的末端尝试此设置。

    此致、Andreas

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

    您好、

    我测试了它。 这是一回事。

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

    啊、好的、它实际上是一直引导到 SPL、这很棒。

    你能分享所有(!!)</s>! 相关的 U-Boot 器件树定义 &ospi0 (包括关联的引脚多路复用器件树节点)和 U-Boot .config 源文件吗?

    此致、Andreas

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

    您好、

    器件树如下所示、解图与 TI 发布版本中相同、未经额外修改。

    	ospi0_pins_default: ospi0-default-pins {
    		bootph-all;
    		pinctrl-single,pins = <
    			AM62LX_IOPAD(0x003c, PIN_OUTPUT, 0) /* (D22) OSPI0_CLK */
    			AM62LX_IOPAD(0x0068, PIN_OUTPUT, 0) /* (C20) OSPI0_CSn0 */
    			AM62LX_IOPAD(0x0048, PIN_INPUT, 0) /* (C22) OSPI0_D0 */
    			AM62LX_IOPAD(0x004c, PIN_INPUT, 0) /* (D21) OSPI0_D1 */
    			AM62LX_IOPAD(0x0050, PIN_INPUT, 0) /* (E23) OSPI0_D2 */
    			AM62LX_IOPAD(0x0054, PIN_INPUT, 0) /* (D23) OSPI0_D3 */
    		>;
    	};
    
    
    &ospi0 {
    	bootph-all;
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	qspi0_nand: flash@0 {
    		bootph-all;
    		compatible = "spi-nand";
    		reg = <0x0>;
    		spi-tx-bus-width = <4>;
    		spi-rx-bus-width = <4>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    		cdns,phy-mode;
    
    		partitions {
    			bootph-all;
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    
    			partition@0 {
    				label = "qspi_nand.tiboot3";
    				reg = <0x0 0x80000>;
    			};
    
    			partition@80000 {
    				label = "qspi_nand.tispl";
    				reg = <0x80000 0x200000>;
    			};
    
    			partition@280000 {
    				label = "qspi_nand.u-boot";
    				reg = <0x2c0000 0x400000>;
    			};
    
    			partition@680000 {
    				label = "qspi_nand.env";
    				reg = <0x700000 0x40000>;
    			};
    
    			partition@6c0000 {
    				label = "qspi_nand.env.backup";
    				reg = <0x780000 0x40000>;
    			};
    
    			partition@2000000 {
    				label = "qspi_nand.rootfs";
    				reg = <0x2000000 0x17e00000>;
    			};
    
    			partition@7fe0000 {
    				bootph-all;
    				label = "qspi_nand.phypattern";
    				reg = <0x19e00000  0x5fc0000>;
    			};
    		};
    	};
    };

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

    感谢文件。 我目前正在处理一个高优先级问题、我需要~2 天时间才能再次回到这里、更仔细地查看。

    此致、Andreas

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

    尊敬的 Andreas:

    您是否有时间再次查看此问题以及有关此问题的任何更新? 谢谢!

    -托马斯

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

    我查看了之前分享的原理图提取内容、AM62L 默认 U-Boot defconfig、以及提供的器件树提取内容(用于确保兼容性)以及驱动程序文件 微米.c 启动此步骤。  MT29F4G01ABBFD 的所有要点都应得到轻松支持、并且应该适用于 U-Boot/SPL。

    1. 您能否从其他引导介质(如 SD 卡、UART 等)引导您的定制电路板进入 U-Boot 提示符? 这样做可能是值得的、然后检查您是否可以从 U-Boot 提示符处访问 QSPI NAND 器件。 这样我们就可以知道这是 SPI 闪存的一般问题、还是 SPL 特有的问题。 您可以测试从 U-Boot 访问 SPI NAND、如下所示...

      # This example is using the SK-AM62A board
      => mtd list
      List of MTD devices:
      * spi-nand0
        - device: flash@0
        - parent: spi@fc40000
        - driver: spi_nand
        - path: /bus@f0000/bus@fc00000/spi@fc40000/flash@0
        - type: NAND flash
        - block size: 0x40000 bytes
        - min I/O: 0x1000 bytes
        - OOB size: 128 bytes
        - OOB available: 80 bytes
        - 0x000000000000-0x000008000000 : "spi-nand0"
                - 0x000000000000-0x000000080000 : "ospi_nand.tiboot3"
                - 0x000000080000-0x000000280000 : "ospi_nand.tispl"
                - 0x000000280000-0x000000680000 : "ospi_nand.u-boot"
                - 0x000000680000-0x0000006c0000 : "ospi_nand.env"
                - 0x0000006c0000-0x000000700000 : "ospi_nand.env.backup"
                - 0x000002000000-0x000007fc0000 : "ospi_nand.rootfs"
                - 0x000007fc0000-0x000008000000 : "ospi_nand.phypattern"
      => mtd read ospi_nand.tiboot3 0x80000000
      Reading 524288 byte(s) (128 page(s)) at offset 0x00000000



    2. 您可以将以下补丁应用于 U-Boot、以获取有关导致引导停止的错误的更多详细信息...

      $ git diff
      diff --git a/common/spl/spl.c b/common/spl/spl.c
      index 1ceb63daf31..356b929efa0 100644
      --- a/common/spl/spl.c
      +++ b/common/spl/spl.c
      @@ -747,11 +747,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
              ret = boot_from_devices(&spl_image, spl_boot_list,
                                      ARRAY_SIZE(spl_boot_list));
              if (ret) {
      -               if (CONFIG_IS_ENABLED(SHOW_ERRORS))
      -                       printf(PHASE_PROMPT "failed to boot from all boot devices (err=%d)\n",
      -                              ret);
      -               else
      -                       puts(PHASE_PROMPT "failed to boot from all boot devices\n");
      +               printf(PHASE_PROMPT "failed to boot from all boot devices (err=%d)\n", ret);
                      hang();
              }


    3. 您是否有使用 JTAG 进行连接/调试的方法? 这可能是更好地理解所发生的事情所必需的。

    此致、Andreas

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

    您好、

    1、SD 卡引导:

    => 
    => mtd list
    List of MTD devices:
    * spi-nand0
      - device: flash@0
      - parent: spi@fc40000
      - driver: spi_nand
      - path: /bus@f0000/bus@fc00000/spi@fc40000/flash@0
      - type: NAND flash
      - block size: 0x40000 bytes
      - min I/O: 0x1000 bytes
      - OOB size: 256 bytes
      - OOB available: 126 bytes
      - 0x000000000000-0x000020000000 : "spi-nand0"
    	  - 0x000000000000-0x000000080000 : "ospi_nand.tiboot3"
    	  - 0x000000080000-0x000000280000 : "ospi_nand.tispl"
    	  - 0x0000002c0000-0x0000006c0000 : "ospi_nand.u-boot"
    	  - 0x000000700000-0x000000740000 : "ospi_nand.env"
    	  - 0x000000780000-0x0000007c0000 : "ospi_nand.env.backup"
    	  - 0x000002000000-0x000019e00000 : "ospi_nand.rootfs"
    	  - 0x000019e00000-0x00001fdc0000 : "ospi_nand.phypattern"
    => 

    2、

    NOTICE:  Booting Trusted Firmware
    NOTICE:  BL1: v2.12.0(release):90ac40d85-dirty
    NOTICE:  BL1: Built : 00:36:15, Apr 15 2025
    NOTICE:  BL1: dram_class: 10
    NOTICE:  lpddr4: post start - PI training status=0x29c02000 
    NOTICE:  bl1_platform_setup DDR init done
    NOTICE:  k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE:  BL31: v2.12.0(release):90ac40d85-dirty
    NOTICE:  BL31: Built : 00:36:15, Apr 15 2025
    NOTICE:  0_ADC0's parent is 0
    NOTICE:  0_ADC0's parent (after set_parent) is 2
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    U-Boot SPL 2025.01-gede7df3a2ca4 (May 27 2025 - 01:59:16 +0000)
    SPL initial stack usage: 1872 bytes
    SPL: failed to boot from all boot devices (err=-19)
    ### ERROR ### Please RESET the board ###

    3、我的开发板不使用 JTAG 接口,所以现在无法使用。

    您能否确认当前版本的 SDK11.00.05.02 支持 QSPI 引导、还是第一个版本没有支持该引导?

    谢谢  

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

    我本周在 PTO 上、但下周我将再次获得 E2E 支持。 谢谢。

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

    您好 Andreas Dannenberg

    您是否有关于问题调查的任何更新?

    -托马斯

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

    SPL: failed to boot from all boot devices (err=-19)

    感谢您运行额外的实验。 错误代码–19 表示“无此类设备“(ENODEV)、在 U-Boot 的上下文中、这通常与设备树设置问题或 U-Boot 配置本身的问题(成功引导需要未激活的驱动程序/功能)有关。

    由于我们已经检查了设备树、我认为它看起来很好、因此我们应该重点关注配置情况。

    解构与 TI 发布版本中相同、未经额外修改。

    我刚刚查看了 SDK 版本 11.00.05.02 中的 defconfig、似乎缺少了 NAND 启动所需的一些定义。

    您可以尝试启用以下功能吗 配置 选项并重新编译 U-Boot、然后重试:

    CONFIG_NAND_BOOT=y
    CONFIG_QSPI_BOOT=y
    CONFIG_SPL_NAND_SUPPORT=y
    CONFIG_SPL_NAND_DRIVERS=y
    CONFIG_SPL_NAND_ECC=y
    CONFIG_SPL_NAND_BASE=y
    CONFIG_SPL_NAND_IDENT=y
    
    # The below are probably needed to
    CONFIG_SYS_NAND_U_BOOT_OFFS=0x280000
    CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y

    此致、Andreas

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

    您好、

    很抱歉晚才回复、

    我使用了 SDK 11.00.15.05 进行测试、我添加了这些配置、日志如下:

    NOTICE:  Booting Trusted Firmware
    NOTICE:  BL1: v2.12.0(release):11.00.15-2-gea4525856-dirty
    NOTICE:  BL1: Built : 09:03:06, Jul  8 2025
    NOTICE:  BL1: dram_class: 10
    NOTICE:  lpddr4: post start - PI training status=0x29c02000 
    NOTICE:  bl1_platform_setup DDR init done
    NOTICE:  k3_bl1_handoff ENTERING WFI - end of bl1
    NOTICE:  BL31: v2.12.0(release):11.00.15-2-gea4525856-dirty
    NOTICE:  BL31: Built : 09:03:06, Jul  8 2025
    NOTICE:  SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.12-v11.00.12 (Fancy Rat)')
    ERROR:   Agent 0 Protocol 0x10 Message 0x7: not supported
    
    U-Boot SPL 2025.01-00465-gf268435c7d00 (Jul 08 2025 - 10:07:33 +0000)
    SPL initial stack usage: 1744 bytes
    SPL: failed to boot from all boot devices
    ### ERROR ### Please RESET the board ###

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用了 SDK 11.00.15.05 进行测试、我添加了这些配置、日志如下:

    为什么它不再显示错误代码? 请记住、我们添加了一项更改在打印时将代码添加到“SPL:无法从所有引导设备引导“行...

    我认为它仍然是以下 2 个原因中的一个原因,为什么它不起作用:

    1. 配置更改不完整/不正确、和/或不适用于生成的代码

    2. 设备树缺少 ospi0 和/或任何直接相关节点上的`bootph-all;`属性。

    如果您要使用 JTAG、调试会容易得多。

    此致、Andreas

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

    您好、

    我可以启动 uboot、我想在 uboot 下使用 nand 命令、但我发现 CONFIG_CMD_NAND 和 CONFIG_NAND_OMAP-LGPMC 之间存在依赖关系、但我没有 GPMC NAND、这阻止了我在 uboot 阶段使用 nand 命令。

    void board_nand_init(void)
    {
    	struct udevice *dev;
    	int ret;
    
    #ifdef CONFIG_NAND_OMAP_ELM
    	ret = uclass_get_device_by_driver(UCLASS_MTD,
    					  DM_DRIVER_GET(gpmc_elm), &dev);
    	if (ret && ret != -ENODEV) {
    		pr_err("%s: Failed to get ELM device: %d\n", __func__, ret);
    		return;
    	}
    #endif
    
    	ret = uclass_get_device_by_driver(UCLASS_MTD,
    					  DM_DRIVER_GET(gpmc_nand), &dev);
    	if (ret && ret != -ENODEV)
    		pr_err("%s: Failed to get GPMC device: %d\n", __func__, ret);
    }
    
    #else
    
    int board_nand_init(struct nand_chip *nand)
    {
    	return gpmc_nand_init(nand, (void __iomem *)CFG_SYS_NAND_BASE);
    }
    

    此命令似乎不适用于 SPI NAND、而是适用于 GPMC NAND。 那么、当使用 SPI nand 启动时、如何加载 nand 中的内核和设备树?

    这是我的 defconfig、我想按此编译 CONFIG_CMD_NAND。同时、我无法删除 SPI 配置、否则无法启动配置。

    CONFIG_ARM=y
    CONFIG_ARM_SMCCC=y
    CONFIG_ARCH_K3=y
    CONFIG_TEXT_BASE=0x84000000
    CONFIG_SYS_MALLOC_LEN=0x2000000
    CONFIG_SYS_MALLOC_F_LEN=0x8000
    CONFIG_TI_COMMON_CMD_OPTIONS=y
    CONFIG_SPL_GPIO=y
    CONFIG_SPL_LIBCOMMON_SUPPORT=y
    CONFIG_SPL_LIBGENERIC_SUPPORT=y
    CONFIG_SOC_K3_AM62L3=y
    CONFIG_TARGET_AM62L3_EVM=y
    CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
    CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x82b80000
    CONFIG_SF_DEFAULT_SPEED=25000000
    CONFIG_SF_DEFAULT_MODE=0
    CONFIG_DM_GPIO=y
    CONFIG_SPL_DM_SPI=y
    CONFIG_DEFAULT_DEVICE_TREE="ti/k3-am62l3-evm"
    CONFIG_OF_LIBFDT_OVERLAY=y
    CONFIG_DM_RESET=y
    CONFIG_SPL_MMC=y
    CONFIG_SPL_SERIAL=y
    CONFIG_SPL_STACK_R_ADDR=0x85000000
    CONFIG_SPL_TEXT_BASE=0x82000000
    CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
    CONFIG_SPL_BSS_START_ADDR=0x82c80000
    CONFIG_SPL_BSS_MAX_SIZE=0x80000
    CONFIG_SPL_STACK_R=y
    CONFIG_SYS_BOOTM_LEN=0x800000
    CONFIG_SYS_LOAD_ADDR=0x84000000
    CONFIG_SPL_SIZE_LIMIT=0x50000
    CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x800
    CONFIG_SPL_FS_FAT=y
    CONFIG_SPL_LIBDISK_SUPPORT=y
    CONFIG_SPL_SPI_FLASH_SUPPORT=y
    CONFIG_SPL_SPI=y
    # CONFIG_PSCI_RESET is not set
    # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
    CONFIG_EFI_SET_TIME=y
    CONFIG_SPL_LOAD_FIT=y
    CONFIG_SPL_LOAD_FIT_ADDRESS=0x83000000
    CONFIG_BOOTSTD_FULL=y
    CONFIG_BOARD_LATE_INIT=y
    CONFIG_SPL_MAX_SIZE=0x58000
    CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y
    # CONFIG_SPL_BINMAN_SYMBOLS is not set
    CONFIG_SPL_SYS_MALLOC_SIMPLE=y
    CONFIG_SPL_DMA=y
    CONFIG_SPL_ENV_SUPPORT=y
    CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img"
    CONFIG_SPL_I2C=y
    CONFIG_SPL_DM_MAILBOX=y
    CONFIG_SPL_MTD=y
    CONFIG_SPL_MTD_LOAD=y
    CONFIG_SPL_NAND_SPI_SUPPORT=y
    CONFIG_SPL_DM_SPI_FLASH=y
    CONFIG_SPL_POWER_DOMAIN=y
    # CONFIG_SPL_SPI_FLASH_TINY is not set
    CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
    CONFIG_SPL_SPI_LOAD=y
    CONFIG_SYS_SPI_U_BOOT_OFFS=0x2C0000
    CONFIG_SPL_THERMAL=y
    CONFIG_SPL_YMODEM_SUPPORT=y
    CONFIG_CMD_BOOTEFI_SELFTEST=y
    CONFIG_CMD_NVEDIT_EFI=y
    CONFIG_CMD_FUSE=y
    CONFIG_CMD_FUSE_WRITEBUFF=y
    CONFIG_MMC_SPEED_MODE_SET=y
    CONFIG_CMD_MTD=y
    CONFIG_CMD_EFIDEBUG=y
    CONFIG_CMD_MTDPARTS=y
    CONFIG_OF_CONTROL=y
    CONFIG_SPL_OF_CONTROL=y
    CONFIG_MULTI_DTB_FIT=y
    CONFIG_SPL_MULTI_DTB_FIT=y
    CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
    CONFIG_NET_RANDOM_ETHADDR=y
    CONFIG_SPL_DM=y
    CONFIG_SPL_DM_DEVICE_REMOVE=y
    CONFIG_SPL_DM_SEQ_ALIAS=y
    CONFIG_REGMAP=y
    CONFIG_SPL_REGMAP=y
    CONFIG_SPL_OF_TRANSLATE=y
    CONFIG_CLK=y
    CONFIG_SPL_CLK=y
    CONFIG_DFU_MTD=y
    CONFIG_DFU_SF=y
    CONFIG_DMA_CHANNELS=y
    CONFIG_TI_K3_UDMA_AM62L=y
    CONFIG_SPL_DM_GPIO_LOOKUP_LABEL=y
    CONFIG_DA8XX_GPIO=y
    CONFIG_DM_PCA953X=y
    CONFIG_SPL_DM_PCA953X=y
    CONFIG_DM_I2C=y
    CONFIG_SYS_I2C_OMAP24XX=y
    CONFIG_DM_MAILBOX=y
    CONFIG_K3_SEC_PROXY=y
    CONFIG_K3_FUSE=y
    CONFIG_SUPPORT_EMMC_BOOT=y
    CONFIG_MMC_IO_VOLTAGE=y
    CONFIG_SPL_MMC_IO_VOLTAGE=y
    CONFIG_MMC_UHS_SUPPORT=y
    CONFIG_SPL_MMC_UHS_SUPPORT=y
    CONFIG_MMC_HS200_SUPPORT=y
    CONFIG_SPL_MMC_HS200_SUPPORT=y
    CONFIG_MMC_SDHCI=y
    CONFIG_MMC_SDHCI_ADMA=y
    CONFIG_SPL_MMC_SDHCI_ADMA=y
    CONFIG_MMC_SDHCI_AM654=y
    CONFIG_MTD=y
    CONFIG_DM_MTD=y
    CONFIG_MTD_SPI_NAND=y
    CONFIG_DM_SPI_FLASH=y
    CONFIG_SPI_FLASH_SFDP_SUPPORT=y
    CONFIG_SPI_FLASH_SOFT_RESET=y
    CONFIG_SPI_FLASH_SOFT_RESET_ON_BOOT=y
    CONFIG_SPI_FLASH_SPANSION=y
    CONFIG_SPI_FLASH_S28HX_T=y
    CONFIG_SPI_FLASH_STMICRO=y
    CONFIG_SPI_FLASH_MT35XU=y
    CONFIG_PHY_TI_DP83867=y
    CONFIG_PHY_FIXED=y
    CONFIG_TI_AM65_CPSW_NUSS=y
    CONFIG_PHY=y
    CONFIG_PINCTRL=y
    CONFIG_SPL_PINCTRL=y
    CONFIG_PINCTRL_SINGLE=y
    CONFIG_POWER_DOMAIN=y
    CONFIG_DM_REGULATOR=y
    CONFIG_SPL_DM_REGULATOR=y
    CONFIG_DM_REGULATOR_FIXED=y
    CONFIG_SPL_DM_REGULATOR_FIXED=y
    CONFIG_DM_RTC=y
    CONFIG_RTC_EMULATION=y
    CONFIG_DM_SERIAL=y
    CONFIG_SOC_DEVICE=y
    CONFIG_SOC_DEVICE_TI_K3=y
    CONFIG_SOC_TI=y
    CONFIG_SPI=y
    CONFIG_DM_SPI=y
    CONFIG_CADENCE_QSPI=y
    CONFIG_CADENCE_QSPI_PHY=y
    CONFIG_SYSRESET=y
    CONFIG_SPL_SYSRESET=y
    CONFIG_DM_THERMAL=y
    CONFIG_FS_FAT_MAX_CLUSTSIZE=16384
    CONFIG_SYS_MEM_TOP_HIDE=0x03800000
    CONFIG_SYS_MTD_U_BOOT_OFFS=0x2C0000
    CONFIG_CMD_NAND=y
    CONFIG_MTD_RAW_NAND=y
    
    #include <configs/am62x_a53_usbdfu.config>
    

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

    您好、

    在 defconfig 中添加以下配置后、可以编译 nand 命令、但必须关闭 CONFIG_SPL_MTD_LOAD。 如果启用该功能、编译将报告错误。 QSPI NAND 启动需要 CONFIG_SPL_MTD_LOAD。 将其关断后、无法启动 QSPI NAND。 为什么会发生冲突?

    +CONFIG_CMD_NAND=y
    +CONFIG_MTD_RAW_NAND=y
    +CONFIG_NAND_OMAP_GPMC=y
    +CONFIG_SYS_NAND_PAGE_SIZE=0x1000
    +CONFIG_SYS_NAND_OOBSIZE=0x100
    +CONFIG_SYS_NAND_BLOCK_SIZE=0x40000
    +CONFIG_SPL_NAND_SUPPORT=y
    +# CONFIG_SPL_NAND_AM33XX_BCH is not set
    +CONFIG_SYS_NAND_U_BOOT_OFFS=0x2C0000
    +CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
    +CONFIG_ENV_SIZE=0x20000
    +CONFIG_SPL_NAND_DRIVERS=y
    +CONFIG_SPL_NAND_ECC=y
    +CONFIG_SPL_NAND_BASE=y
    +CONFIG_SPL_NAND_IDENT=y
    +CONFIG_TI_GPMC=y
    +CONFIG_MEMORY=y
    +CONFIG_SPL_MEMORY=y
    +
    +CONFIG_SPL_MTD_LOAD=n
    +CONFIG_SPL_THERMAL=n

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

    我发现了这个问题的原因,事实证明 SPI 的大小是有限的。 为了不超过 SPL 指定的大小、可以“#include 是否要在 am62lx_evm_defconfig 中删除?

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

    QSPI NAND 引导已成功、谢谢!

    但是有一个问题、在 u-boot 下、nand cmd 不能用于 QSPI NAND。

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