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/AM5718:QSPI 引导失败(SPI 探测器失败)

Guru**** 2763595 points

Other Parts Discussed in Thread: AM5718, AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/758423/linux-am5718-qspi-boot-fail-spi-probe-failed

器件型号:AM5718
主题中讨论的其他器件: AM5728PMP

工具/软件:Linux

我有  个 AM5718定制板。 该板具有 QSPI 引导选项。
(0b000110:第一个器件 SD /第二个器件 QSPI_1)

我们在 Linux SDK 05.00.00.15的 u-boot 2018中使用了它

SPI 引导不能正常工作。 我们面临以下错误

下面是 QSPI 闪存启动故障日志。

U-Boot SPL 2018.01 (2018年12月26日- 15:52:46)
DRA722-GP ES2.0
尝试从 SPI 引导
无效总线0 (ERR=-19)
无法在0:0初始化 SPI 闪存(错误-19)
SPL:无法从所有引导设备引导
###错误###请重置电路板###

  

 

但是 、引导至 SD 卡后、使用 SF 探针时 SPI 闪存将正常工作。

下面是 SD 引导后的 SF 探测器日志。

U-Boot SPL 2018.01 (2018年12月26日- 11:16:35)
DRA722-GP ES2.0
尝试从 MMC1引导
默认模式下无 pinctrl 状态
默认模式下无 pinctrl 状态
***警告- CRC 错误,使用默认环境

正在读取 u-boot.img
正在读取 u-boot.img
正在读取 u-boot.img
正在读取 u-boot.img


U-Boot 2018.01 (2018年12月26日- 11:16:35 +0900)

CPU:DRA722-GP ES2.0
型号:TI AM5718 IDK
电路板:AM571x IDK REV
DRAM:1 GiB
MMC:OMAP SD/MMC:0、OMAP SD/MMC:1.
***警告- CRC 错误,使用默认环境

网络:
警告:以太网@48484000使用 ROM 中的 MAC 地址
eth0:以太网@48484000
按任意键停止自动引导:0
Hur-boot>
Hur-boot>SF 探头
SF:检测到 s25fl256s_64k、页大小为256字节、擦除大小为64 KiB、总共32 MIB、映射时间为5c000000

 

问: 为什么 SPL_SPI.c 中的 spl_spi_load_image 函数中的 SPI 探针失败?

