网卡驱动 首先要理解几个基本概念(....) BYTE 8-bit FIFO 先进先出缓存 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 0xfffffff0u if((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 << 16) | (id2); |