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.

[参考译文] AM4376:CAN't 从 QSPI 闪存启动

Guru**** 2782625 points

Other Parts Discussed in Thread: AM4376

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1614200/am4376-can-t-bootup-from-qspi-flash

器件型号: AM4376

尊敬的 TI 团队:

我们正在使用元件 AM4376、并将下面的问题阻止我们的测试和工程、能否帮助您了解一下、谢谢。

演示默认启动是 MMC0 (Micro SD)、我们的工程要求从闪存开始。 我们根据 SDK 指南将版本烧录到闪存、但无法启动。

BR、

Bijian Chen

 

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

    您好、Bijan Chen、

    感谢您的查询!

    您能帮助我更详细地了解 用于引导的 AM4376 I/O 接口吗?

    我知道 microSD 卡上有 SDK 引导加载程序和操作系统映像、该卡在 MMC0 端口映射。 一些闪存加载程序用于将映像写入外部闪存。

    问题 1: 您是否要指定 SDK 的类型/版本 — MCU PLUS 或 Linux SDK?

    问题 2: 您是否在非 SD 卡引导模式(例如在 UART 中)下成功引导 AM4376 ROM 代码?  

    问题 3 如果对 Q2 的答复是肯定的、您是否验证了刻录到 Q-SPI 闪存上的引导映像? 您是否确定可以正确读取和写入 Q-SPI 闪存?  

    问题 3 这意味着什么 — 系统无法启动? 是否有任何硬件活动指示 — LED 亮起、闪烁。 UART 控制台上是否绝对没有打印消息?

    问题 6. 如果问题 2 回答为否、您是否确保所有电源均存在并按照 AM437x 数据表建议的通电顺序打开?

    期待您的反馈!

    谢谢

    此致

    Anastas Yordanov

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

    我在 AM4378-SK 板上同样使用了 Linux SDK11.2 和 6.3、也无法从 QSPI NOR 闪存引导

    #1。 使用 am43xx_evm_qspiboot_defconfig 构建 u-boot.bin

    #2. 根据用户指南: https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/11_02_05_02/exports/docs/linux/QSPI/U-Boot/UG-QSPI.html 刷写 QSPI 闪存 Foundational_Components

    => mmc rescan
    =>
    => fatload mmc 0 ${loadaddr} u-boot.bin
    759824 bytes read in 43 ms (16.9 MiB/s)
    => sf probe 0
    SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    => sf erase 0x0 0x100000
    SF: 1048576 bytes @ 0x0 Erased: OK
    => sf write ${loadaddr} 0x0 ${filesize}
    device 0 offset 0x0, size 0xb9810
    SF: 759824 bytes @ 0x0 Written: OK
    =>

    #3. 关闭板电源、移除 SD 卡、再次上电、UART 无输出。

    #4. 已在列表中选中引导模式具有 QSPI。

    Root@AM437X-EVM:~# devmem2 0x44e10040
    /dev/mem 已打开。
    存储器映射在地址 0xb6f6e000 处。
    在地址 0x44E10040 (0xb6f6e040) 读取:0x02400338

    #5. 从用户指南 uboot 部分来看、QSPI 引导仅由 IDK 板支持、是否有原因?

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

    我开发了 AM437x IDK、可以使用相同的 u-boot.bin 文件引导

    U-Boot 2019.01-ga764a508fd-dirty (Feb 11 2026 - 16:46:24 +0800)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x Industrial Development Kit
    DRAM:  1 GiB
    PMIC:  TPS62362
    MMC:   OMAP SD/MMC: 0
    Loading Environment from SPI Flash... SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    *** Warning - bad CRC, using default environment
    
    Net:
    Warning: ethernet@4a100000 using MAC address from ROM
    eth0: ethernet@4a100000
    Hit any key to stop autoboot:  0
    MMC: no card present
    MMC: no card present
    MMC: no card present
    MMC: no card present
    starting USB...
    USB0:   Register 2000440 NbrPorts 2
    Starting the controller
    USB XHCI 1.00
    scanning bus 0 for devices... 1 USB Device(s) found
    usb - USB sub-system
    
    Usage:
    usb start - start (scan) USB controller
    usb reset - reset (rescan) USB controller
    usb stop [f] - stop USB [f]=force stop
    usb tree - show USB device tree
    usb info [dev] - show available USB devices
    usb test [dev] [port] [mode] - set USB 2.0 test mode
        (specify port 0 to indicate the device's upstream port)
        Available modes: J, K, S[E0_NAK], P[acket], F[orce_Enable]
    
    =>

    为了仔细检查、我重新刷写了 SDK11.2 uboot.bin、仍然可以引导。

    U-Boot 2025.01-ga44465cad8a3 (Feb 11 2026 - 16:26:26 +0800)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x Industrial Development Kit
    DRAM:  1 GiB
    Core:  25 devices, 12 uclasses, devicetree: fit
    PMIC:  TPS62362
    MMC:   OMAP SD/MMC: 0
    Loading Environment from SPIFlash... SF: Detected mx66l51235l with page size 256 Bytes, erase size 64 KiB, total 64 MiB
    *** Warning - bad CRC, using default environment
    
    Net:   eth2: ethernet@4a100000
    Hit any key to stop autoboot:  0
    MMC: no card present
    ** Bad device specification mmc 0 **
    MMC: no card present
    starting USB...
    No USB controllers found
    USB is stopped. Please issue 'usb start' first.
    ## Error: "bootcmd_nand0" not defined
    starting USB...
    No USB controllers found
    ethernet@4a100000 Waiting for PHY auto negotiation to complete.....

    IDK 板引导模式寄存器值:0x318、与 AM4378-SK 板引导模式设置没有明显不同。

    root@am437x-evm:~# devmem2 0x44e10040
    /dev/mem opened.
    Memory mapped at address 0xb6f59000.
    Read at address  0x44E10040 (0xb6f59040): 0x00400318
    root@am437x-evm:~#

    BTW。 接通电源后需要等待 29 秒才能获取 UBoot 日志输出。

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

    尊敬的 Tony:

    非常感谢两个 EVM 的传导测试 以及您在这里的输入。

    我检查了两个 EVM 是否包含相同的 QSPI MACRONIX MX66L51235FMI NOR 闪存。   

    从随附的 MLO + U-Boot 构建表中、我知道没有默认的 TI 配置来构建可以引导的 MLO + U-Boot 映像 支持 QSPI 从 AM437x 入门套件上的 AM437x ROM 代码。 只有 defconfig 文件用于仅针对 AM437x 工业套件构建 QSPI 可引导 MLO/U-Boot。   

    经测试的 SYSBOOT [4:0]配置为:

    以下是我根据您的完整 SYSBOOT 配置从 AM437x TRM 中编写的一些注释:

    “从地址 0x44E10040 (0xb6f6e040) 读取:0x02400338“->该转换为二进制的值为:

    0b0000 0010 0100 0000 0011 0011 1000

    [4:0]= 0b11000 ->引导列表序列 :MMC0->USB1->USB0->QSPI(问:在达到 QSPI 之前执行器件扫描的速度有多快?)

    [5]= 0b1 — 不用考虑

    [7:6]= 0b00 — 从闪存进行四路读取  (引导)(与 STS 位字段说明错位)+ 引脚多路复用选项 0

    注释: 所以我理解 MX66L51235FMI 的四路读取 QE 位必须是初始的 编程为 0b1、允许 ROM 在四通道模式下引导。

    您的入门套件是否有这种情况?

    [10:8]= 0b011 - GP 器件

    [15:11]=0b00000 — 保持在复位值 0h

    [16]= 0b0 - 8 位 GPMC 数据总线

    [17]= 0b0 — 忽略等待输入

    [19:18]= 0b00 — 无 GPMC 地址/数据多路复用

    [21:20]= 0b00 — 保留

    [23:22]= 0b01 - 24MHz — 选择系统时钟

    [24] SYSBOT16 = 0b0 -> USB0 (USB_CL)/USB1 (USB_MS) DP/DM 未交换

    [25] SYSBOOT17 = 0b1->CLKOUT1 信号在引脚:xdma_event_intr0 上选择  

    [26] SYSBOT18 = 0b0 ->不将 EXTCLK 路由到 CLKOUT2

    BTW。 插入电源后需要等待 29 秒才能获取 UBoot 日志输出。

    您是否检查了使用 SYSBOOT [4:0]的以下配置、可以更快地引导 U-boot?  

    让我咨询我们的 AM437x EVM/U-Boot 软件专家并跟进。

    Bijan Chen,

    请详细回答我的初始问题。

    谢谢

    此致

    Anastas Yordanov

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

    比较 SK 和 IDK 原理图、QSPI 闪存复位引脚未连接到 SK 板上、而是连接到 IDK 板上的 SYSTEM_RESET。 短接 SK 板上的 R12 和 U5 引脚 3、也可以从 QSPI 闪存启动。

    请记住:还需要等待 29 秒、以便从 UART 输出第一个日志。