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.

[参考译文] AM4378:AM437x QSPI 引导需要 5–6 秒的时间才能启动 U-Boot

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1646535/am4378-am437x-qspi-boot-takes-5-6-seconds-before-u-boot-starts

器件型号: AM4378

我目前正在 AM437x 平台上进行 U-Boot 迁移。 我正在从旧的 U-Boot (2013) 版本移植到最新版本。 我使用了 SDK “ti-processor-sdk-linux-AM437X-evm-11.02.05.02-linux-x86-Install.bin“。

 

我尝试从 QSPI 引导。 但是、使用旧的 U-Boot (2013)、引导过程会在开机后立即启动。 对于当前要移植的新 U-Boot、系统会显示引导日志、引导过程仅在上电后大约 5-6 秒后启动。

 

是否有任何方法可以检查启动延迟发生的位置?

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

    尊敬的 Kim:

    您能否检查从 SD 引导(使用最新的 U-boot)初始化需要多长时间?

    此致、
    Vinu

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

    您好、

    从 SD 卡引导时、引导过程在 1 秒内开始。

    此致、

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

    尊敬的 Kim:

    您是否可以尝试设置早期(调试)UART、并尝试添加调试打印/死循环来识别延迟?

    请参阅  https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/11_02_05_02/exports/docs/linux/How_to_Guides/uart/U-Boot.html#u-boot-bringup-debug-tips 的早期设置(调试)Board_Port

    您是否能够在定制电路板中通过 CCS 进行调试?

    此致、
    Vinu

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

    您好、

    我无法使用 CCS、因为我的定制电路板没有 JTAG 端口。

    所以,我尝试使用'pringf'打印日志,但没有出现任何结果。

    此致、

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

    尊敬的 Kim:

    [引用 userid=“617706“ url=“~/support/processors-group/processors/f/processors-forum/1646535/am4378-am437x-qspi-boot-takes-5-6-seconds-before-u-boot-starts/6351648

    所以,我尝试使用'pringf'打印日志,但没有出现任何结果。

    [/报价]

    是否在启用了调试 UART 的情况下实现?

    此致、
    Vinu

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

    您好、

    是的、我现在使用的是 UART0 端口。

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

    尊敬的 Kim:

    您是否从调试 UART 获得了任何信息? 不是最初、但后来、当它在延迟后启动时?

    此致、
    Vinu

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

    您好、

    5-6 秒内没有日志输出、然后显示引导日志、如下所示。

    U-Boot 2025.01-ga44465cad8a3-dirty (May 14 2026 - 17:39:04 +0900)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x BASE
    DRAM:  512 MiB
    Core:  29 devices, 12 uclasses, devicetree: fit
    PMIC:  TPS65218
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from SPIFlash... SF: Detected s25fl128s with page size 256 Bytes, erase size 64 KiB, total 16 MiB
    OK
    Net:   eth2: ethernet@4a100000
    Hit any key to stop autoboot:  0
    

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

    尊敬的 Kim:

    可能未启用调试 UART。

    共享一个补丁以在 AM437x EVM 中启用调试 UART。  

    e2e.ti.com/.../debug_5F00_uart_5F00_patch.txt

    它应打印以下内容

    e2e.ti.com/.../debug_5F00_uart_5F00_enabled_5F00_sd_5F00_card_5F00_bootlog.txt

    请在 SD 和 eMMC 上尝试这种方法并捕获延时时间。

    此外、我已经在 EVM 上测试了它、 第一次打印的速度将达到~1 Sec(使用/不使用调试 UART)。

    您能否共享 QSPI 的引导模式引脚配置?


    此致、
    Vinu

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

    您好、

    感谢您的支持。

    我已 尝试启用调试日志、但显示的日志 如下所示。

    <debug_uart>

    仅在 显示后、不再出现任何日志、u-boot 无法引导。

    我试图找到原因,但最终我找不到它。

    e2e.ti.com/.../3731.config.zip

    我附上了.config 文件。

    您能帮我找到原因吗?

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

    尊敬的 Kim:

    仅 显示后、不会再显示日志、u-boot 无法引导。

    SD 和 QSPI 是否都是如此? 您是否添加了修补程序中提供的其它打印件之外的其它打印件?

    此致、
    Vinu

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

    您好、  

    它仅适用于 QSPI。  

    void board_init_f(ulong dummy)
    {
        printf("board init test";

    我在 board_init_f 中添加了类似这样的打印件。

    我将对其进行大约一周的测试并分享结果。

    此致、

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

    尊敬的 Kim:

    在我共享的补丁中、已经有一个在 SD 中工作的调试打印。 (请参阅日志)

    检查它是否适用于 QSPI 和 SD。 若要了解何时调用 board_init_f、这应该就足够了。
    我们还注意到、如果添加额外的打印件、电路板会卡住。

    此致、
    Vinu

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

    尊敬的 Kim:

    我已经弄清楚了调试 UART 挂起原因。

    启用调试 UART 后、debug_uart_init ( )/board_debug_uart_init () 将在 board_init_f () 之前调用。
    但是在 board_init_f() 内、eary_system_init() 再次调用 uart_soft_reset ()。

    这将复位 UART、因此它可能会卡在无限繁忙的循环中等待 TX FIFO 就绪位。

    要解决此问题、可以 在 eary_system_init() 调用之后添加 debug_uart_init() 调用。

    补丁 arch/arm/mach-OMAP2/am33xx/board.c

     void board_init_f(ulong dummy)
     {
     	hw_data_init();
     	early_system_init();
    +#ifdef CONFIG_DEBUG_UART_BOARD_INIT
    +	debug_uart_init(); // To reinitialise the debug UART
    +#endif
     	board_early_init_f();
     	sdram_init();
     	/* dram_init must store complete ramsize in gd->ram_size */
    	gd->ram_size = get_ram_size(
    			(void *)CFG_SYS_SDRAM_BASE,
    			CFG_MAX_RAM_BANK_SIZE);
    }

    这样、调试 UART 将不再卡住。

    此致、
    Vinu

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

    您好、

    感谢您的支持。

    我会尝试您提供的建议并与您分享结果。

    再次感谢。

    此致、

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

    您好、

    e2e.ti.com/.../2055.config.zip

    我按照您的建议修改了它、并再次尝试引导、但仍然无法引导。

    接通电源后 、打印出来、就没有进一步的响应了。

    这是用于参考的.config 文件。

    我尝试了几件事,但什么都不起作用。

    此致、

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

    尊敬的 Kim:  

    您可以共享 board.c diff 吗?

    此外、请检查是否在使用 SD 引导时观察到相同的行为。

    此致、
    Vinu