1.TCP/IP 协议栈介绍
所谓的 TCP/IP
协议栈是一系列网络协议的统称,不仅包括我们熟知的
TCP
协议和 IP
协议,还有网络层的
ICMP
(
Internet
控制报文)协议、
IGMP
(
Internet
组 管理)协议、ARP
(地址解析)协议,传输层的
UDP
(用户数据包)协议,应用层 的 HTTP
(超文本传输)协议、
DNS
(域名解析)协议、
FTP
(文件传送)协议、 SMTP(简单邮件管理)协议等等。
2.硬件协议栈芯片方案引入
由于软件协议栈操作需要主控 MCU
不断地响应中断,这在很大程度上占用了MCU 的运算
/
时钟资源。经过测试发现,单线程操作的情况下,
MCU 的运行速度和数据的处理速度仅能满足需要,但随着线程增多,
MCU 的工作效率直线下降,会严重影响通信质量。
代码量方面,即便是采用轻量级的 TCP/IP 协议栈 LWIP 协议,也会为主控芯片带来超过40KB 的代码量,这对于本身内存资源匮乏的单片机来说负荷过重。
安全性方面,设备并入互联网之后必须考虑网络安全问题,这种软件协议栈的方式系统一旦受到复杂的恶意攻击,单片机很有可能瘫痪掉,这对系统就是致命性打击,虽然目前网络技术不断发展,各类新的加密技术试图让通信变得更加安全,但是还会出现各种各样的漏洞。
3.硬件协议栈芯片方案
硬件协议栈芯片方案如下图所示。由 MCU+
硬件协议栈芯片(内含
MAC
和
PHY)
直接加网络接口,便可方便的实现单片机联网,所有的处理 TCP/IP 协议的工作都是通过这位
MCU
的
“
小秘书
”——
硬件协议栈芯片来完成。
这套方案是由WIZnet首次提出,并成功推出以太网系列芯片:W5100、W5200、W5300 和 W5500所谓硬件协议栈是指通过将传统的软件 TCP/IP 协议栈用硬件化的逻辑门电路来实现,如下图所示。
以太网芯片的内核由传输层的 TCP
、
UDP
、
ICMP
、
IGMP
等协议、网络层的
IP
、 ARP、
PPPoE
等协议以及链路层的
MAC
构成,再加上物理层的
PHY 和外围的寄存器、内存、
SPI
接口组成了这一整套硬件化的以太网解决方案。
这套硬件 TCP/IP 协议栈代替了以往的 MCU 来处理这些中断请求,即 MCU 只需要处理面向用户的应用层数据即可,传输层、网络层、链路层及物理层全部由外围 WIZnet 的芯片完成即可。对于开发者而言,了解简单的寄存器功能以及 Socket 编程便能完成产品开发工作的的网络功能开发部分即可。代码量方面,因为这套方案主要是完成对 Socket 的编程以及寄存器的调用,固减少了代码书写,用了10K 左右的代码量,远小于软件协议方案,对 51 以及 STM32 等内存很有限的单片机来说非常适用。
从成本角度来讲,硬件协议栈芯片的价格跟用 MAC+PHY 比起来基本差不多。而前者简单易用,用很短时间便能完成产品的开发过程。另外,官方例程库及上位机程序丰富,也缩短了测试过程,后期基本免于维护。
安全性方面,硬件化的逻辑门电路来处理 TCP/IP 协议是不可攻击的,也就是说网络攻击和病毒对它无效,这也充分弥补了网络协议安全性不足的短板。当然,不可避免的硬件化的协议栈相对来说失去了软件协议栈那样的灵活性。 目前只支持 4 个/8 个 Socket,不能随时开启更多 Socket。但是,在嵌入式应用中 8 个 Socket 已经很足够开发者使用。