Linux 网络
-
嵌入式下的网络硬件接口
- 嵌入式网络硬件分为两部分:MAC 和 PHY,通过看数据手册来判断一款 SOC 是否支持网络,如果一款芯片数据手册说自己支持网络,一般都是说的这款 SOC 内置 MAC,MAC 类似 I2C 控制器、SPI 控制器一样的外设。
- 但是光有 MAC还不能直接驱动网络,还需要另外一个芯片:PHY,因此对于内置 MAC 的 SOC,其外部必须搭配一个 PHY 芯片。
-
1、SOC 内部没有网络 MAC 外设
-
既然没有内部 MAC,那么可以找个外置的 MAC 芯片啊,不过一般这种外置的网络芯片都是 MAC+PHY 一体的。DM9000 对 SOC 提供了一个 SRAM 接口,SOC 会以 SRAM 的方式操作 DM9000。
-
有些外置的网络芯片更强大,内部甚至集成了硬件 TCP/IP 协议栈,对外提供一个 SPI 接口,比如 W5500。
-
这种方案的优点就是让不支持网络的 SOC 能够另辟蹊径,实现网络功能,但是缺点就是网络效率不高,因为一般芯片内置的 MAC 会有网络加速引擎,比如网络专用 DMA,网络处理效率会很高。
-
而且此类芯片网速都不快,基本就是 10/100M。另外,相比 PHY 芯片而言,此类芯片的成本也比较高,可选择比较少。
-
-
2、SOC 内部集成网络 MAC 外设
- 一般常见的通用 SOC 都会集成网络 MAC 外设,内部集成网络 MAC 的优点如下:
- ①、内部 MAC 外设会有专用的加速模块,比如专用的 DMA,加速网速数据的处理。
- ②、网速快,可以支持 10/100/1000M 网速。
- ③、外接 PHY 可选择性多,成本低。
- 内部的 MAC 外设会通过 MII 或者 RMII 接口来连接外部的 PHY 芯片,MII/RMII 接口用来传输网络数据。
- 另外主控需要配置或读取 PHY 芯片,也就是读写 PHY 的内部寄存器,所以还需要一个控制接口,叫做 MIDO,MDIO 很类似 IIC,也是两根线,一根数据线叫做 MDIO,一根时钟线叫做 MDC。
- 一般常见的通用 SOC 都会集成网络 MAC 外设,内部集成网络 MAC 的优点如下:
-
1、MII 接口
- MII 全称是 Media Independent Interface,直译过来就是介质独立接口,它是 IEEE-802.3 定义的以太网标准接口,MII 接口用于以太网 MAC 连接 PHY 芯片
- MII 接口的缺点就是所需信号线太多,这还没有算 MDIO 和 MDC 这两根管理接口的数据线,因此 MII 接口使用已经越来越少了。
-
2、RMII 接口
- RMII 全称是 Reduced Media Independent Interface,翻译过来就是精简的介质独立接口,也就是 MII 接口的精简版本。RMII 接口只需要 7 根数据线,相比 MII 直接减少了 9 根,极大的方便了板子布线
- 除了 MII 和 RMII 以外,还有其他接口&#x