网卡驱动 PHY id

网卡驱动
首先要理解几个基本概念(....)
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);

你可能感兴趣的:(c,网络,byte,interface)