一、原理图
二、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配置出问题导致调试过程耗费很多时间。