前段时间一直在公司调试千兆网卡的驱动,从U-boot到 Kernel 的网络部分都做了更改。感觉怎个调试的过程确实是比较艰辛的。从125M时钟的不能输出、接收不到数据、发送数据丢包,每走一步都尝试了很多的办法。不过这个过程走完后,感觉确实是学习了很多。下面就将自己开发过程中总结的一些东西写出来吧。
感觉怎个网卡驱动的开发,可以从以下几个方面来学习:
1>千兆网卡硬件接口
2>Linux 网络设备驱动的层次结构
3>网络设备驱动模板介绍
4>开发中遇到的问题及解决方法
从左到右依次为MAC控制器、Phy、RJ45接口。
由于用到的主芯片内部包含了两个MAC控制器,外部就接了两个千兆PHY 采用VSC8601,上面是8601的内部结构框图。红色框起来的是咱们要重点关注的部分。
既然咱们现在用的MAC和PHY是分离的,那么MAC和PHY之间怎么衔接呢?