这里只是浅浅分析一下
1.主控里面会内置mac
2.mac有组接口接到phy(网络芯片:8201)
3.phy(网络芯片:8201)接到网口
//这里就到达硬件的接口了,大致就是这个原理;
============================================================================
4.然后涉及到软件部分
就是mdio总线;这个总线是注册phy用的;
如果注册失败会导致网口无法使用
[ 1.002751] mdio_bus stmmac-0: MDIO device at address 0 is missing.
[ 46.868034] rk_gmac-dwmac ffc40000.ethernet eth0: Could not attach to PHY
[ 46.868084] rk_gmac-dwmac ffc40000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19)
修改这个节点调整注册;
注册成功后是可以看到生成对应的节点
find / -name phy_registers
cat /sys/devices/platform/ffc40000.ethernet/mdio_bus/stmmac-0/stmmac-0:01/phy_registers
即可查看寄存器的值,这个就是注册好的phy节点;
======================================================================
然后就是
这里是配置节点
配置好就有这个节点;
然后开机会去关联phy节点,如果找到芯片就会跑mac部分
看到这些就是关联上的打印;
============================================================================
时钟要用示波器看频率是否正确
============================================================================
然后后面就要会phy芯片的原理
1.芯片是什么模式
2.芯片用什么连接方式
3.时钟是用晶振(外置25m)还是soc(rv1109:50M)发过来
4.怎么查看寄存器
数据手册上都有,我就不一一分析了;
然后可以在查看寄存器
find / -name phy_registers
cat /sys/devices/platform/ffc40000.ethernet/mdio_bus/stmmac-0/stmmac-0:01/phy_registers
类似方法先调试修改寄存器,后面代码中实现即可;
驱动中phy对id的支持
==========================================================================
uboot中也有一个IP识别
可以看到uid=0x128就是ID
后面网络会调用以下函数,对于一些网卡芯片支持打补丁的跑这些代码;
例:RTL8201直接就是可以上网的不需要这边;但是SZ18201就要跑这些函数修改一下时钟;
这些就是寄存器根据硬件不同需要的修改了.
可以在打印上看到他们的运行
总的来说:就是确定芯片的功能;一点一滴都是摸索来的,且行且珍惜!