zynqmp zcu102 SD卡驱动调试

新板卡使用sdhci0,以前是sdhci1,由于官方没有使用sdhci0所以需要手动添加设备树:


&sdhci0 {
    //clock-frequency = <60000000>;
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_sdhci0_default>;
    xlnx,mio_bank = <0>;
    //no-1-8-v;
    disable-wp;
    //bus-width = <4>;
    //broken-mmc-highspeed;
    //速度:U1,A1,V10,class10
};

pinctrl_sdhci0_default: sdhci0-default {
        mux {
            groups = "sdio0_0_grp";
            function = "sdio0";
        };

        conf {
            groups = "sdio0_0_grp";
            slew-rate = <SLEW_RATE_SLOW>;
            io-standard = <IO_STANDARD_LVCMOS18>;
            bias-disable;
        };

        // mux-cd {
        //     groups = "sdio0_cd_0_grp";
        //     function = "sdio0_cd";
        // };

        // conf-cd {
        //     groups = "sdio0_cd_0_grp";
        //     bias-high-impedance;
        //     bias-pull-up;
        //     slew-rate = <SLEW_RATE_SLOW>;
        //     io-standard = <IO_STANDARD_LVCMOS18>;
        // };

        // mux-wp {
        //     groups = "sdio0_wp_0_grp";
        //     function = "sdio0_wp";
        // };

        // conf-wp {
        //     groups = "sdio0_wp_0_grp";
        //     bias-high-impedance;
        //     bias-pull-up;
        //     slew-rate = <SLEW_RATE_SLOW>;
        //     io-standard = <IO_STANDARD_LVCMOS18>;
        // };
    };

启动后出现问题:mmc0: error -84 whilst initialising SD card

zynqmp zcu102 SD卡驱动调试

分析原理图后还是没有搞清楚芯片使用的是1.8v还是3.3v,因为一边1.8一边3.3晕。有人知道的话不吝赐教!

zynqmp zcu102 SD卡驱动调试

解决方法: 打开sdhci0节点中的no-1-8-v 特性后顺利识别sd卡。

zynqmp zcu102 SD卡驱动调试

调试过程中看了一个帖子,虽然没有解决我的问题,但是还是有价值的。

https://blog.****.net/jasonwang1002/article/details/102532862(博主跟我的错误码一样都是-84)

zynqmp zcu102 SD卡驱动调试

zynqmp zcu102 SD卡驱动调试