一. 简介
本文来了解一下嵌入式有些网络中,涉及的网络硬件方案。
注意:本文说明的是有些网络。
提起网络,我们一般想到的硬件就是“网卡”,“网卡”这个概念最早从电脑领域传出来,顾名思义就是能上网的卡。在电脑领域的“原始社会”,网卡是独立的硬件,如果电脑要上网就 得买个网卡插上去,类似现在的显卡一样。
但是大家现在观察自己的笔记本或者台式机主板会 发现并没有类似显卡一样的网卡设备,原因是随着技术的不断发展,现在只需要一个芯片就可 以实现有线网卡功能,因此网卡芯片都直接放到了主板上。
目前有两种网络硬件方案:
1. SOC 内部没有网络 MAC 外设的情况下,那就要外部接上一块网络集合 MAC+PHY 功能的芯片。
2. SOC 内部集成网络 MAC 外设,外部只需要接上一块 PHY网络芯片。
注意:目前使用第二种网络硬件方案的比较常见,也就是 SOC处理器+ 一块PHY网络芯片。
接下来分别说明这两种网络硬件方案。
1. SOC 内部没有网络 MAC 外设
我们一般说某个 SOC 不支持网络,说的就是它没有网络 MAC 。那么这个芯片就不能上网 了吗?显然不是的,既然没有内部 MAC ,那么可以找个外置的 MAC 芯片啊,不过一般这种外 置的网络芯片都是 MAC+PHY 一体的。比如,三星 linux 开发板里面用的最多的 DM9000 ,因为 三星的芯片基本没有内部 MAC( 比如 S3C2440 、 S5PV210 , 4412 等 ) ,所以,三星的开发板都是通 过外置的 DM9000 来完成有线网络功能的, DM9000 对 SOC 提供了一个 SRAM 接口, SOC 会 以 SRAM 的方式操作 DM9000 。
有些外置的网络芯片更强大,内部甚至集成了硬件 TCP/IP 协议栈,对外提供一个 SPI 接口,比如 W5500 。这个一般用于单片机领域,单片机通过 SPI 接口与 W5500 进行通信,由于 W5500 内置了硬件 TCP/IP 协议栈,因此单片机就不需要移植负责的软件协议栈,直接通过 SPI 来操作 W5500 ,简化了单片机联网方案。
优缺点:
这种方案的优点就是让不支持网络的 SOC 能够另辟蹊径,实现网络功能,但是缺点就是网 络效率不高,因为一般芯片内置的 MAC 会有网络加速引擎,比如,网络专用 DMA ,网络处理效 率会很高。而且此类芯片网速都不快,基本就是 10/100M 。另外,相比 PHY 芯片而言,此类芯 片的成本也比较高,可选择比较少。
SOC 与 一块外部 MAC+PHY 芯片的连接如下图 所示:
2. SOC 内部集成网络 MAC 外设
我们一般说某个 SOC 支持网络,说的就是他内部集成网络 MAC 外设,此时我们还需要外 接一个网络 PHY 芯片。
此时就有朋友会有疑问, PHY 芯片不能也集成进 SOC 吗?笔者目前还 没见过将 PHY 也集成到芯片里面的 SOC 。
一般常见的通用 SOC 都会集成网络 MAC 外设,比如 STM32F4/F7/H7 系列、 NXP 的 I.MX 系列。
内部集成网络 MAC 的优点如下:
① 内部 MAC 外设会有专用的加速模块,比如,专用的 DMA ,加速网速数据的处理。
② 网速快,可以支持 10/100/1000M 网速。
③ 外接 PHY 可选择性多,成本低。
SOC(处理器芯片)内部的 MAC 外设会通过 MII 或者 RMII 接口来连接外部的 PHY 芯片,MII/RMII 接口用来传输网络数据。
另外主控需要配置或读取 PHY 芯片,也就是读写 PHY 的内部寄存器,所以还需要一个控制接口,叫做 MIDO,MDIO 很类似 IIC,也是两根线,一根数据线叫做 MDIO,一 根时钟线叫做MDC。
内部带网络MAC的SOC 芯片与一个外部 PHY 芯片的连接如下图 所示:
三. 总结
大家在做项目的时候,如果要用到网络功能,强烈建议大家选择内部带有网络 MAC 外设的主控 SOC !
I.MX6ULL 就有两个 10M/100M 的网络 MAC 外设,正点原子 ALPHA 开发板板 载了两颗 PHY 芯片,型号为 LAN8720 。