网卡驱动首先要理解几个基本概念(....)BYTE 8-bitFIFO 先进先出缓存MAC 媒体访问控制(MAC)位于链路层的底部,基于共享信道的各种网络都有MAC子层.MAC子层可提供广播,组波,点对点通信服务,是无连接的数据报服务MII MII (Media Independent Interface(介质无关接口);或称为媒体独立接口RMII 简化媒体独立接口 RMII口是用两根线来传输数据的, MII口是用4根线来传输数据的, GMII是用8根线来传输数据的SMI Serial Management interface 串行管理接口
根据datasheet得到该网卡的PHY ID,目前一般有两个16位寄存器的组合而成。比如此款LAN8710,根据其datasheet第41页的Register2 -PHY Identifier 1【15:0】 default:0007h,Register 3 -PHY Identifier 2【15:10】30h,【9:4】0fh,【3:0】Device Rev.则可以计算出来PHY ID=0x0007c0fXu,因为后三位不确定因素,故可以通过以下方法做比较:#define LAN8710_PHY_ID 0x0007c0f0u #define LAN8710_PHY_ID_MASK 0xfffffff0uif((id & LAN8710_PHY_ID_MASK) == LAN8710_PHY_ID) { printf(STMAC "LAN8710 found/n"); return phyaddr; }id为实际读出来的PHY ID值。id的获取代码如下:unsigned int id1 = stmac_mii_read (phyaddr, MII_PHYSID1);unsigned int id2 = stmac_mii_read (phyaddr, MII_PHYSID2);id = (id1 |