以太网是802.3的封包,其实去掉物理层网络层传输层的那层皮,不管是80几的,到了应用层一样是http ftp scp rtmp mqtt。。。。各种
上层问题基本无,有也是应用的问题,目前的IPC基本都是socket,很少用dbus,上层去看看了
我其实主要是看搭载上的,是的。。能用就行
以太网不通,以太网传的慢,概率性掉比较多
主要有主控的MAC 和PHY芯片的问题,因为真他妈太多条线了,硬件问题多
MAC和PHY接线主要有 MII RMII GMII RGMII
MII 25M 4根线 tx clk rx clk 百兆网 25*4 =100M
RMII 50M 2根线 ref clk 百兆网 50*2=100M
GMII 125M 8根线 gtx clk rx clk 千兆网 125*8=1000M
RGMII 125M 4根线 rx clk tx clk 千兆网 125*4*2(上升沿,下降沿都传数据) =1000M
用RK的ic,一般原理图也就是这几款验证过了,所以基本LAN8720和RTL8211用的比较多
如图就是8211的PHY CLK的两个引脚,这两个脚和MAC CLK是怎么接的呢?
就是这样接的,如果由MAC提供CLK的话,R129就要接上,如果由PHY提供CLK的话,就是和上图一样直接NC就Ok
看得有点麻烦,其实如果是PHY由外部提供CLK的话,PHY_CLKOUT就相当于废了,就是这样理解。
DTS上的配置是根据硬件来配置的,比如一开始的接口是RGMII的接线,板子就是这样接的,一根根的线,那么就要配置
成为RGMII,改成GMII那不对了,除非改成GMii接线,还有就是CLK的配置,也是根据硬件接线来改,并不能下发指令让phy成为输入或者输出,要用配置引脚来配置,具体看datasheet。
1、看连线是否都连上
具体连线:
-----------------RTL8211-----------千兆网----------
PHY(左侧) MAC(右侧)
xtal1或者clkout mac_clk(一起连,外部不接自激电路就直接mac_clk给,dts上设置output直接给xtal1,百兆网是25M,千兆网是125M)
tx0 - tx0
tx1 - tx1
tx2 - tx2
tx3 - tx3
txen- txen
txclk-txclk
rx0 - rx0
rx1 - rx1
rx2 - rx2
rx3 - rx3
rxen-rxen
rxclk-rxclk
rxdv-rxdv
mdio-mdio
mdc-mdc
GPIO - phy rst
注意每根线都得连上,少连一根都会找不到phy设备,还有rst也要看看有没有使能,如果吞吐有问题再调tx rx delay
---------------lan8720A-------------百兆网--------
LED1_AD1 接下拉的时候 INTB才会输出CLK(接25M晶振,内部倍频 INTB输出50M)
DNP(do not populate)不焊接的意思,LED0_AD0接下拉是设置芯片地址为0
phy mac
xtal1 mac_clk
tx0 - tx0
tx1 - tx1
//tx2 - tx2
//tx3 - tx3
txen- txen
//txclk-txclk
rx0 - rx0
rx1 - rx1
//rx2 - rx2
//rx3 - rx3
//rxen-rxen
//rxclk-rxclk
rxdv-rxdv
rxer-rxer
mdio-mdio
mdc-mdc
gpio - phy rst
2、检查是否由MAC CLK或者 PHY CLK 出来
3、在看一下tx delay rx delay
https://github.com/Poco-Ye/rk-ethernet
4、引脚复用或者设置上拉