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.

[参考译文] DRA821U:DRA821U 上的 QSPI 闪存工作时钟

Guru**** 2576165 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1544769/dra821u-qspi-flash-operating-clock-on-dra821u

器件型号:DRA821U
主题中讨论的其他器件:DRA821TDA4VH、DRA829、 DA8XX

工具/软件:

Champ、  

如果时钟设置为 25MHz 以上、则 J7200 EVM 上的客户反馈 QSPI 闪存将切换回 1 位模式。  

客户发现 QSPI 闪存引导时间较慢、然后检查 SDK 默认 QSPI 时钟设置为 25MHz。

客户尝试将其设置为 40MHz 以缩短启动时间、但发现启动速度变慢。  

然后、他们使用示波器测量波形、发现原始模式在四位模式下运行时、波形将恢复为 1 位模式。  

是否可以增加 QSPI 时钟但仍保持在四位模式下? AM62x 和 AM64x 在 SDK 中没有此类限制。   

Br、Rich  

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

    您好、

    即使在 AM62x 和 AM64x 中、QSPI 的输出时钟也应限制为 25MHz。

    为了进一步提高速率、您应在 phy 模式下使用 OSPI。 这个可以达到 166MHz

    此致、
    Tanmay

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

    Tanmay、  

    如果客户想提高时钟速度、是否意味着客户需要切换到 PHY 模式?  

    25MHz 是不使用 PHY 模式时建议的最大时钟。  

    Br、Rich

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

    您好、

    是的、正确。

    此致、
    Tanmay

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

    Tanmay、  

    客户想知道如何启用 PHY 模式并切换到上述 40MHz 的更高时钟速率?

    以下是他们所做的更改、但 QSPI 访问将在更改后崩溃。  

    您能否检查设置是否正确以及缺少什么?  

     

    Uboot:

     

    iff --git a/arch/arm/dts/k3-j7200-sm-p0.dtsi b/arch/arm/dts/k3-j7200-sm-p0.dtsi

    索引 910a4b5c.d51b219f 100644

    /arch/arm/dts/k3-j7200-sm-p0.dtsi

    ++ b/arch/arm/dts/k3-j7200-sm-p0.dtsi

    @@–427,14 +427,17 @@

        闪存@0{

            兼容=“JEDEC、SPI-NOR“;

            REG =<0x0>;

    -        SPI-TX-BUS-WIDTH =<8>;

    -        SPI-Rx-BUS-WIDTH =<8>;

    +        SPI-TX-BUS-WIDTH =<4>;

    +        SPI-Rx-BUS-WIDTH =<4>;

    -        SPI-max-frequency =<25000000>;

    -        CDN、tshsl-ns =<60>;

    -        CDN、tsd2d-ns =<60>;

    -        CDN、tchsh-ns =<60>;

    -        CDN、tslch-ns =<60>;

    +        CDN、phy-mode;

     

    内核:

     

    diff -git a/arch/arm64/boot/dts/ti/k3-j7200-sm-p0.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-sm-p0.dtsi

    索引 81bb0d656..e27e0b9c2 100644

    /arch/arm64/boot/dts/ti/k3-j7200-sm-p0.dtsi

    ++ b/arch/arm64/boot/dts/ti/k3-j7200-sm-p0.dtsi

    @@–284、7 + 284、7 @@

            REG =<0x0>;

            SPI-TX-BUS-WIDTH =<8>;

            SPI-Rx-BUS-WIDTH =<8>;

    -        SPI-max-frequency =<25000000>;

    +        SPI-max-frequency =<40000000>;

            CDN、tshsl-ns =<60>;

            CDN、tsd2d-ns =<60>;

            CDN、tchsh-ns =<60>;  

    Br、Rich

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

    您好 Rich、

    u-boot 和内核是独占的。 您是使用 u-boot 还是内核测试更改吗?

    此致、
    Tanmay

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

    Tanmay、  

    客户测试 u-boot 和内核、目标是增加引导时间、因此 u-boot 被作为优先级。

    客户声明启用 PHY 模式并将时钟增加到 40MHz 将无法通过 QSPI 访问。  

    他希望使用以 40MHz 频率运行的 OSPI 闪存在 DRA821 EVM 上验证这一点。  

    您能否在 DRA821 EVM 上尝试使用该方法、并向客户提供一个贴片、以便在 EVM 上进行验证并移植到客户自己的电路板上?

    Br、Rich   

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

    Tanmay、  

    这是否可行、以便在 DRA821 EVM 上支持?  

    在客户目标板上进行调试之前、在 EVM 上进行支持和验证是最简单的方法。  

    Br、Rich

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

    您好 Rich、

    PHY 模式无法在 QSPI 模式下使用。 只能使用 OSPI 闪存完成。

    此致、
    Tanmay

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

    Tanmay、

    那么、如何将 QSPI 时钟增加到 40MHz 呢? 目标是提高 QSPI NOR 闪存启动速度、以缩短启动时间。

    这可以实现吗?

    如果答案是“是“、如何操作?

    Br、Rich

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

    您好 Rich、

    这甚至可能无法实现。 我正在与我们的硬件专家联系、了解此处的限制到底是多少。 但使用 QSPI、我们还不能超越 25MHz。

    此致、
    Tanmay

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

    Tanmay、  

    请与验证团队确认。  

    我查看了 DRA821 数据手册、对于 DDR 模式下无数据训练的 OSPI、最小时钟周期为 19ns、接近 50MHz。 对于 SDR 模式、最小时钟周期为 7ns 和 7.52ns、至少为 133MHz。

    通过数据训练、DDR 模式 1.8V 可实现 166MHz、3.3V 可实现 133MHz。

    我想确认数据训练是否等于您在本文中提到的 PHY 模式?  

     

    AM62x 和 AM64x 没有这种限制、我想知道这是否是硬件限制或可能来自 PLL 时钟的软件配置限制。

    您能否联系我们的 OSPI 闪存驱动器开发人员进行双重确认?   

    Br、Rich

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

    您好 Rich、

    我想确认数据训练是否等于您在本文中提到的 PHY 模式?  [/报价]

    是的。 数据训练是我之前提到的 phy 模式。

    此致、
    Tanmay

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

    Tanmay、

    在这种情况下、 即使没有 PHY 模式(未训练数据)、OSPI/QSPI 也可以实现~50MHz。  

    这不应限制 OSPI/QSPI 闪存。 (实际上,我们在包括 TDA4 在内的其他平台上没有此限制。)

    请帮助使 40MHz 时钟  在 EVM QSPI 闪存上工作、并提供有关如何启用支持的补丁。 (无论是 PHY 模式还是非 PHY 模式)  

    Br、Rich  

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

    Rich、Tanmay。

    是针对 DDR 模式还是 SDR 模式?  SDR 应能够在 TAP(无 PHY)模式下达到 50MHz。  DDR 仅限于 25MHz。

    DRA821 数据表稍微过时了。  您可以将 TDA4VH 作为 可支持/的粗略模板

    此致、

    Kyle

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

    Kyle、

    感谢您的确认。

    SDR 50MHz 理论上可实现大约 25MHz 的吞吐量。

    在这种情况下、如果原始 QSPI 已经使用 DDR、则无法通过更改为 SDR 40 甚至 50MHz 来缩短引导时间。

    也就是说、唯一的选择是使用 PHY 模式通过 25MHz 支持 DDR。

    Tanmay、

    您能否确认当前的 QSPI 驱动程序是否已经是实际的 DDR?

    如果已经是 DDR、我们需要一个示例/补丁、以便为 EVM 上的 QSPI 闪存启用 40 或 50MHz DDR 中的 PHY 模式支持。

    我们是否有可以分享的 PHY 模式支持示例?

    Br、Rich

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

    您好 Rich、

    [报价 userid=“9853" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1544769/dra821u-qspi-flash-operating-clock-on-dra821u/6003349

    您能否确认当前的 QSPI 驱动程序是否已经是实际的 DDR?

    如果已经是 DDR、我们需要一个示例/补丁、以便为 EVM 上的 QSPI 闪存启用 40 或 50MHz DDR 中的 PHY 模式支持。

    我们是否有可以分享的 PHY 模式支持示例?

    [/报价]

    我将在一天结束前确认这一点。

    此致、
    Tanmay

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

    您好 Rich、

    QSPI 驱动器仅为 SDR。 我们从未尝试过使其变为 DDR 或使其进入 PHY 模式。 我相信这是可能的,但让我们等待凯尔确认这一点。 但是、由于我们从未在 EVM 上尝试过该方法、因此我不知道可能会遇到什么问题。

    但在此之前、我们是否已确保所使用的 QSPI 闪存也具有这些功能? 是否可以在此处分享器件型号?

    此致、
    Tanmay

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

    Tanmay、  

    我查看了 有关支持 SDR 和 DTR (DDR) 的 DRA821 EVM 的 QSPI 闪存 MT25QU512ABB8E12-0AUT 器件详细信息。

    客户电路板使用 MX25L25645G 均支持 SDR 和 DTR (DDR)。  

    1.如果当前的 QSPI 驱动器仅为 SDR、则应能够根据规范在 40MHz 甚至 50MHz SDR 模式下运行。  

    2.我们需要在 QSPI 中为 25MHz 启用 DTR 支持。  

    您能否联系我们的 OSPI 驱动程序开发人员来启用此功能?  

    Br、Rich


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

    Tanmay、  

    团队是否正在努力立即在 EVM 上为 QSPI 闪存启用 40MHz SDK 支持或为 25MHz 提供 DTR 支持?

    我们是否有一个时间线来获得启用它的补丁?  

    Br、Rich  

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

    Tanmay、  

    您能否更新当前的调查结果并计划此申请?  

    您是否获得了驾驶员开发人员的反馈?  

    Br、Rich  

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

    尊敬的专家:

    对不起,高插孔的线程,但我也非常有兴趣提高 QSPI(在 ospi1)的速度.

    在 U-Boot 中使用 SPI-TX-BUS-WIDTH =<4>、我从未获得任何稳定性。 我可以写入 NOR 闪存、但以下读取操作显示了乱码字节。

    您能否确认在 TX 和 Rx 上使用四线在 U-Boot 和内核中都能正常工作? 如果是、DTS 设置是什么?我们可以达到的最高速度是多少?

    另外、关于 phy-mode、有一个提交、11 个月前:

    其中、CDN、phy-mode 添加到 ospi1、它用于 QSPI-NOR。 这是错误吗?

    此致、

    /BO

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

    Tanmay、  

    您正在处理此 TT 吗? 还有其他客户需要从团队获得帮助。  

    我们能否将 QSPI NOR 的时钟速度提高到 25MHz 以上? 所说的 40MHz。  

    当前的软件限制是否已实现? 计划如何实现这一目标?

    Br、Rich   

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

    您好、

    我可以在 DRA829 EVM 中看到、我能够在 SDR 模式下将 QSPI 速度设置为 40MHz(无法在 DRA821 EVM 上测试、因为它没有 QSPI 闪存)。 用于此操作的节点如下:

    在 k3-j721e-common-proc-board.dts 中:

    &ospi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
    
    	flash@0 {
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <1>;
    		spi-rx-bus-width = <4>;
    		spi-max-frequency = <40000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <2>;
    
    		partitions {
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    
    			partition@0 {
    				label = "qspi.tiboot3";
    				reg = <0x0 0x80000>;
    			};
    
    			partition@80000 {
    				label = "qspi.tispl";
    				reg = <0x80000 0x200000>;
    			};
    
    			partition@280000 {
    				label = "qspi.u-boot";
    				reg = <0x280000 0x400000>;
    			};
    
    			partition@680000 {
    				label = "qspi.env";
    				reg = <0x680000 0x20000>;
    			};
    
    			partition@6a0000 {
    				label = "qspi.env.backup";
    				reg = <0x6a0000 0x20000>;
    			};
    
    			partition@6c0000 {
    				label = "qspi.sysfw";
    				reg = <0x6c0000 0x100000>;
    			};
    
    			partition@800000 {
    				label = "qspi.rootfs";
    				reg = <0x800000 0x37c0000>;
    			};
    
    			partition@3fe0000 {
    				label = "qspi.phypattern";
    				reg = <0x3fe0000 0x20000>;
    			};
    		};
    	};
    };

    在 k3-j721e-mcu-wakeup.dtsi 中:

    		ospi1: spi@47050000 {
    			compatible = "ti,am654-ospi", "cdns,qspi-nor";
    			reg = <0x0 0x47050000 0x0 0x100>,
    				<0x7 0x00000000 0x1 0x00000000>;
    			interrupts = <GIC_SPI 841 IRQ_TYPE_LEVEL_HIGH>;
    			cdns,fifo-depth = <256>;
    			cdns,fifo-width = <4>;
    			cdns,trigger-address = <0x0>;
    			cdns,phase-detect-selector = <2>;
    			clocks = <&k3_clks 104 0>;
    			power-domains = <&k3_pds 104 TI_SCI_PD_EXCLUSIVE>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    			status = "disabled";
    		};
    	

    您能否尝试匹配此配置并在客户电路板上看到结果?

    您是否还可以应用此补丁来在 QSPI 的 u-boot 中获取更多调试打印:

    diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
    index 0448b9929ca..6ffdacafaa8 100644
    --- a/drivers/spi/cadence_qspi.c
    +++ b/drivers/spi/cadence_qspi.c
    @@ -29,6 +29,8 @@
     #define CQSPI_READ                     2
     #define CQSPI_WRITE                    3
    
    +#define _DEBUG 1
    +
     __weak int cadence_qspi_apb_dma_read(struct cadence_spi_priv *priv,
                                         const struct spi_mem_op *op)
     {
    @@ -1243,6 +1245,8 @@ static int cadence_spi_write_speed(struct udevice *bus, uint hz)
                                   priv->tshsl_ns, priv->tsd2d_ns,
                                   priv->tchsh_ns, priv->tslch_ns);
    
    +       debug("%s: speed=%d\n", __func__, hz);
    +
            return 0;
     }
    

    在 U-Boot 中使用 spi-tx-bus-width =<4>、我从未获得任何稳定性。 我可以写入 NOR 闪存、但以下读取操作会显示乱码字节。

    使用 4 行写入速度是否有任何具体原因? 在 SDK 中默认、1 用于写入、4 用于 TX。

    此致、
    Tanmay

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

    您好 TI  

    它仍然失败…

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

    我的补丁

    diff -git a/arch/arm/dts/k3-j7200-common-proc-board-u-boot.dtsi b/arch/arm/dts/k3-j7200-common-proc-board-u-boot.dtsi
    索引 dd17d04c..54167b7f 100644
    /arch/arm/dts/k3-j7200-common-proc-board-u-boot.dtsi
    ++ b/arch/arm/dts/k3-j7200-common-proc-board-u-boot.dtsi
    @@–195、7 + 195、6 @@
    全部引导;

    闪存@0{
    - CDN、phy-mode;
    全部引导;
    };
    };
    diff -git a/arch/arm/dts/k3-j7200-mcu-wakeup.dtsi b/arch/arm/dts/k3-j7200-mcu-wakeup.dtsi
    索引 07f44a59..37ac2c23 100644
    ——A/arch/arm/dts/k3-j7200-mcu-wakeup.dtsi
    ++ b/arch/arm/dts/k3-j7200-mcu-wakeup.dtsi
    @@–548、16 +548、14 @@
    ospi0:SPI@47040000{
    兼容=“ti、am654-ospi“、“CDN、QSPI-NOR“;
    REG =<0x0 0x47040000 0x0 0x100>、
    -<0x5 0x00000000 0x1 0x0000000>;
    +<0x5 0x00000000 0x1 0x0000000>;
    中断= ;
    CDN、FIFO 深度=<256>;
    CDN、FIFO 宽度=<4>;
    CDN、触发器地址=<0x0>;
    Clocks =<&K3_CLKS 103 0>;
    - Assigned-clocks =<&K3_CLKS 103 0>;
    - assigned-clock-parament=<&k3_CLKS 103 2>;
    -分配的时钟速率=<1666666>;
    -电源域=<&K3_PDS 103 TI_SCI_PD_EXCLUSTED>;
    + CDN、相位检测选择器=<2>;
    + Clocks =<&K3_CLKS 104 0>;
    +电源域=<&K3_PDS 104 TI_SCI_PD_EXCLUSCE>;
    #address-cells =<1>;
    #size-cells =<0>;
    STATUS =“已禁用“;
    diff -git a/arch/arm/dts/k3-j7200-sm-p0.dtsi b/arch/arm/dts/k3-j7200-sm-p0.dtsi
    索引 910a4b5c..b5a7fb64 100644
    /arch/arm/dts/k3-j7200-sm-p0.dtsi
    ++ b/arch/arm/dts/k3-j7200-sm-p0.dtsi
    @@–427,14 +427,14 @@
    闪存@0{
    兼容=“JEDEC、SPI-NOR“;
    REG =<0x0>;
    - SPI-TX-BUS-WIDTH =<8>;
    - spi-rx-bus-width =<8>;
    - spi-max-frequency =<25000000>;
    + SPI-TX-BUS-WIDTH =<1>;
    + SPI-Rx-BUS-WIDTH =<4>;
    + SPI-max-频率=<40000000>;
    CDN、tshsl-ns =<60>;
    CDN、tsd2d-ns =<60>;
    CDN、tchsh-ns =<60>;
    CDN、tslch-ns =<60>;
    - CDN、读取延迟=<4>;
    + CDN、读取延迟=<2>;

    分区{
    兼容=“固定分区“;
    diff -git a/drivers/spi/cadence_qsp.c b/drivers/spi/cadence_qspi.c
    索引 e0d13e36..a3b1b085 100644
    -- A/drivers/spi/cadence_QSPI.c
    ++ b/drivers/spi/cadence_QSPI.c
    @@–29,6 +29,8 @@
    #define CSSPI_READ 2.
    #define CSSPI_WRITE 3.

    +#define _debug 1
    +
    __weak int cadence_QSPI_APB_DMA_read(结构 cadence_spi_priv *priv、
    常量结构体 spi_mem_op * op)

    @@–584,6 +586,8 @@ static int cadence_spi_write_speed(结构设备*bus、uint Hz)
    priv->tshsl_ns、priv->tsd2d_ns、
    priv->tchsh_ns、priv->tslch_ns);

    + debug(“%s":“:speed=%d\n“、__func__、Hz);
    +
    返回 0;
    }

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

    您好、

    我在日志中看不到驱动程序的调试打印。 您能否确认正在编译并复制 u-boot? 我在 a72 spl (tispl.bin) 中看到它、但在 u-boot 中没有看到。

    我还看到了“从 SPIFlash 加载环境...“ 日志中。 您能否分享闪存中已经有哪些环境? 正在阅读什么内容? 此环境似乎有一些运行“sf probee“的命令

    这里似乎使用了 SPI 引导模式。 是否可以使用其他一些介质来访问 u-boot 并使用它测试闪存?

    对于调试调用、我在 IST 下午 2:30 有半小时的时间可用。 如果可行、请告诉我。 否则,我们将不得不明天上午印度时间。

    此致、
    Tanmay

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

    Tanmay 和 Alvin、  

    从您发布的日志中、似乎已启用 PHY 模式。  

    我的理解是否正确?

    正在从 SPIFlash... Cadence_SPI@47040000:无法找到 PHY 图形分区

    Br、Rich

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

    您好 Rich、

    否、默认情况下会打印、因为它只是检查设备树中是否定义了 phy 模式分区、以及其中是否存在模式。

    它不会启动 phy 模式的实际校准。 这没有发生。

    此致、
    Tanmay

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

    phy 校准是否应该正常工作?

    因为在 DTS 中:

    			partition@3fe0000 {
    				label = "qspi.phypattern";
    				reg = <0x3fe0000 0x20000>;
    			};
    

    但在驱动程序中:

    	/*
    	 * If the device tree already provides a read delay value, use that
    	 * instead of calibrating.
    	 */
    	if (priv->read_delay >= 0) {
    		cadence_spi_write_speed(bus, hz);
    		cadence_qspi_apb_readdata_capture(priv->regbase, 1, true,
    						  priv->read_delay);
    	} else if (priv->previous_hz != hz ||
    		   priv->qspi_calibrated_hz != hz ||
    		   priv->qspi_calibrated_cs != spi_chip_select(bus)) {
    		/*
    		 * Calibration required for different current SCLK speed,
    		 * requested SCLK speed or chip select
    		 */
    		err = spi_calibration(bus, hz);
    		if (err)
    			return err;
    
    		/* prevent calibration run when same as previous request */
    		priv->previous_hz = hz;
    	}
    

    因此、如果指定了读取延迟、则不会进行校准。

    也在 Cadence_SPI_ofdata_phy_pattern() 函数中:

    	while (ofnode_valid(subnode)) {
    		label = ofnode_read_string(subnode, "label");
    		if (label && strcmp(label, "ospi.phypattern") == 0) {
    			if (!ofnode_read_u32_array(subnode, "reg", &start, 1))
    				return start;
    			break;
    		} else if (label && strcmp(label, "ospi_nand.phypattern") == 0)
    			return 0;
    
    		subnode = ofnode_next_subnode(subnode);
    	}
    

    这意味着分区需要找到确切的名称“ospi<.nand>.phypatern"。“。

    这里的一般想法是什么? 避免 QSPI 上的 phy 校准、仅使用 4 个 TX 通道中的 1 个并保持在 25MHz?

    此致、

    /BO

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

    我可以使用 Alvin 确认我的调试结果:

    U-Boot SPL 2024.04-ti-g8164c19ba3af (Sep 18 2025 - 08:06:28 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.6--v10.01.06 (Fiery Fox)')
    Trying to boot from SPI
    cadence_spi spi@47050000: Unable to find PHY pattern partition
    cadence_spi_of_to_plat: regbase=47050000 ahbbase=58000000 max-frequency=40000000 page-size=256
    cadence_spi_write_speed: speed=40000000
    cadence_spi_set_speed: speed=40000000
    cadence_spi_write_speed: speed=25000000
    cadence_spi_set_speed: speed=25000000
    Authentication passed
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    

    但不像他,我只得到上面的打印出来。 在引导的后续阶段无。

    /BO

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

    嗨、Rich、Bo、

    请在配置文件中进行以下更改:

    diff --git a/configs/j721e_evm_a72_defconfig b/configs/j721e_evm_a72_defconfig
    index e23c81f84a4..743d7efedcf 100644
    --- a/configs/j721e_evm_a72_defconfig
    +++ b/configs/j721e_evm_a72_defconfig
    @@ -10,7 +10,7 @@ CONFIG_SOC_K3_J721E=y
     CONFIG_TARGET_J721E_A72_EVM=y
     CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
     CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80480000
    -CONFIG_SF_DEFAULT_SPEED=25000000
    +CONFIG_SF_DEFAULT_SPEED=40000000
     CONFIG_ENV_SIZE=0x20000
     CONFIG_DM_GPIO=y
     CONFIG_SPL_DM_SPI=y
    diff --git a/configs/j721e_evm_r5_defconfig b/configs/j721e_evm_r5_defconfig
    index 14e9a67f3dd..21de35fc4ff 100644
    --- a/configs/j721e_evm_r5_defconfig
    +++ b/configs/j721e_evm_r5_defconfig
    @@ -12,7 +12,7 @@ CONFIG_K3_QOS=y
     CONFIG_TARGET_J721E_R5_EVM=y
     CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
     CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x41cf59f0
    -CONFIG_SF_DEFAULT_SPEED=25000000
    +CONFIG_SF_DEFAULT_SPEED=40000000
     CONFIG_ENV_SIZE=0x20000
     CONFIG_DM_GPIO=y
     CONFIG_SPL_DM_SPI=y
    

    这不会将速度更改为 25MHz、并在整个启动过程中将其保持在 40MHz。

    [引述 userid=“551261" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1544769/dra821u-qspi-flash-operating-clock-on-dra821u/6034119

    因此、如果指定了读取延迟、则不会进行校准。

    [/报价]

    函数“SPI_calibration"不“不适用于基于 phy-pattern 的校准。 使用“spi-calibration",“,您、您可以在 tap 模式下校准延迟、而使用基于 phy-pattern 的校准(在“cadence_spi_mem_do_calibration ()“中完成)则可以在 PHY 模式下校准延迟。 两种模式都是独立模式。  

    “读取延迟“提到的延迟是给定电路板的固定类型的延迟(取决于原理图)。 因此、它通常采用硬编码。 其中、PHY 模式中使用的延迟设置每次都必须进行校准、因为它们可能会有所不同。

    一般而言、我认为对于 Jacinto 器件、我们只有可以高达 40MHz 运行的 QSPI SDR 模式。

    此致、
    Tanmay

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

    Tanmay、

    在这种情况下、是否仍需要更改时钟源?

    Br、Rich

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

    您好 TI  

    我应用了补丁、但仍然回到了  25000000

    diff -git a/configs/j721e_evm_a72_defconfig b/configs/j721e_evm_a72_defconfig
    索引 789d0abd..b85c8dc8 100644
    --a/configs/j721e_evm_a72_defconfig
    ++ b/configs/j721e_evm_a72_defconfig
    @@–10、7 + 10、7 @@ CONFIG_SOC_K3_J721E=y
    CONFIG_TARGET_J721E_A72_evm=y
    CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
    CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80480000
    config_sf_default_speed=25000000
    +CONFIG_SF_DEFAULT_SPEED=40000000
    CONFIG_ENV_SIZE=0x20000
    CONFIG_DM_GPIO=y
    CONFIG_SPL_DM_SPI=y
    Alvin@Ubuntu:~/moxa_data/uboot/ti_8600_last$ git diff configs/j721e_evm_r5_defconfig
    diff -git a/configs/j721e_evm_r5_defconfig b/configs/j721e_evm_r5_defconfig
    索引 8d385876..4b52858d 100644
    --a/configs/j721e_evm_r5_defconfig
    ++ b/configs/j721e_evm_r5_defconfig
    @@–12、7 + 12、7 @@ CONFIG_K3_QoS=y
    CONFIG_TARGET_J721E_R5_EVM=y
    CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
    CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x41cf59f0
    config_sf_default_speed=25000000
    +CONFIG_SF_DEFAULT_SPEED=40000000
    CONFIG_ENV_SIZE=0x20000
    CONFIG_DM_GPIO=y
    CONFIG_SPL_DM_SPI=y

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

    U-Boot SPL 2024.04-g62074eac-dirty (2025 年 9 月 19 日 — 10:18:18 +0800)
    SYSFW ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)

    DDR 类型:Micron LPDDR4 4G

    尝试从 SPI 引导
    Cadence_SPI@47040000:无法找到 PHY 图形分区
    Cadence_SPI_of_to_plat:regbase=47040000 ahbbase=50000000 max-cfrequency=40000000 page-size=256
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    Cadence_SPI_WRITE_SPEED:speed=25000000
    Cadence_SPI_SET_SPEED:speed=25000000
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64 内核上启动 ATF……

    注意:BL31:v2.10.0(发行版):62074eac-dirty
    注意:BL31:建造:10:18:42, 2025 年 9 月 19 日
    I/O TC:
    I/O:主 TC 初始化
    I/SYSFW TC ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)
    I/O:TC:安全电路板配置软件:版本 1
    I/O TC:安全启动密钥:计数 2、修订版 2
    I/HUK:TC 已初始化
    I/UL:已激活 TC 设备
    I/TRNG:已为 SA2UL TC 器件启用防火墙
    I/TRNG:SA2UL TC 已初始化
    I/UL:已初始化 TC 驱动程序
    I/O:主 TC 切换到正常世界引导

    U-Boot SPL 2024.04-g62074eac-dirty (2025 年 9 月 19 日 — 10:20:36 +0800)
    SYSFW ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)
    尝试从 SPI 引导
    Cadence_SPI@47040000:无法找到 PHY 图形分区
    Cadence_SPI_of_to_plat:regbase=47040000 ahbbbase=500000000 max-frequency=40000000 page-size=256
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524
    k3-navss-ringacc ringacc@2b800000:环加速器探测环:286, gp-rings[96,32] sci-dev-id:235
    k3-navss-ringacc ringacc@2b800000:dma-ring-reset-quirk:禁用
    Cadence_SPI_WRITE_SPEED:speed=25000000
    Cadence_SPI_SET_SPEED:speed=25000000
    SPL:复本=0
    SPL:正常模式。
    身份验证已通过
    身份验证已通过

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

    您好、

    您能检查在构建流程中构建的配置吗? 在“[u-boot-dir]/build/a72/.config 和“[u-boot-dir]/build/r5/.config 中、应该会看到“config_sf_default_speed=40000000"。“。 否则、您可能正在使用修改后的 defconfig。 您能否检查您正在使用哪些 defconfig 并在其中进行修改。

    请注意、我能够看到它们在 QSPI 引导模式下保持 40MHz:

    U-Boot SPL 2024.04-ti-dirty (Sep 18 2025 - 22:12:28 +0530)
    SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.6--v10.01.06 (Fiery Fox)')
    Detected: J7X-BASE-CPB rev E3
    Detected: J7X-GESI-EXP rev E3
    Detected: J7X-VSC8514-ETH rev E2
    BOOT: WKUP_DEVSTAT=0x00000010, MAIN_DEVSTAT=0x00000000, BOOTINDEX=0
    Trying to boot from SPI
    In cadence_spi_ofdata_phy_pattern
    cadence_spi spi@47050000: Unable to find PHY pattern partition
    cadence_spi_of_to_plat: regbase=47050000 ahbbase=700000000 max-frequency=40000000 page-size=256
    cadence_spi_write_speed: speed=40000000
    cadence_spi_set_speed: speed=40000000
    jedec_spi_nor flash@0: Software reset enable failed: -524
    k3-navss-ringacc ringacc@2b800000: Ring Accelerator probed rings:286, gp-rings[96,20] sci-dev-id:235
    k3-navss-ringacc ringacc@2b800000: dma-ring-reset-quirk: disabled
    cadence_spi spi@47050000: Pattern not found. Skipping calibration
    QSPI Debug: speed = 40000000, bus_data->speed = 40000000, mode = 0, plat->mode = 8192
    cadence_spi_write_speed: speed=40000000
    cadence_spi_set_speed: speed=40000000
    jedec_spi_nor flash@0: from 0x00280000, len d
    jedec_spi_nor flash@0: from 0x00280000, len d
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    Warning: Detected image signing certificate on GP device. Skipping certificate to prevent boot failure. This will fail if the image was also encrypted
    

    此致、
    Tanmay

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

    您好 TI  

    抱歉、我修改了错误的 defconfig。 更新新版本。

    U-Boot SPL 2024.04-g62074eac-dirty (2025 年 9 月 19 日 — 11:07:42 +0800)
    SYSFW ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)

    DDR 类型:Micron LPDDR4 4G

    尝试从 SPI 引导
    Cadence_SPI@47040000:无法找到 PHY 图形分区
    Cadence_SPI_of_to_plat:regbase=47040000 ahbbase=50000000 max-cfrequency=40000000 page-size=256
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    身份验证已通过
    在 ARM64 内核上启动 ATF……

    注意:BL31:v2.10.0(发行版):62074eac-dirty
    注意:BL31:建造:11:08:06,2025 年 9 月 19 日
    I/O TC:
    I/O:主 TC 初始化
    I/SYSFW TC ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)
    I/O:TC:安全电路板配置软件:版本 1
    I/O TC:安全启动密钥:计数 2、修订版 2
    I/HUK:TC 已初始化
    I/UL:已激活 TC 设备
    I/TRNG:已为 SA2UL TC 器件启用防火墙
    I/TRNG:SA2UL TC 已初始化
    I/UL:已初始化 TC 驱动程序
    I/O:主 TC 切换到正常世界引导

    U-Boot SPL 2024.04-g62074eac-dirty (2025 年 9 月 19 日 — 11:09:32 +0800)
    SYSFW ABI:4.0(固件版本 0x000b “11.0.9--v11.00.09+(花哨 RAT)“)
    尝试从 SPI 引导
    Cadence_SPI@47040000:无法找到 PHY 图形分区
    Cadence_SPI_of_to_plat:regbase=47040000 ahbbbase=500000000 max-frequency=40000000 page-size=256
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524
    k3-navss-ringacc ringacc@2b800000:环加速器探测环:286, gp-rings[96,32] sci-dev-id:235
    k3-navss-ringacc ringacc@2b800000:dma-ring-reset-quirk:禁用
    Cadence_SPI_WRITE_SPEED:speed=40000000
    Cadence_SPI_SET_SPEED:速度= 40000000
    SPL:复本=0
    SPL:正常模式。
    身份验证已通过
    身份验证已通过


    U-Boot 2024.04-g62074eac-dirty (2025 年 9 月 19 日 — 11:09:32 +0800)

    SoC:J7200 SR2.0 HS-SE
    型号:Texas Instruments J7200 EVM
    DRAM:4 GiB
    内核:107 个器件、32 个类、器件树:单独
    警告:设备树包含旧的“u-boot、dm-“标签:请在 2023.07 之前修复!
    WDT:开始维护(15s 超时)
    MMC:MMC@4f80000:0、MMC@4fb0000:1.
    正在从 SPIFlash... Cadence_SPI@47040000:无法找到 PHY 图形分区
    JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524
    k3-navss-ringacc ringacc@2b800000:环加速器探测环:286, gp-rings[96,32] sci-dev-id:235
    k3-navss-ringacc ringacc@2b800000:dma-ring-reset-quirk:禁用
    SF:检测到 mx25l25635e、页面大小为 256 字节、擦除大小为 4 KiB、总计 32 MiB
    好的
    IN:serial@2800000
    输出:串行@2800000
    错误:serial@2800000
    am65_cpsw_Nuss 以太网@46000000:K3 CPSW:nuss_ver:0x6BA02102 cpsw_ver:0x6BA82102 ale_ver:0x00293904 Ports:1
    am65_cpsw_Nuss 以太网@c000000:k3 CPSW:nuss_ver:0x6BA02102 cpsw_ver:0x6BA82102 ale_ver:0x00294104 Ports:4
    NET:环境中的地址为 00:90:e8:11:22:00
    eth0:以太网@46000000port@1、eth1:以太网@c000000port@1、eth2:以太网@c000000port@2、eth3:以太网@c000000port@3
    TPM@0 v2.0:VendorID 0x15d1、器件 ID 0x001d、修订版 ID 0x36【打开】
    JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524
    SF:检测到 mx25l25635e、页面大小为 256 字节、擦除大小为 4 KiB、总计 32 MiB
    JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524
    SF:检测到 mx25l25635e、页面大小为 256 字节、擦除大小为 4 KiB、总计 32 MiB
    器件 0 偏移 0xc60000、大小 0x10000

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

    Tanmay、  

    defconfig 客户描述中是否存在任何不正确的设置?

    Br、Rich

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

    您好 Rich、

    您能否分享“[u-boot-dir]/build/a72/.config 和“[u-boot-dir]/build/r5/.config 之后 构建 u-boot。

    此致、
    Tanmay  

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

    您好、

    时钟似乎被设置为 33.33MHz。 这一定是因为 OSPI 控制器中的时钟分频器只有偶数。 在 40MHz 以下可以做的最好的是 33.333MHz (200/6)。

    这应该与您的示波器读数一致。

    当父时钟为 166.66MHz 时、可能的最佳时钟为 DIV 值 6、其中 DIV 值调谐为 27.77MHz。

    此致、
    Tanmay

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

    我成功地通过定义 ospi1 的父时钟并将其设置为 80MHz 来获得 40MHz。 几乎已经对 ospi0 做了什么。

    &ospi1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
    
    	assigned-clocks = <&k3_clks 104 0>;			/* DEV_MCU_FSS0_OSPI_1_OSPI_RCLK_CLK */
    	assigned-clock-parents = <&k3_clks 104 1>;	/* DEV_MCU_FSS0_OSPI_1_OSPI_RCLK_CLK_PARENT_HSDIV4_16FFT_MCU_1_HSDIVOUT4_CLK */
    	assigned-clock-rates = <80000000>;
    
    	flash@0 {
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <1>;
    		spi-rx-bus-width = <4>;
    		spi-max-frequency = <40000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <2>;
    

    Tanmay Patil 您看到此设置有什么问题吗?

    引导日志显示实际时钟现在是 40MHz、示波器会将其正确验证。

    U-Boot SPL 2024.04-ti-gda00c65d74dc (Sep 24 2025 - 09:32:35 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.8--v11.01.08 (Fancy Rat)')
    Trying to boot from SPI
    cadence_spi spi@47050000: Unable to find PHY pattern partition
    cadence_spi_of_to_plat: regbase=47050000 ahbbase=58000000 max-frequency=40000000 page-size=256
    cadence_qspi_apb_config_baudrate_div: ref_clk 80000000Hz sclk 40000000Hz Div 0x0, actual 40000000Hz
    cadence_spi_set_speed: speed=40000000
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    cadence_qspi_apb_config_baudrate_div: ref_clk 80000000Hz sclk 40000000Hz Div 0x0, actual 40000000Hz
    cadence_spi_set_speed: speed=40000000
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    cadence_qspi_apb_chipselect : chipselect 0 decode 0
    Authentication passed
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    

    此致、

    /BO

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

    Tanmay、  

    我的客户现在还能够在将时钟源更改为 200MHz PLL 后修改时钟。  

    时钟测量符合预期、它可以检测到 100Mhz 时钟、但错误率会显著上升。  

    但是、访问时间仍然很慢的原因是 DRA821 OSPI0 使用双读取模式来访问 QSPI 闪存。  

    仅使用了两个数据引脚、并且无法使用 4 个数据引脚(四路读取)运行。  

    我发现 SPI 总线宽度的设置如下所示  

    SPI-TX-BUS-WIDTH =<1>;
    SPI-Rx-BUS-WIDTH =<4>;

    客户只能设置

    SPI-TX-BUS-WIDTH =<8>;
    SPI-Rx-BUS-WIDTH =<8>;

    但 OSPI 控制器只会在双路读取模式下运行。  

    强制设置为与您不工作的相同。  

    我们怀疑这可能与客户使用的闪存模型内部的 QE 位设置有关。 QSPI 闪存模型为 Marconix MX25L25645G。

    我们使用编程工具强制将 QE 位设置为 1。  

    不确定 OSPI 控制器无法切换到四路读取模式的原因。  

    是否有任何建议或检查点?  

    Br、Rich

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

    Tanmay、  

    客户将 build/a72/.config 与 build/a53/.config 进行比较、它们在 AM62x 和 AM64x 中使用、并且找不到任何可能相关的更改或设置缺失。  

    四路模式启用的过程也会根据驱动程序中添加的调试日志执行。  

    客户还验证了 AM62x 平台上的该 Macronix 闪存、并在双模式下工作。  

    现在我们怀疑闪存可能不会更改为四路使能模式、因为软件复位未完成且始终获取超时。  

    “JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524"</s>“

    我记得您说过、这与在线调试无关、因为您在 EVM 上的日志中也会显示该错误日志。  

    显示此日志但不影响闪存行为的原因是否存在?  

    您能否跟踪该功能并查看其是否合理?  

    Br、Rich  

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

    Tanmay、  

    通过将时钟源从时钟源 103 (166MHz) 更改为时钟源 104 (200MHz)

    Clocks =<&K3_CLKS 103 0>;
    - Assigned-clocks =<&K3_CLKS 103 0>;
    - assigned-clock-parament=<&k3_CLKS 103 2>;
    -分配的时钟速率=<1666666>;
    -电源域=<&K3_PDS 103 TI_SCI_PD_EXCLUSTED>;
    + CDN、相位检测选择器=<2>;
    + Clocks =<&K3_CLKS 104 0>;
    +电源域=<&K3_PDS 104 TI_SCI_PD_EXCLUSCE>;

    我们现在可以实现 50MHz (/4)、33.33Mhz (/6) 和 25MHz (/8)。

    因此、将目标时钟设置为 40MHz 将仅获得 33.33Mhz、而将目标时钟设置为 50MHz 将获得 50MHz。  

    OSPI0 的原始时钟源 103 为 166MHz、因此在将目标时钟设置为 25MHz 时、客户得到 20.75MHz (/8)、需要设置为 41.5MHz 以获得 41.5MHz 时钟。   

    回到 Macronix 闪存情况、客户 通过逻辑分析仪捕获所有推荐波形和数据以进行分析、发现 客户发现它可以在 u-boot 第一次启动时工作、但它将在 SF 探针后崩溃。  

    纵观 DRA821 的推荐问题、它将 发出复位启用命令 66h、然后在未收到以下命令 99h 的情况下停止。   

    采取了两种办法

    1.添加 SPI_NOR_SKIP_SFDP、它应该可以解决它在 SF 探针后崩溃时的问题、因为此 QSPI 闪存支持 SFDP。  

    2.删除软复位   

    客户使 Macronix 闪存在移除“软复位“并通过压力测试后能够正常使用 DRA821。

    似乎 softreset 是 Marconix 的根本原因。  

    您看到是否存在删除软复位的风险?  

    Br、Rich

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

    Tanmay、  

    软件复位是否出现任何错误? 即使使用 Micron QSPI 闪存、它也始终显示错误。  

    “JEDEC_SPI_NOR 闪存@0:软件复位启用失败:–524"</s>“

    为什么 Macronix 需要删除 softreset 才能使其正常工作?  

    Br、Rich

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

    您好 Rich、

    softreset 首先尝试在某种模式下配置闪存、该模式在微米和 macronix 闪存上都失败。 因此、软复位失败。 在此模式下无需强制使用闪存、因此即使没有闪存、闪存也能正常工作。

    这些闪存似乎可以不同地处理相同的命令、因此微米级闪存可以正常工作、软复位失败、而 macronix 闪存则不会。

    此致、
    Tanmay

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

    Tanmay、  

    该软件复位 (0x66h 和 0x99h) 是否是闪存所需的标准命令?  

    软件复位是否会在初始化期间执行?   

    从结果来看、软件复位失败似乎不会影响 Micron、但会影响 Macronix、这有风险。  

    为什么软件重置将重置启用失败:–524(超时?)  

    在使用 Micron 以外的闪存时、客户应该如何解决此问题?  

    Br、Rich

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

    您好 Rich、

    请在 u-boot 中查看以下注释:

    	/*
    	 * When the flash is handed to us in a stateful mode like 8D-8D-8D, it
    	 * is difficult to detect the mode the flash is in. One option is to
    	 * read SFDP in all modes and see which one gives the correct "SFDP"
    	 * signature, but not all flashes support SFDP in 8D-8D-8D mode.
    	 *
    	 * Further, even if you detect the mode of the flash via SFDP, you
    	 * still have the problem of actually reading the ID. The Read ID
    	 * command is not standardized across flash vendors. Flashes can have
    	 * different dummy cycles needed for reading the ID. Some flashes even
    	 * expect a 4-byte dummy address with the Read ID command. All this
    	 * information cannot be obtained from the SFDP table.
    	 *
    	 * So, perform a Software Reset sequence before reading the ID and
    	 * initializing the flash. A Soft Reset will bring back the flash in
    	 * its default protocol mode assuming no non-volatile configuration was
    	 * set. This will let us detect the flash even if ROM hands it to us in
    	 * Octal DTR mode.
    	 *
    	 * To accommodate cases where there is more than one flash on a board,
    	 * and only one of them needs a soft reset, failure to reset is not
    	 * made fatal, and we still try to read ID if possible.
    	 */

    此致、
    Tanmay

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

    Tanmay、  

    作为两次连续访问之间的长间隔问题、我已向团队和抄送您提交了一个内部 TT。  

    请与开发人员检查此问题并提供更新。  

    Br、Rich  

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

    您好 Rich、

    感谢您的更新。 我已将该工单转发给硬件团队中的相关成员。

    此致、
    Tanmay