一、原理图

 

 二、dts

&gmac1_clkin{
     clock-frequency = <50000000>;
	 status = "okay";
};
&gmac1 {
		phy-mode = "rmii";
		clock_in_out = "input";
		snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
		snps,reset-active-low;
		snps,reset-delays-us = <0 20000 100000>;
		assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
		assigned-clock-parents = <&cru SCLK_GMAC1_RMII_SPEED>, <&gmac1_clkin>;
		pinctrl-names = "default";
		pinctrl-0 = <&gmac1m0_miim 
		             &gmac1m0_clkinout 
		             &gmac1m0_rx_bus2
		             &gmac1m0_tx_bus2 
		             &gmac1m0_rx_er>;
		phy-handle = <&rmii_phy1>;
		status = "okay";
};

&mdio1 {
         rmii_phy1: phy@0 {
         compatible = "ethernet-phy-ieee802.3-c22";
         reg = <0x0>;
       };
};

三、dts配置有问题的会有下面的error提示

[   18.531425] [dhd] CFG80211-ERROR) wl_setup_wiphy : Registering Vendor80211
[   18.533564] rk_gmac-dwmac fe010000.ethernet: Failed to reset the dma
[   18.533606] rk_gmac-dwmac fe010000.ethernet eth0: stmmac_hw_setup: DMA engine initialization failed
[   18.533616] rk_gmac-dwmac fe010000.ethernet eth0: stmmac_open: Hw setup failed
[   18.536315] [dhd] CFG80211-ERROR) wl_setup_wiphy : SAE support

四、调试过程硬件的检查

      1、用示波器测量晶振,是否有25M。实际测试发现就算reset脚拉低,晶振照样起振,有25M的波形。

     2、上电复位后,YT8512C PHY_TXC会有50M的波形输出,如果不接网线,过十几秒后就没有波形,接上网线后就有50M的波形。

      3、把dts 里面的gmac1 disabled,不让网卡的程序工作。然后adb 进入手动复位脚,拉低后再拉高,在不接网线的情况下,YT8512C PHY_TXC会有50M的波形输出,过几十秒后就没有波形了。再次复位,就又有50M波形。

五、调试完成。

1、拔插网线会有log提示。

 2、桌面上面状态栏会有网络连接图标。

 3、ifconfig查看ip

  4、PC和ARM 板互 ping,网络连接ok。

  5、打开settings下面Ethernet选项,再build.prop里面添加ro.vendor.ethernet_settings=true。

packages\apps\Settings\src\com\android\settings\ethernet\EthernetSettings.java

 

  6、总结,到头来还是dts配置出问题导致调试过程耗费很多时间。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