/*
*将 U-Boot 映像从 SPI 闪存加载到 RAM 中
*
闪存= SPI_FLASH_PROBE (CONFIG_SF_DEFAULT_BUS、
CONFIG_SF_DEFAULT_CS、
CONFIG_SF_DEFAULT_SPEED、
CONFIG_SF_DEFAULT_MODE);
如果(!FLASH){
printf ("SPI 探测器失败。 总线:%d、CS:%d、速度:%d、模式:%d\n"、CONFIG_SF_DEFAULT_BUS、CONFIG_SF_DEFAULT_CS、 CONFIG_SF_DEFAULT_SPEED、CONFIG_SF_DEFAULT_MODE);
return -ENODEV;

此致、

John Kim。

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

    感谢你的答复。

    这是否意味着不支持 QSPI 引导?

    我在 AM 5728中使用了 QSPI 引导。  它工作正常。
    当前版本的 U-Boot 为何不支持 QSPI 引导?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    “我在 AM 5728中使用了 QSPI 引导。 它正常工作。"
    我想知道 AM5728 SDK 的开关版本、您通常使用 QSPI 引导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QSPI 引导正常工作的 u-boot 版本是 u-boot-2016.05版本。

    U-boot: U-boot-2016.05+gitAUTOINC+2f757e5b2c-g2f757e5b2c

    PDK: TI-processor-sdk-linux-rt-am57xx-evm-03.01.00.06

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是哪款处理器 SDK Linux?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用了以下版本的 Linux SDK。

    PDK:TI-processor-sdk-linux-rt-am57xx-evm-03.01.00.06
    U-boot:U-boot-2016.05+gitAUTOINC+2f757e5b2c-g2f757e5b2c
    Linux:linux-rt-4.4.4.19+gitAUTOINC+f572d285f0-gf572d285f0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议使用 JTAG 进行连接、并将工作用例中的 QSPI 引脚多路复用寄存器与故障用例进行比较。 此外、您是否尝试减慢总线速度? 尝试将其减速(如1-10 MHz)、以查看该问题是否可以"修复"。 这将是帮助我们缩小问题范围的良好线索。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在1MHz 至10MHz 之间缓慢尝试、但问题未得到解决。

    根据以下链接、AM57xx 是否不支持 QSPI 引导?
    e2e.ti.com/.../743093
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yohan、

    错误消息 Invalid bus 0 (err=-19) is caused by unsuccessful initialization of SPI device (搜索 SPI 设备失败)。 有关进一步调试、请参阅./u-boot/drivers/core/uclass.c 文件中的 uclass_get_device_By_Seq 函数。

    您可以调试 SPI 初始化以在./u-boot/common/spi/spi.c 文件中搜索一些错误。 请启用调试日志、以便我们能够更深入地了解故障发生的原因。

    此外、查看 u-boot 用户指南、默认情况下、AM571x IDK 板不支持 QSPI 引导。 您可以检查如何在 DRA7x EVM 中实现 QSPI 引导(检查 u-boot 源码、dra7xx_EVM_defconfig)并与 AM571x u-boot 进行比较。 另请参阅以下用户指南:

    processors.wiki.ti.com/index.php/Processor_SDK_Linux_Automotive_Software_Developers_Guide#Using_QSPI_Boot

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

    您好、Pavel、

    下面是启用调试的日志内容。

    U-Boot SPL 2018.01 (2019年1月2日- 10:46:46)
    DRA722-GP ES2.0
    omap24_i2c_findpsc:速度[kHz]:100 PSC:0x17 sscl:0xd ssch:0xF
    尝试从 SPI 引导
    malloc_Simple:size=e、ptr = 36、limit=100000:81f00028
    uclass_find_device_By_Seq:0 0
    --1'QSPI@4b300000'
    -未找到
    uclass_find_device_By_Seq:1 0
    --1'QSPI@4b300000'
    -未找到
    无效总线0 (ERR=-19)
    SPI 探测失败。 总线:0、CS:0、速度:76800000、模式:0
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###

    此致、

    John

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

    [引用 user="Yohan Kim"]我尝试从1 MHz 到10 MHz 的频率较慢,但问题没有得到解决。

    是否观察到总线上有活动?  它是否处于预期频率?  您可以看到发生了什么情况、即两个方向都有任何数据传输?  如果我们看到界面上发生了什么、可能会给我们提供有关潜在问题的重要提示。

    [引用 user="Yohan Kim">根据以下链接、AM57xx 是否不支持 QSPI 引导?
    e2e.ti.com/.../743093

    这意味着它不是我们的 Processor SDK Linux 发行版官方支持的功能。  但是、我看到其他客户都在使用它、因此我知道它是可行的。  这只是一个判断系统中发生了什么情况的问题。

    在我们深入了解之前、引脚多路复用寄存器将是一个良好的开端。  我会使频率保持较低(10MHz)、直到我们开始工作。  一旦功能正常、您可以在稍后加快速度。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    AM5718 IDK 中也会出现此问题。
    请告诉我可能的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在等待您的回答。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yohan、

    让我总结一下我们目前的情况:
    -您正在尝试在 QSPI_1模式下从 QSPI 引导。 您可以加载 SPL、但流程在加载 u-boot 级挂起
    -您正在使用 PSDK 5.00。 使用 PSDK 3.01时、可以从 QSPI_1顺利引导
    -您使用的是 AM571x IDK 和定制板,它们都无法从 PSDK 5.00中的 QSPI 引导

    我建议您查看以下内容:

    1.QSPI pinmux -确保在 u-boot/board/ti/am57xx/mux_data.h 文件中具有正确的 QSPI pinmux、structure core_padconf_array_essal_am571x_idk[]。 您可以比较 PSDK 5.00和 PSDK 3.01之间的 QSPI 引脚多路复用器

    2.确保在 defconfig 文件中具有以下配置:

    CONFIG_SPL_SPI_FLASH_support=y
    CONFIG_SPL_SPI_SUPPT=y
    CONFIG_DM_SPI_FLASH=y
    CONFIG_SPI_FLASH=y
    CONFIG_SPI_FLASH_bar=y
    CONFIG_SPI_FLASH_Spansion=y
    CONFIG_DM_SPI=y
    CONFIG_TI_QSPI=y

    您可以比较 PSDK 5.00和 PSD 3.01之间的 defconfig 文件(即 am57xx_EVM_defconfig)

    3.确保在 am57xx-idk-common.dtsi 文件中启用 QSPI1模块。 您可以在 PSDK 5.00和 PSDK 3.01之间比较该文件

    4.在 SPL 级进行 QSPI 寄存器转储、并比较 PSDK 5.00和 PSDK 3.01之间的寄存器设置

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

    您是否具有 CCS 的 JTAG 调试功能? 如果是、有一些调试脚本可以帮助我们识别问题:

    git.ti.com/.../master

    首先、请查看自述文件、了解如何使用脚本的一般说明。 请压缩输出文件并从以下3种情况中附加它们:

    1.启动错误后,请运行 am57xx-boot.dss。
    2.启动错误后,运行 am57xx-pinmux.dss。
    3.正常启动后,暂停 u-boot (即按键停止启动),然后运行 am57xx-pinmux.dss。

    对于两个引脚多路复用相关文件、请指明哪一个对应于哪种情况。

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

    感谢你的答复。

    1.启动错误后,请运行 am57xx-boot.dss

    e2e.ti.com/.../am57xx_2D00_boot_5F00_2019_2D00_01_2D00_10_5F00_094525.txt

    2 ~3: am57xx-pinmux.dss。 找不到文件。  我可以用 am57xx-padconf.dss 替换它吗?

    2: 启动错误后、运行 am57xx-padconf.dss

    e2e.ti.com/.../am57xx_2D00_padconf_5F00_2019_2D00_01_2D00_10_5F00_101900.txt

      3.启动良好后,运行 am57xx-padconf.dss

    e2e.ti.com/.../am57xx_2D00_padconf_5F00_2019_2D00_01_2D00_10_5F00_102249.txt

    此致、

    John

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

    我将1与3进行了比较、但结果都是一样的。

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

    John、

    很抱歉、脚本命名有任何混淆。  是的、am57xx-padconf.dss 脚本是要运行的正确脚本。  这是一个全新的脚本、可帮助诊断问题、在我发布到您运行它的时间之间、对命名和目录结构进行了一些小的更新!

    我对良好/不良 RD1文件进行了比较、它们是相同的。  因此、无论它有何不同、看起来都不与引脚多路复用相关。  但是、我应该注意到、此时脚本不会查看手动 I/O 配置。  它可能应该。  您能否发布 mux_data.h 文件、以便我查看这些结构?

    您是否能够在电路板上放置一个示波器、以便在好的和坏的情况下查看 QSPI 接口?  我想知道频率、信号完整性等是否存在任何差异

    Brad

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

    Brad、您好!

    下面是我的 pimux 代码。

    // QSPI Pinmux M1是 QSPI

    {GPMC_A18、(M1 | PIN_OUTPUT | MANUAL_MODE)}、// GPMC_A18.qspi1_SCLK *

    {GPMC_A13、(M1 | PIN_INPUT | MANUAL_MODE)}、// GPMC_A13.qspi1_rtclk *

    {GPMC_CS2、(M1 | PIN_OUTPUT | MANUAL_MODE)}、// GPMC_CS2.qspi1_cs0 *

    {GPMC_A16、(M1 | PIN_INPUT_PULLUP | MANUAL_MODE)}、// GPMC_A16.qspi1_d0 *

    {GPMC_A17、(M1 | PIN_INPUT_PULLUP | MANUAL_MODE)}、// GPMC_a17.qspi1_D1 *

    {GPMC_A14、(M1 | PIN_INPUT_PULLUP | MANUAL_MODE)}、// GPMC_A14.qspi1_D3 *

    {GPMC_A15、(M1 | PIN_INPUT_PULLUP | MANUAL_MODE)}、// GPMC_a15.qspi1_D2 *

    我将使用示波器检查 QSPI 的 CS、数据线。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还应该有另外一个具有手动模式时序的结构。 请提供这些信息吗? 或者也许缺乏这种结构是问题所在。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用示波器检查了 QSPI 的 CS、数据线。
    在 QSPI 的 CS 和数据线路中检测到变化。

    此外、在启动不良和启动良好的情况下、没有区别。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    附加我的 pinmux 文件。

    e2e.ti.com/.../3757.mux_5F00_data.h

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到了许多 iostree_cfg_Entry 结构。 您能否在软件中确认在运行时使用了 iodelay_cfg_array_am571x_idk[]结构来配置 I/O 模式? 此外、您能否在示波器上确认在加载 MLO 后 QSPI 在模式0下运行? 您能否发布示波器显示 QSPI 通信的图片(在 u-boot MLO 运行后、不是引导 ROM)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在您的软件中确认 iostree_cfg_array_am571x_idk[]结构在运行时用于配置 I/O 模式?
    我可以按如下所示检查 u-boot.map 文件。
    /u-boot.map:.rodata.iodelay_cfg_array_am571x_idk_4port
    /u-boot.map:.rodata.iodelay_cfg_array_am571x_idk
    /u-boot.map: 0x00008083af36 iodelay_cfg_array_am571x_idk
    /u-boot.sym:8083af36 g o .rodata0000010e iodelay_cfg_array_am571x_idk
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您不确定、我建议您单步执行代码或添加一些打印内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 board.c 中欺骗了 rechibrate_iodelay 功能
    我当然会使用 iodelay_cfg_array_am571x_idk。

    pconf = core_padconf_array_essal_am571x_idk;
    pconf_SZ = array_size (core_padconf_array_ess_am571x_idk);
    IOD = iodelay_cfg_array_am571x_idk;
    IOD_SZ = array_size (iodelay_cfg_array_am571x_idk);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有疑问

    如果 am57xx 系列不支持 QSPI 引导、此问题是否是硬件问题? 还是这是 S/W 问题?

    许多人希望引导 QSPI。
    但没有明显的解决方案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QSPI 引导作为芯片功能正常工作。 我不认为 QSPI 引导是"受支持"的、因为它是 Processor SDK Linux 的宣传和测试功能。 引导加载程序可以加载 MLO 这一事实表明 QSPI 引导没有问题。 此时、可能是 u-boot-spl 中的软件问题。

    在相关的注释中、引导 ROM 将 SPI 配置为模式3。 由于正在加载 MLO、因此看起来工作正常。 但是、您的代码正在尝试使用模式0。 也许您应该将配置更改为模式3以查看它是否更好。 AM571x QSPI 上的模式3不使用虚拟模式、因此您需要相应地更新结构。 为了使用模式3、您需要在器件树中更新 QSPI 配置、方法是添加 SPI-cpol 和 SPI-cpa 的 In 行。 我建议也降低时钟速度。

    总之、我建议的后续步骤是:
    1.将引脚复用和 SPI 配置更改为模式3。
    2.检查示波器以验证频率是否处于预期速度、模式3的极性是否正确。 请发布屏幕截图以进行确认。
    3.重新运行检查引脚多路复用的工具,以便我们验证模式3的多路复用模式是否正确(即没有手动模式)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我更改了 u-boot 中的 SPI 模式3。

    am57xx_evm.h ->#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3

    spi_flash.h -># define CONFIG_SF_DEFAULT_MODE SPI_MODE_3

      

    -------------------- 引导日志-------------------------------------------------------

    U-Boot SPL 2018.01 (2019年1月16日- 13:46:44)

    DRA722-GP ES2.0

    尝试从 SPI 引导

    无效总线0 (ERR=-19)

    SPI 探测失败。 总线:0、CS:0、速度:76800000、模式:3

    SPL:无法从所有引导设备引导

    ###错误###请重置电路板###

     

      

    下面是 QSPI 示波器屏幕截图。

    C1 (黄色):QSPI 时钟

    C2 (粉色):QSPI CS0

    C3 (蓝色):QSPI D0

    C4 (绿色):QSPI D1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我知道问题可能是什么。 我没有看到波形有什么问题、所以我回去再考虑一下您的原始症状。 我认为 u-boot 运行良好、但 SPL 不是很有趣。 请尝试将其添加到 u-boot 器件树:

    &QSPI{
    u-boot、dm-spl;


    为了使 u-boot 在 SPL 内使用"驱动器模型"(dm)驱动器、您需要这样做。 我认为这就是它适用于 u-boot 而不是 SPL 的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的更改如下。


    在 am57xx-idk-common.dtsi 中

    &QSPI{

    u-boot、dm-spl;
    状态="正常";

    SPI-max-frequency =<76800000>;
    m25p80@0{
    兼容="s25fl256s"、"SPI-flash";
    SPI-max-frequency =<76800000>;
    reg =<0>;
    SPI-TX-bus-width =<1>;
    SPI-Rx-bus-width =<4>;
    #address-cells =<1>;
    大小单元格=<1>;

    (笑声)
    (笑声)
    (笑声)


    问题没有解决。

     

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

    请将其添加到 include/configs/am57xx_evm.h (或您的电路板对应的头文件):

    定义的调试

    您应该从 u-boot 获得更详细的输出、这可能会提供一些线索、说明您遇到的问题类型。

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

    我在之前的答复中已经发布过这一点。

    ------------------------------------------------------
    2019年1月1日下午1:50
    对 Pavel Botev 的答复:

    您好、Pavel、

    下面是启用调试的日志内容。

    U-Boot SPL 2018.01 (2019年1月2日- 10:46:46)
    DRA722-GP ES2.0
    omap24_i2c_findpsc:速度[kHz]:100 PSC:0x17 sscl:0xd ssch:0xF
    尝试从 SPI 引导
    malloc_Simple:size=e、ptr = 36、limit=100000:81f00028
    uclass_find_device_By_Seq:0 0
    --1'QSPI@4b300000'
    -未找到
    uclass_find_device_By_Seq:1 0
    --1'QSPI@4b300000'
    -未找到
    无效总线0 (ERR=-19)
    SPI 探测失败。 总线:0、CS:0、速度:76800000、模式:0
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###
    ------------------------------------------------------

      

    下面是添加了"u-boot、dm-spl;"的日志内容。

    U-Boot SPL 2018.01-svn56 (2019年1月21日- 09:12:36)
    DRA722-GP ES2.0
    omap24_i2c_findpsc:速度[kHz]:100 PSC:0x17 sscl:0xd ssch:0xF
    尝试从 SPI 引导
    malloc_Simple:size=e、ptr = 36、limit=100000:81f00028
    uclass_find_device_By_Seq:0 0
    --1'QSPI@4b300000'
    -未找到
    uclass_find_device_By_Seq:1 0
    --1'QSPI@4b300000'
    -未找到
    无效总线0 (ERR=-19)
    SPI 探测失败。 总线:0、CS:0、速度:76800000、模式:3
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请快速回答。
    我仍在等待回答。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我本周的旅行。 也许帕维尔或其他人有一些想法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我在早上回到办公桌时,我将面临同样的问题,即让 AM5718 IDK 从 QSPI 加载您的启动,如果能够确定解决方案,那将是很好的。 我想很多人都希望这样做,当我尝试复制我们在 IDK 上的定制硬件上所做的事情时,我们当然会这样做。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yohan、

    我可以在 mux_data.h 文件中看到您正在使用 qspi1_CS1引脚:

    //安抚奶嘴23 - 180904:Hur AM5718 IDK 配置
    const struct pad_conf_entry core_padconf_array_ess_am571x_idk[]={

    // QSPI (FPGA)
    {GPMC_CS3、(M1 | PIN_OUTPUT | MANUAL_MODE)}、// GPMC_CS3.qspi1_CS1 *

    我怀疑这可能是这里的问题。 是否可以删除此行并重试? 如果仍然无法成功、请向我们提供以下文件/日志:

    1.启用调试的最新 u-boot 启动日志
    2.您的 u-boot .config 文件
    3.您最新版本的 DTS 和 mux_data.h 文件
    4.如何在 QSPI 闪存中刷写 MLO/u-boot.img? 请在刷写期间提供日志。


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

    您好、Pavel、

    我尝试删除并尝试以下操作、

    问题没有解决。

    // QSPI (FPGA)

    //PMC_CS3、(M1 | PIN_OUTPUT | MANUAL_MODE)}、// GPMC_CS3.qspi1_CS1 *

     

    1.启用调试的最新 u-boot 启动日志

    U-Boot SPL 2018.01-svn56 (2019年1月24日- 09:38:17)

    DRA722-GP ES2.0

    omap24_i2c_findpsc:速度[kHz]:100 PSC:0x17 sscl:0xd ssch:0xF

    尝试从 SPI 引导

    malloc_Simple:size=e、ptr = 36、limit=100000:81f00028

    uclass_find_device_By_Seq:0 0

     --1'QSPI@4b300000'

     -未找到

    uclass_find_device_By_Seq:1 0

     --1'QSPI@4b300000'

     -未找到

    无效总线0 (ERR=-19)

    SPI 探测失败。 总线:0、CS:0、速度:76800000、模式:3

    SPL:无法从所有引导设备引导

    ###错误###请重置电路板###

     

    2.您的 u-boot .config 文件

    e2e.ti.com/.../4428_2E00_.config.txt

     

    3.您最新版本的 DTS 和 mux_data.h 文件

    e2e.ti.com/.../am57xx_2D00_idk_2D00_common.txt

    e2e.ti.com/.../2703.am571x_2D00_idk.txt

    e2e.ti.com/.../7573.mux_5F00_data.h

     

    4.如何在 QSPI 闪存中刷写 MLO/u-boot.img? 请在刷写期间提供日志。


    SF 探头  
    SF:检测到 s25fl256s_64k、页大小为256字节、擦除大小为64 KiB、总共32 MIB、映射时间为5c000000

     

    2. MLO 写入日志

    文件名'LO'。
    加载地址:0x82000000
    正在加载:####################
    2.8 MIB/s
    完成
    传输的字节= 114886 (1c0c6十六进制)

     

    SF:262144字节@ 0x0已擦除:确定
    器件0偏移量0x0、大小0x1c0c6
    SF:114886字节@ 0x0写入:正常

     

    3. U-boot 写入日志

    文件名'u-boot.img'。
    加载地址:0x82000000
    正在加载:############################################################################
    ####################################################
    ############################################
    2.9 MIB/s
    完成
    传输的字节= 968400 (ec6d0十六进制)

      

    SF:1048576字节@ 0x40000已擦除:确定
    器件0偏移量0x40000、大小0xec6d0
    SF:968400字节@ 0x40000写入:确定

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

    在您的.config 文件中、我看到您使用 MMC/SD 卡来保存 u-boot 环境。 您能否尝试在 u-boot 环境中使用 SPI 而不是 MMC? 如果您有任何改进、请进行评论。

    CONFIG_ENV_IS _IN_MMC=y
    未设置# CONFIG_ENV_IS IN_SPI_FLASH

    关于 QSPI 模式、您是否尝试过 QSPI-1模式? 有关 QSPI 模式引导的详细信息、请参阅以下 e2e 线程:

    e2e.ti.com/.../2352675

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

    无法在模式1中引导 QSPI
    我在模式3中尝试了它、这是 Brad 的观点。
    但问题没有得到解决。

    对于 u-boot 环境、我更改了 SPI 而不是 MMC。
    问题没有解决。

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

    mux_data.h

    我看到您将 QSPI pinmux 放入 earn_padconf[]结构中。 我不确定是否正确。 默认情况下、AM571x IDK QSPI 引脚多路复用在 CORE_padconf_array_Essential 和 am571x_idk[]中完成。
    您能否将 QSPI pinmux 从 EARLY_padconf[]移动到 CORE_padconf_array_Essential 和 am571x_idk[]并重试、是否有任何改进?

    根据我的理解、从 SD 卡引导、然后在 SD 卡引导的 u-boot 阶段将 MLO/u-boot.img 刷写到 QSPI、这是正确的吗? 您正在刷写用于 SD 卡引导的相同 MLO/u-boot.img、这是正确的吗?
    在 SD 卡引导 u-boot 提示符下、请使用 MD 命令检查 QSPI 引脚多路复用寄存器值、并验证值是否正确。

    CTRL_CORE_PAD_GPMC_A13
    CTRL_CORE_PAD_GPMC_A14
    CTRL_CORE_PAD_GPMC_A15
    CTRL_CORE_PAD_GPMC_A16
    CTRL_CORE_PAD_GPMC_A17
    CTRL_CORE_PAD_GPMC_A18
    CTRL_CORE_PAD_GPMC_CS2

    am57xx-idk-common.dtsi

    请更新以下行:

    -兼容="s25fl256s"、"SPI-flash";
    +兼容="s25fl256s1"、"JEDEC、SPI-NOR ";

    我还建议您使用默认的 AM571x IDK 布局、因为我看到您有一些可能导致问题的差异。 请使用:

    分区@0{
    标签="QSPI.SPL";
    REG =<0x00000000 0x000040000>;
    };
    分区@1{
    标签="qspi.u-boot";
    REG =<0x00040000 0x00100000 >;
    };
    分区@2{
    标签="qspi.kernel-dtb";
    REG =<0x00140000 0x00080000>;
    };
    分区@3{
    label ="qspi.u-boot-env";
    REG =<0x001c0000 0x00010000>;
    };
    分区@4{
    label ="qspi.u-boot-env.Backup1";
    REG =<0x001d0000 0x0010000>;
    };
    分区@5{
    标签="qspi.kernel";
    REG =<0x001e0000 0x0800000>;
    };
    分区@6{
    label ="qspi.file-system";
    REG =<0x009e0000 0x01620000>;
    };

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

    mux_data.h
    我尝试在 core_padconf_array_essal_am 571 x _ idk []中移动 QSPI Pinmux、但问题未得到解决。

    am57xx-idk-common.dtsi
    我尝试了以下更改,但问题未得到解决。
    -兼容="s25fl256s"、"SPI-flash";
    +兼容="s25fl256s1"、"JEDEC、SPI-NOR ";

    打开了这个问题、一个月后、
    我不知道确切的解决方案。

    IDK 中也以相同的方式出现了该问题、
    即使 SDK 5.2是按原样构建和运行的、问题也是一样的。

    我想在 SDK 的基本代码中找到该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我到目前为止发现了以下内容... 使用 AM570x/DRA71x EVM、我能够使用 dra7xx_EVM_defconfig u-boot 配置从 QSPI 引导。 当我使用默认配置启动 IDK 时、我会看到此处提到的相同错误。 因此、配置或器件树中的任何内容都是不同的、尽管我们现在至少有一个已知可以正常工作的配置。 我们需要进行进一步的比较和测试、以准确地确定我们缺少的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 dra7xx_EVM_defconfig 中找到了与启用 QSPI 引导配置特别相关的补丁:

    lists.denx.de/.../287920.html

    今天我要总结一下、但想分享一下这个结果、以防这个线程上的任何其他人有机会在 AM57xx defconfig 的上下文中尝试这些配置选项。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试了以下更改,但问题未得到解决。


    编号
    #通用驱动程序选项
    编号
    CONFIG_DM=y
    CONFIG_SPL_DM=y
    CONFIG_DM_WARN=y
    未设置# CONFIG_DM_DEBUG
    CONFIG_DM_DEVICE_REMOVE_=y
    CONFIG_DM_STDIO=y
    CONFIG_DM_SEQ_ALIAS=y
    CONFIG_SPL_DM_SEQ_ALIAS=y
    CONFIG_REGMAP=y
    CONFIG_SPL_REGMAP=y
    CONFIG_SYSCON=y
    CONFIG_SPL_SYSCON=y
    未设置# CONFIG_DevRes
    CONFIG_SIMPLE_BUS=y
    CONFIG_SPL_SIMPLE_BUS=y
    CONFIG_of_translate=y
    未设置# CONFIG_SPL_OP_TO_translate

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

    我刚刚尝试过以下操作:

    diff ---git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
    索引 ea94f7c6d7..954a58e9c9 100644
    -- a/configs/am57xx_evm_defconfig
    ++ b/configs/am57xx_evm_defconfig
    @@-42、6 +42、11 @@ CONFIG_ON_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc
    CONFIG_ENV_IS _IN_MMC=y
    CONFIG_DM=y
    CONFIG_SPL_DM=y
    +CONFIG_SPL_DM_SEQ_ALIAS=y
    +CONFIG_REGMAP=y
    +CONFIG_SPL_REGMAP=y
    +CONFIG_SYSCON=y
    CONFIG_SPL_SYSCON=y
    CONFIG_SCSI_AHCI=y
    未设置# CONFIG_BLK
    CONFIG_DFU_MMC=y
    diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
    索引 cf5cacd2f6.17387edd33 100644
    --包括/configs/am57xx_evm.h
    ++ b/include/configs/am57xx_evm.h
    @@-15、6 + 15、7 @@
    #include
    #include

    +#define debug 1
    #define CONFIG_IODELAY_RE重 校准

    #define CONFIG_NR_DRAM_Banks 2.

    我的 AM572x IDK 不再存在您显示的问题。  它不会一直启动、但会运行所有 MLO。  我会得到输出的页面、但我看到的结果如下:

    跳转到 U-Boot
    已加载-跳转到 U-Boot...
    图像入口点:0x80800000

    因此、此时我似乎非常接近。  我认为这些配置选项是朝着正确方向迈出的一步。

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

    QSPI 启动正常工作的 PDK 03.01配置文件的内容如下。

    PDK:TI-processor-SDK-Linux-RT-AM 57 x x - EVM - 03.01.00.06

    U-Boot:U-boot-2016.05


    编号
    #通用驱动程序选项
    编号
    CONFIG_DM=y
    CONFIG_DM_WARN=y
    CONFIG_DM_DEVICE_REMOVE_=y
    CONFIG_DM_STDIO=y
    CONFIG_DM_SEQ_ALIAS=y
    未设置# CONFIG_SPL_DM_SEQ_ALIAS
    未设置# CONFIG_REGMAP
    未设置# CONFIG_SPL_REGMAP
    未设置# CONFIG_DevRes
    CONFIG_SIMPLE_BUS=y
    CONFIG_of_translate=y

    可能通用驱动程序选项 SPL 设置不相关。

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

    我刚刚使用 Linux SDK 5.01进行了测试。  以下是我应用于 u-boot 的确切补丁:

    diff ---git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
    索引 ea94f7c6d7..4483c7de87 100644
    -- a/configs/am57xx_evm_defconfig
    ++ b/configs/am57xx_evm_defconfig
    @@-42、6 +42、12 @@ CONFIG_ON_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc
    CONFIG_ENV_IS _IN_MMC=y
    CONFIG_DM=y
    CONFIG_SPL_DM=y
    +CONFIG_SPL_DM_SEQ_ALIAS=y
    +CONFIG_REGMAP=y
    +CONFIG_SPL_REGMAP=y
    +CONFIG_SYSCON=y
    CONFIG_SPL_SYSCON=y
    +CONFIG_SPL_of_translate=y
    CONFIG_SCSI_AHCI=y
    未设置# CONFIG_BLK
    CONFIG_DFU_MMC=y

    重建 MLO 和 u-boot.img 后、我使用默认二进制文件从 SD 卡引导。  我的 MLO 和 u-boot.img 位于名为/mnt/scratch/qspi.的目录中  我将它们刷写到 QSPI 中、如下所示:

    root@am57xx-EVM:~# flash_erase /dev/mtd0 0
    擦除64 KB @ 6400030000 --完成-1 %
    root@am57xx-EVM:~# flash_erase /dev/mtd1 0
    擦除64 KB @ 64000f0000 --完成-1 %
    root@am57xx-EVM:~# dd if=/mnt/scratch/qspi/MLO of=/dev/mtd0
    232+1记录
    232+1记录
    root@am57xx-EVM:~# dd if=/mnt/scratch/qspi/u-boot.img of=/dev/mtd1
    1950+1记录
    1950+1记录已注销

    然后、我关闭了电路板电源、卸下了 SD 卡、然后重新加电。  我可以进入 u-boot 提示符:

    U-Boot SPL 2018.01-00446-g12bf02392 (2019年1月30日- 20:45:10)
    DRA752-GP ES2.0
    尝试从 SPI 引导
    默认模式下无 pinctrl 状态
    默认模式下无 pinctrl 状态
    ***警告- CRC 错误,使用默认环境

    U-Boot 2018.01-00446-g12bf02392 (2019年1月30日- 20:45:10 -0600)

    CPU:DRA752-GP ES2.0
    型号:TI AM5728 IDK
    电路板:AM572x IDK REV 1.3B
    DRAM:2GiB
    MMC:OMAP SD/MMC:0、OMAP SD/MMC:1.
    ***警告- CRC 错误,使用默认环境

    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:GPT 无效***
    GUID 分区表头签名错误:0x0!= 0x5452415020494645
    PART_GET_INFO_EFI:***错误:备份 GPT 无效***
    SCSI:SATA link 0 timeout。
    AHCI 0001.0300 32插槽1端口3 Gbps 0x1不支持 SATA 模式
    标志:64位 NCQ stag pm led clo only pmp pio 贫民窟 part ccc apst
    正在扫描设备总线...
    找到0个器件。
    网络:
    警告:以太网@48484000使用 ROM 中的 MAC 地址
    eth0:以太网@48484000
    按任意键停止自动引导:0
    =>

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

    我确认 QSPI 引导正常工作。
    我希望下一个 PDK 版本中包含该解决方案。

    谢谢 Brad。