IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植

        imx6ull移植uboot 2020.04,刚开始没有在uboot启动阶段操作SD卡,所以一直没有发现sd卡没有识别,如下图:

        IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第1张图片

        mmc命令操作如下:

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第2张图片

        经过多天的折腾,通过研究配置文件及相关的头文件mx6ullevk.h终于找到了原因,原来是需要使能CONFIG_FSL_USDHC,如下图        IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第3张图片

        如上说明要想使用sd需要使能FSL_USDHC,如果是NAND版本的就启用usdhc2,usdhc1一般是留给emmc存储介质用的。既然如此那就在配置文件中加上FSL_USDHC使能项吧。

        在配置文件任意位置加上CONFIG_FSL_USDHC=y,然后编译。尽然报错,报错内容如下:

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第4张图片

        又是各种百度、查找原因,最后发现配置头文件中有一个#define CONFIG_SYS_FSL_ESDHC_ADDR   USDHC2_BASE_ADDR,感觉像是它导致的问题,那么是不是要关闭这个FSL_ESDHC功能,在配置文件中搜索FSL_ESDHC,发现如下:

        果断将其注释掉,如下:

        编译完成。

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第5张图片

        至于警告不用管,因为我的板子上根本就用不到这个功能。烧录到SD 

        sudo dd if=u-boot-dtb.imx of=/dev/sdb bs=1K seek=1 && sync

        上机测试一下,果然很完美。

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第6张图片

        识别到SD了,mmc指令操作如下:

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第7张图片

        完美识别sd卡。

        接下来就轮到网卡驱动的移植了,主要就是改设备树及配置头文件。

IMX6ULL nand启动基于Uboot 2020.04双网卡及sd卡支持移植_第8张图片

        默认使用的是网卡1,也就是fec2,设备树修改如下:

&fec1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet1>;
	            // &pinctrl_fec1_reset>;
	phy-mode = "rmii";
	phy-handle = <ðphy0>;
    	phy-reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
    	phy-reset-duration = <26>;
	status = "okay";
	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy0: ethernet-phy@0 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <0>;
			//micrel,led-mode = <1>;
            smsc,disable-energy-detect;
		};

	};
};

&fec2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet2>;
	            // &pinctrl_fec2_reset>;
	phy-mode = "rmii";
	phy-handle = <ðphy1>;
    	phy-reset-gpios = <&gpio5 6 GPIO_ACTIVE_LOW>;
    	phy-reset-duration = <26>;
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;

		ethphy1: ethernet-phy@1 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <1>;
			micrel,led-mode = <1>;
            smsc,disable-energy-detect;
		};
	};
};

        刚开始将fec1设置为status=disabled,fec2设置为status=okay,编译后启动提示找不到网卡。后来才发现是pinctrl_enet2里的引脚没有定义如下引脚,只是在pinctrl_enet1里添加了。

        添加上重新编译后启动就可以了。

       正常时开启一个网卡就可以了,那么我为什么要将两个网卡都启动,那就要提一下linux启动后提示eth1连接不到phy,也是各种找linux的配置文件和设备树问题,没有找到,最后发现uboot启动双网卡就解决问题了,我也是很无语,感觉莫名其妙,只能这样了。

        pinctrl_enet1和pinctrl_enet2设置如下:

pinctrl_enet1: enet1grp {
			fsl,pins = <

				MX6UL_PAD_GPIO1_IO07__ENET2_MDC		0x1b0b0
				MX6UL_PAD_GPIO1_IO06__ENET2_MDIO	0x1b0b0
				MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN	0x1b0b0
				MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER	0x1b0b0
				MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00	0x1b0b0
				MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01	0x1b0b0
				MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN	0x1b0b0
				MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00	0x1b0b0
				MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01	0x1b0b0
				MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1	0x4001b031
			>;
		};

		pinctrl_enet2: enet2grp {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO07__ENET2_MDC		0x1b0b0
				MX6UL_PAD_GPIO1_IO06__ENET2_MDIO	0x1b0b0
				MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN	0x1b0b0
				MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER	0x1b0b0
				MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00	0x1b0b0
				MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01	0x1b0b0
				MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN	0x1b0b0
				MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00	0x1b0b0
				MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01	0x1b0b0
				MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2	0x4001b031
			>;
		};

        

你可能感兴趣的:(Linux,uboot,imxull)