Linux网卡四种phy-mode说明
以太网的通信离不开物理层 PHY 芯片的支持,以太网 MAC 和 PHY 之间有一个接口,常用的接口有MII、 RMII、 GMII、 RGMII 等。
RGMII接口如下:
信号名称 | 位宽 | 方向 | 描述 |
---|---|---|---|
TXC | 1 | OUT | 发送时钟信号,10/100/1000Mbps 模式频率分别为 2.5M/25M/125MHz |
TD | 4 | OUT | 发送数据信号 |
TX_CTL | 1 | OUT | 发送数据控制信号,上升沿时为数据有效信号,下降沿时为数据有效信号/错误信号 |
RXC | 1 | IN | 接收时钟信号,10/100/1000Mbps 模式频率分别为 2.5M/25M/125MHz |
RD | 4 | IN | 接收数据信号 |
RX_CTL | 1 | IN | 接收控制信号,上升沿时为数据有效信号,下降沿时为数据有效信号/错误信号 |
MAC与PHY芯片连接时延phy-mode有4种模式,phy-mode是在设备树里面定义的,主要是RGMII接口对时延的描述。
因为RGMII总线规范Tx和Rx的时钟和数据之间有一个时延的要求。
延时模式下时钟信号RX_CLK的边沿处于数据和控制信号的中心位置,此时的RX_CLK相对于数据和控制信号有2ns的延迟(2ns是因为在1000M速率下时钟为125MHz,一个时钟周期为8ns,一个数据的有效时间为4ns)
这个功能PHY芯片都会有,但是如果你是MAC直连方式,没有接PHY芯片,那么这个功能就需要CPU来提供。
注意:有些CPU是不支持时延模式的。
In Linux applications, the simplest way to enable or disable the internal clock delays is through the device tree. The device tree will contain a section for each of your Ethernet interfaces and it should look similar to the one shown to the right.
To enable or disable the internal clock delays, we specify a particular value for the “phy-mode” parameter.
- Both internal delays DISABLED: phy-mode = “rgmii”;
- Both internal delays ENABLED: phy-mode = “rgmii-id”;
- Only RX internal delay ENABLED: phy-mode = “rgmii-rxid”;
- Only TX internal delay ENABLED: phy-mode = “rgmii-txid”;
ZYNQ-7000的CPU不支持时延模式