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.

[参考译文] Linux/AM4376:SD 卡引导失败

Guru**** 2609895 points
Other Parts Discussed in Thread: AM4376

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/584530/linux-am4376-sd-card-boot-fails

器件型号:AM4376

工具/软件:Linux

您好!

使用 am4376处理器启动定制板时出现问题。

问题说明:电路板配置为 SDcard 引导(mmc1),但 uboot-spl 中没有控制台。

1)配置 Sysbootpins (配置为以 UART 开头时、显示"c"字符)

2) SDcard (内含 MLO 文件)引导正常:跟踪向量为(32位,MSB 优先)

0000000100000000000010011110
00000000000000010000000000000
00000000000000000000000000000000000000100000
00000010000000000001111000000000
0000000000000000000000000000000000000000000000000000

如 TRM 中所述:

MMC 卡处于就绪状态(CMD1完成)
从 MMC 卡读取的存储器引导数据
存储器引导-找到 USB_MS/MMC 主引导记录
存储器引导-找到 USB_MS/MMC 活动分区

但未找到 MLO!

3) 3) am4376 gp EVM 板通过控制台显示屏以相同的 MLO 引导。

4)使用 CCS6进行 JTAG 调试显示、在无限循环(在 FIQ 函数中)上挂起之前的引导过程为:

_start()-> reset ()-> save-boot-params ()-> save-boot-params-ret ()-> cpu-init-cp15 ()-> cpu-init-crt-()->_main ()-> board_init_f_alloc_reserve ()-> board_gd_f_init_prue_prue-prue-(-> board_init_prit_prit_prue_prue-prue_prue_prue_prue_prue_prue-(->)-> se-init_prit_prue_prue_prue_reloc_prue_prue_prue_pru

5) 5)我们的定制板使用未配置的 LPDDR2 RAM、这肯定是问题的一部分。 但我们的定制板通过 EVM 板(采用 EVM DRAM 配置)提供的 SD 卡引导(显示 spl 引导消息)。 如何在外部 DRAM 初始化之前配置 uboot-spl to printf 消息

感谢你的帮助。

Yvan

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

    您使用的是哪种 Linux 版本? 您是如何构建的? 您是如何创建 SD 卡的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 SDK 03.02.00.05中的 Linux 4.32和 uboot 2016.05
    我正在使用 buildroot 来生成引导文件。
    使用在 ti wiki 中找到的脚本创建 sdcard。

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

    您是否尝试使用顶级 makefile (?)构建 u-boot:
    cd ~/ti-processor-sdk-linux-AM437X-EVM-03.02.00.05
    x0155517@~ MMS:μ C/ti-processor-sdk-linux-am437x-evm-03.02.00.05$实现 u-boot

    然后在您的 sdcard 引导分区上复制生成的 mLO 和 u-boot.img。 上述命令可确保使用正确的 defconfig 和工具链。

    另外、我对您的最后一个问题感到困惑:
    [引用] 5)我们的定制板使用未配置的 LPDDR2 RAM、这肯定是问题的一部分。 但我们的定制板通过 EVM 板(采用 EVM DRAM 配置)提供的 SD 卡引导(显示 spl 引导消息)。 [/报价]

    哪个 u-boot 版本可引导您的定制板?

    您应该确保 u-boot 包含正确的 DDR 配置、以便引导电路板。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!
    借助由顶级 makefile 生成的 MLO、我们的定制板可显示"c"字符并停止。
    使用 spl 消息引导 EVM 板。

    您能否确认 pls,spl 首先显示在 uart0上,然后配置外部 ram?

    我们的行为与 e2e.ti.com/.../503918相同
    但我们不使用 RTC。
    热复位由 PMIC_PGOOD 信号驱动(设置为"1")。

    NNmi 信号(PMIC_Nint 驱动的信号保持为"0")。
    感谢你的帮助
    Yvan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yvan、您好!

    [报价]您能否确认 Pl、SPL 首先显示在 uart0上、然后配置外部 RAM? [/报价]

    您可以在此处看到引导加载程序阶段:
    omappedia.org/.../Bootloader_Project

    您可以在此处看到 u-boot 启动顺序:
    www.denx.de/.../U-Boot_startup_sequence.pdf
    存储器配置应该是 MLO 首先执行的操作之一、但实际的第一行"U-Boot 2016.05-00118-gabc6b2a-niDirty (2017年3月24日- 17:09:42 +0200)"来自 preloader_console_ram ()、它是初始化之前的内容。

    [引用]使用由顶级 makefile 生成的 MLO、我们的定制板会显示"c"字符并停止。
    'CCC'字符表示您的器件尝试从 UART 引导。 这可能会发生:
    1.由于错误的 sysboot 设置(设备实际需要 UART 引导)
    2.该器件未找到有效的引导加载程序并跳至下一个引导外设。

    此致、
    Yordan