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.

[参考译文] DRA722:QSPI 引导仅在调试打印打开时工作。

Guru**** 2614265 points
Other Parts Discussed in Thread: DRA722

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/654505/dra722-qspi-boot-works-only-when-debug-printing-is-on

器件型号:DRA722

大家好、

                             我正在使用基于 DRA722的定制板。如果关闭调试消息、我无法从 QSPI 闪存启动。但在打开调试打印的情况下、我能够成功启动。现在我已将 QSPI 闪存配置为以8MHz 运行。如果使用更高的频率、这也会导致故障。

原因可能是什么?

QSPI 闪存器件型号:mt25ql02gc

此致、

Murugan S

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

    我已将您的问题转交给一位专家征求意见。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!
    问题已解决。我将频率从8MHz 降低到6MHz。现在、我可以在调试关闭的情况下从 QSPI 引导。

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

    降低频率不是 QSPI 引导的最佳解决方案。
    RBL 将 QSPI 频率设置为48MHz、SBL 将其更改为64MHz。
    您对 SBL 进行了哪些更改来更改频率?
    请提供您所面临问题的更多详细信息。

    此致、
    Rishabh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rishabh、
    根据我的观察、影响 SPL 的唯一频率相关参数是 include/configs/my_custom_board.h 文件中的"CONFIG_SF_DEFAULT_SPE"。我没有更改 dra7-EVM.dts 文件中的值、默认为76800000 MHz。但加载 uboot 后、我可以在76.8MHz 下探测 SPI 闪存(SF 探头0 76800000) 并加载内核、而不会出现任何问题。

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

    您好、Rishabh、
                                当我将 include/configs/board.h 文件中的 CONFIG_SF_DEFAULT 速度值保留为默认76.8 MHz 时,QSPI 引导中出现以下错误:

    发现合适
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:总线:0 cs:0位 len:0标志:4
    启用时钟模块- 4a008778
    启用时钟模块- 4a008780
    Clocks-common.c:禁用时钟模块- 4a008778
    Clocks-common.c:禁用时钟模块- 4a008780
    SPI_xfer:总线:0 cs:0位 len:0标志:8
    SPI_RELEASE_BUS:总线:0 CS:0
    FIT 读取扇区40000、扇区=1468、dst=807ffa00、计数=1468
    SPL_LOAD_SIMPLE_FIT:找不到/图像节点:-11
    SPL:无法从所有引导设备引导
    ###错误###请重置电路板###

                               
                                 当我将 CONFIG_SF_DEFAULT_SPEED 的值降低到6MHz 时,我可以成功引导:
    发现合适
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:总线:0 cs:0位 len:0标志:4
    启用时钟模块- 4a008778
    启用时钟模块- 4a008780
    Clocks-common.c:禁用时钟模块- 4a008778
    Clocks-common.c:禁用时钟模块- 4a008780
    SPI_xfer:总线:0 cs:0位 len:0标志:8
    SPI_RELEASE_BUS:总线:0 CS:0
    FIT 读取扇区40000、扇区=1468、dst=807ffa00、计数=1468
    DATA_OFFSET=0、DATA_SIZE=47180
    U-Boot 大小为47180、数据为80800000
    对齐图像读取:dst=80800000、src_sector=405bc、sectors =47180
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:总线:0 cs:0位 len:0标志:4
    启用时钟模块- 4a008778
    启用时钟模块- 4a008780
    Clocks-common.c:禁用时钟模块- 4a008778
    Clocks-common.c:禁用时钟模块- 4a008780
    SPI_xfer:总线:0 cs:0位 len:0标志:8
    SPI_RELEASE_BUS:总线:0 CS:0
    图像:dst=80800000、data_offset=5bc、size=47180
    选择配置'RA72-EVM'、FDT 'FDT@2'
    时基故障:选择的'DRA72-EVM'
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:总线:0 cs:0位 len:0标志:4
    启用时钟模块- 4a008778
    启用时钟模块- 4a008780
    Clocks-common.c:禁用时钟模块- 4a008778
    Clocks-common.c:禁用时钟模块- 4a008780
    SPI_xfer:总线:0 cs:0位 len:0标志:8
    SPI_RELEASE_BUS:总线:0 CS:0
    将 FDT 读数对齐:dst 80847180、src_Sector = 9b1d0、Sectors 12a7c
    FDT:dst=80847180、data_offset=5b1d0、size=12a7c
    跳转到 U-Boot
    已加载-跳转到 U-Boot...
    initcall:8082313d
    initcall:80827e21

    注意:我没有更改 dra7-EVM.dts 或 dra72-EVM-common.dtsi 中的值、其中默认值为76.8MHz
    这些是我的其他与 QSPI 闪存相关的配置:
    1)在 drivers/MTD/SPI/SF_params.c 中、我添加了:
       {"mt25ql02g"、     0x20ba22、0x1044、   64 * 1024、 1024、 RD_NORM、                  WR_QPP}、
    2)在 drivers/spi/ti_qspi.c 中、我在引用 SPI 闪存数据表中的命令后进行了一些更改(我在 SF_internal.h 中进行了相同的更改):

     #define QSPI_CMD_READ                  (0x13 << 0) //默认0x03
    #define QSPI_CMD_READ_DUAL             (0x3c << 0)//默认值0x6b
    #define QSPI_CMD_READ_QUAD             (0x6c << 0)
    #define QSPI_CMD_READ_FAST             (0x0c << 0)//默认0x0B
    #define QSPI_SETUP0_NUM_A_bytes        (0x3 << 8)  
    #define QSPI_SETUP0_NUM_D_Bytes_NO_BITS (0x0 << 10)
    #define QSPI_SETUP0_NUM_D_Bytes_8_Bits (0x1 << 10)
    #define QSPI_SETUP0_READ_NORMAL        (0x0 << 12)
    #define QSPI_SETUP0_READ_DUAL          (0x1 << 12)
    #define QSPI_SETUP0_READ_QUAD          (0x3 << 12)
    #define QSPI_CMD_WRITE                 (0x12 << 16)
    #define QSPI_NUM_Dummy_bits            (0x0 << 24)

     SPI 闪存的数据表:e2e.ti.com/.../MT25Q_5F00_QLKT_5F00_U_5F00_512_5F00_ABB_5F00_0.pdf


    此致、
    Murugan S

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

    我不是 Uboot 专家。
    我曾与一位将为您提供帮助的专家进行了 Ping 操作。

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

    Murugan、

    U-Boot 能够正确读取 QSPI 中的数据、但 MLO 无法正确读取、这让我感到惊讶。 QSPI 驱动程序代码在两者之间完全相同。 我们需要对此进行进一步调查。

    您的 SYSBOOT 设置是什么? 您是否从 QSPI 引导? 这个问题很重要、因为它会告诉我们引导 ROM 是否能够无问题地访问 QSPI。

    现在,您是否可以运行以下测试?

    1. 您能否将 QSPI 的默认速度降低至48MHz 并将默认模式设置为模式3和测试? 这与引导 ROM 从 QSPI 引导时使用的设置相匹配。
    #define CONFIG_SF_DEFAULT_SPEED                48000000
    #define CONFIG_SF_DEFAULT_MODE                 SPI_MODE_3
    1. 如果这不起作用、请在上述更改的基础上禁用 EDMA 支持。
    #undef CONFIG_TI_EDMA3
    1. 如果这不起作用、请尝试禁用四通道 SPI 支持。
    #undef CONFIG_QSPI_QUAD_SUPPORT

    此致、
    Venkat

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Venkat、
    非常感谢您的建议! "CONFIG_QSPI_Quad_support"导致了问题。我们的定制板不支持四路读取。现在、我可以166MHz 从 QSPI 启动、这是我们 SPI 闪存支持的最大速度。

    这是对我有用的配置:

    #define CONFIG_SF_DEFAULT_SPEED 166000000 /*任何频率都将起作用*/
    #define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
    /*#define CONFIG_QSPI_BOOT */ //注释
    /*#define CONFIG_TI_EDMA3*/ //注释

    注意:SPI_MODE_3导致了不受支持的 JEDEC ID 错误。因此我将其保留为 SPI_MODE_0、然后按照您的其余指令进行操作。

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

    相关知识。

    模式3仅在48MHz 之前工作。 要获得更高的时钟速度、您需要模式0。 因此、您所做的更改是可以的。

    DRA7x 器件仅支持76.8MHz 的最大时钟速度。 请勿将 QSPI 时钟设置为更高的速度。

    您能否在定义了 CONFIG_TI_EDMA3时确认这是否适合您?

    当您说"自定义电路板不支持四路读取"时、您是否意味着您的电路板没有四路 SPI 模式所需的物理连接?

    此致、
    Venkat
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Venkat、
    我在48MHz 下测试了模式3、它读取了不同的 JEDEC ID:

    SF:不支持的闪存 ID:Manuf 10、JEDEC 5d11、ext_JEDEC 0822 (viz 不是我的器件)

    在 ti_qspi.c 文件中、我将 QSPI_DRA7XX_FCLK 更改为166000000、并在 DTS 文件中进行了相同的更改。这是否有问题? 引导时看起来稳定。

    我刚给了电路板进行测试、我会检查它是否与 EDMA 配合使用、然后返回给您。

    是的、我们实际只使用2个引脚进行读取。

    此致、
    Murugan S
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Venkat、
    QSPI 引导在同时启用 CONFIG_TI_EDMA3的情况下正常工作。因此、我唯一要做的更改是禁用"CONFIG_QSPI_Quad_support"。
    非常感谢您的耐心和耐心。
    此致、
    Murugan S