首先我们先来测试看看以太网是否通的
在 RK 上面调试以太网就相对比较简单,因为在 RK 的芯片中内置以太网 MAC 控制器,所以只需要搭配一颗以太网 PHY 芯片就可以实现以太网功能!
所以不管是PHY 厂家有多少,基本的功能是都是使用 RK 的驱动配置基本就可以实现,就是调用RK 的通用的驱动接口
10/100M以太网 PHY 与 MAC 之间的接口主要有 MII 和 RMII
10/100/1000M 以太网 PHY 与MAC 之间的接口主要有 RGMII
在用的比较多的 RK3288 RK3399 的芯片上面都是支持 RMII 和 RGMII 接口的,也就是都可以支持 100 M 网卡,或者 1000M网卡
RK 调试以太网 很简单,两步:
- 下面的配置默认已经打开,确认下就行
Device Drivers > Network device support > PHY Device support and infrastructure
Driver for Rockchip Ethernet PHYs
- 修改 dts 文件,看你是支持 什么接口的,也就是你只有 100 M 网卡,还是 1000M 网卡即可
100 M 和 1000M 的PHY 就是这有点不一样
1000M PHY 配置
clkin_gmac: external-gmac-clock {
compatible = "fixed-clock";
clock-frequency = <125000000>; // 这个时钟 1000M 使用 rgmii 接口固定是 125M
clock-output-names = "clkin_gmac";
#clock-cells = <0>;
};
&gmac {
phy-supply = <&vcc_phy>;
phy-mode = "rgmii"; // 说明接口是什么 PHY
clock_in_out = "input"; // 是 input 的时候,就由 PHY 提供 125 M ,1000M 的是 input
snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>; // 这个就具体是 硬件接口看 原理图
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
assigned-clocks = <&cru SCLK_RMII_SRC>;
assigned-clock-parents = <&clkin_gmac>;
pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>;
tx_delay = <0x28>;
rx_delay = <0x11>;
status = "okay";
};
100 M PHY 配置
clkin_gmac: external-gmac-clock {
compatible = "fixed-clock";
clock-frequency = <50000000>; // 这个时钟 100M 使用 rmii 接口固定是 50M
clock-output-names = "clkin_gmac";
#clock-cells = <0>;
};
&gmac {
phy-supply = <&vcc_phy>;
phy-mode = "rmii"; // 说明接口是什么 PHY
clock_in_out = "output"; // 是 output 的时候,就由 RK芯片 提供 50M ,1000M 的是 input
snps,reset-gpio = <&gpio3 15 GPIO_ACTIVE_LOW>; // 这个就具体是 硬件接口看 原理图
snps,reset-active-low;
snps,reset-delays-us = <0 10000 50000>;
assigned-clocks = <&cru SCLK_RMII_SRC>;
assigned-clock-parents = <&clkin_gmac>;
pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>;
再看原理图 确认 供电、复位脚是否正确
PHY_RST
就可以了,编译,烧写,即可,软件要做的就是这些了,当然硬件确保 晶振是否正确,还有注意一点,RK3288 的时候,最好使用 外部 50M 时钟,因为RK出来的时钟会有不准!
然后就可以查看网卡是否存在
rk3399:/ # ifconfig
ifconfig
eth0 Link encap:Ethernet HWaddr 5e:3b:2d:ef:27:c7 Driver rk_gmac-dwmac
inet6 addr: fe80::ba2:a423:2d3e:21ed/64 Scope: Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:1008
Interrupt:24
没有分配IP ,需要接上网线
eth0 Link encap:Ethernet HWaddr 5e:3b:2d:ef:27:c7 Driver rk_gmac-dwmac
inet addr:192.168.1.16 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::ba2:a423:2d3e:21ed/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2152 TX bytes:2581
Interrupt:24
就可以有了
这里提一下 usb 以太网卡,因为rk 的usb 以太网卡 没有做好,需要修改进行字节比对,后面有需要再跟大家讲!