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:在 U-Boot 中未检测到 QSPI

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1633381/am4378-qspi-not-detected-in-u-boot

器件型号: AM4378

您好、

我已将 U-Boot 移植到定制 AM437x 板。 我使用了 TI 的 SDK:TI-PROCESSOR-SDK-LINUX-AM437X-EVM-11.02.05.02-LINUX-x86-Install.bin。  

修改电路板的 U-Boot 后、我使用 SD 卡引导系统。

但是、QSPI 似乎未被识别。 当我在控制台中输入“f probee“命令时、将显示以下消息:

JEDEC_SPI_NOR 闪存@0:无法识别的 JEDEC ID 字节:00、00、00
在 0:0 处初始化 SPI 闪存失败(错误–2)

下面是 dts 文件和配置文件。

am437x-upe1.dts.txt 

configs.txt 

我不确定问题是由 dts 文件还是配置引起。

最后、我想从 QSPI 引导 U-Boot。

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

    与  AM4378 相关:在定制 AM437x 板上未检测到 QSPI

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

    尊敬的 Kim:

    可以尝试添加吗  bootph-pre-ram  pinmux 和 QSPI 节点的新功能?

    您能尝试使用这个修改过的 DTS 节点吗?

    qspi1_default: qspi1-default-pins {
        bootph-pre-ram;
    	pinctrl-single,pins = <	
    		AM4372_IOPAD(0x87c, PIN_OUTPUT_PULLUP | MUX_MODE3)	/* gpmc_csn0.qspi_csn */
    		AM4372_IOPAD(0x888, PIN_OUTPUT | MUX_MODE2)		/* gpmc_csn3.qspi_clk */
    		AM4372_IOPAD(0x890, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_advn_ale.qspi_d0 */
    		AM4372_IOPAD(0x894, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_oen_ren.qspi_d1 */
    		AM4372_IOPAD(0x898, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_wen.qspi_d2 */
    		AM4372_IOPAD(0x89c, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_be0n_cle.qspi_d3 */
    	>;
    };

    启用上拉电阻。

    &qspi {
        bootph-pre-ram;
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&qspi1_default>;
    
    	spi-max-frequency = <24000000>;
    	flash@0 {
    		compatible = "spansion,s25fl128s", "jedec,spi-nor";
    		spi-max-frequency = <24000000>;
    		reg = <0>;
    		// spi-cpol;
    		// spi-cpha;
    		spi-tx-bus-width = <1>;
    		spi-rx-bus-width = <4>;
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		/* MTD partition table.
    		 * The ROM checks the first 512KiB
    		 * for a valid file to boot(XIP).
    		 */
    		partition@0 {
    			label = "QSPI.U_BOOT";
    			reg = <0x00000000 0x00080000>;
    		};
    		partition@1 {
    			label = "QSPI.U_BOOT.backup";
    			reg = <0x00080000 0x00080000>;
    		};
    		partition@2 {
    			label = "QSPI.U_BOOT_ENV";
    			reg = <0x00100000 0x00020000>;
    		};
    		partition@3 {
    			label = "QSPI.U-BOOT-ENV.backup";
    			reg = <0x00120000 0x00020000>;
    		};
    		partition@4 {
    			label = "QSPI.U-BOOT-DEVICETREE";
    			reg = <0x00140000 0x00010000>;
    		};
    		partition@5 {
    			label = "QSPI.KERNEL";
    			reg = <0x00150000 0x00500000>;
    		};
    		partition@6 {
    			label = "QSPI.FILESYSTEM";
    			reg = <0x00650000 0x9B0000>;
    		};
    	};
    };

    删除了 spi-cpol 和 spi-cpha、以便首先在默认模式(模式 0)下探测闪存。

    此致、
    Vinu

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

    您好、

    我尝试按照您的指示操作、但仍然无法识别。

    如下所示。

    => SF 探针
    JEDEC_SPI_NOR 闪存@0:无法识别的 JEDEC ID 字节:00、00、00
    在 0:0 处初始化 SPI 闪存失败(错误–2)

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

    尊敬的 Kim:

    根据 AM437x 的 U-boot proting 指南、 https://software-dl.ti.com/processor-sdk-linux/esd/AM437X/latest/exports/docs/linux/How_to_Guides/Board_Port / U-Boot.html 、  

    在器件树文件中进行的任何引脚多路复用设置都不适用、U-Boot 不会使用。 出现这些情况的原因是、U-Boot 器件树文件通常是 Linux 器件树文件的副本、因为这样可以简化操作、使文件保持同步。 不过、这并不意味着所有条目(如 pinmux)都适用于 U-Boot。

    您能尝试向添加这些 pinmux 配置吗  MUX.c 板级配置文件?

    此致、
    Vinu

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

    您好、

    根据您的指导修改源代码后、它现在可以正常工作。

    我 在 mux.c 中的“enable_board_pin_mux ()“函数内添加了“configure_module_pin_mux (QSPI_pin_mux);“

    非常感谢。

    此致、

    Kim