热度 24
2015-4-14 15:59
930 次阅读|
0 个评论
单片机的种类繁多,从低端到高端,有以 51 单片机为代表的 8 位单片机和以 ARM 为代表的 32 位单片机,不同档次的单片机实现网络接口的方法不同。对于像 ARM 等高端处理器一般都可以运行嵌入式操作系统,例如嵌入式 Linux 。对于无操作系统要求的单片机如何实现网络接入,我下面将这些方案按 TCP/IP 协议栈的不同归结为两大类:第一类是传统的软件 TCP/IP 协议栈方案;第二类是最新的硬件 TCP/IP 协议栈方案。下面我就这两类方案的实现方式进行分析。 1. MAC+PHY方案 所谓的 TCP/IP 协议栈是一系列网络协议的统称,不仅包括我们熟知的 TCP 协议和 IP 协议,还有网络层的 ICMP ( Internet 控制报文)协议、 IGMP ( Internet 组管理)协议、 ARP (地址解析)协议,传输层的 UDP (用户数据包)协议,应用层的 HTTP (超文本传输)协议、 DNS (域名解析)协议、 FTP (文件传送)协议、 SMTP (简单邮件管理)协议等等。 传统的以太网接入方案如下图,由 MCU+MAC+PHY 再加入网络接口实现以太网的物理连接,通过在主控芯片中植入 TCP/IP 协议代码实现通信及上层应用。 图 3-1-1 MAC+PHY 以太网方案 应用这种软件 TCP/IP 协议栈方式实现的比较成熟方案有 ENC28J60 , CS8900A , DM9000 ,当然也有像 STM32F107 这类(内部自带 MAC ) +PHY 等方案。 由于软件协议栈操作需要主控 MCU 不断地响应中断,这在很大程度上占用了 MCU 的 运算 / 时钟 资源。经过测试发现,单线程操作的情况下, MCU 的运行速度和数据的处理速度仅能满足需要,但随着线程增多, MCU 的工作效率直线下降,会严重影响通信质量。 代码量方面,即便是采用轻量级的 TCP/IP 协议栈 LWIP 协议,也会为主控芯片带来超过 40KB 的代码量,这对于本身内存资源匮乏的单片机来说负荷过重。 再从安全性的角度,设备并入互联网之后必须考虑网络安全问题,这种软件协议栈的方式系统一旦受到复杂的恶意攻击,单片机很有可能瘫痪掉,这对系统就是致命性打击,虽然目前网络技术不断发展,各类新的加密技术试图让通信变得更加安全,但是还会出现各种各样的漏洞。 2. 硬件协议栈芯片方案 硬件协议栈芯片方案如下图所示。由 MCU+ 硬件协议栈芯片(内含 MAC 和 PHY )直接加网络接口,便可方便的实现单片机联网,所有的处理 TCP/IP 协议的工作都是通过这位 MCU 的 “ 小秘书 ”—— 硬件协议栈芯片来完成。 图 3-2-1 硬件协议栈芯片方案 这套方案是由 WIZnet 首次提出,并成功推出以太网系列芯片: W5100 、 W5200 、 W5300 和 W5500 。 所谓硬件协议栈是指通过将传统的软件 TCP/IP 协议栈用硬件化的逻辑门电路来实现,如下图所示。 图 3-2-2 TCP/IP 硬件协议栈内核原理简图 以太网芯片的内核由传输层的 TCP 、 UDP 、 ICMP 、 IGMP 等协议、网络层的 IP 、 ARP 、 PPPoE 等协议以及链路层的 MAC 构成,再加上物理层的 PHY 和外围的寄存器、内存、 SPI 接口组成了这一整套硬件化的以太网解决方案。 这套硬件 TCP/IP 协议栈代替了以往的 MCU 来处理这些中断请求, 即 MCU 只需要处理面向用户的应用层数据即可,传输层、网络层、链路层及物理层全部由外围 WIZnet 的芯片完成。 这套方案从硬件开销和软件开发两个方面来简化前面所述的五层网络模型,简化产品开发方案。这样一来,工程师们就不必再面对繁琐的通信协议代码,只需要了解简单的寄存器功能以及 Socket 编程便能完成产品开发工作的 的网络功能开发 部分。 由于硬件协议栈的加入协助单片机处理了几乎所有的 TCP/IP 协议工作,不仅极大地减少了单片机的中断次数,让单片机腾出更多资源去完成其他工作,而且硬件化的电路处理协议会更加快速、稳定。经试验测试,单线程下,该方案的通信速度是软件协议方案的 10 倍左右;随着线程的增加,因为硬件协议栈是通过独立的 Socket 进行通信,因而通信速度实现累加,而且单片机工作效率仍然会维持在高位。 代码量方面,因为这套方案主要是完成对 Socket 的编程以及寄存器的调用,因此仅有 10K 左右的代码量,远小于软件协议方案,对 51 以及 STM32 等内存很有限的单片机来说非常适用。 从成本角度来讲,硬件协议栈芯片的价格跟用 MAC+PHY 比起来基本差不多。而前者简单易用,用很短时间便能完成产品的开发过程。另外,官方例程库及上位机程序丰富,也缩短了测试过程,后期基本免于维护。 最后安全性方面,硬件化的逻辑门电路来处理 TCP/IP 协议是不可攻击的,也就是说网络攻击和病毒对它无效,这也充分弥补了网络协议安全性不足的短板。也正是因为这一优势,硬件协议栈技术在未来物联网以及智能家居领域有着广泛的发展前景,让人们尽情享受现代科技带来的乐趣的同时,免受安全问题的困扰。 当然,不可避免的硬件化的协议栈相对来说失去了软件协议栈那样的灵活性。目前只支持 4 个 /8 个 Socket ,不能随时开启更多 Socket 。但是,在嵌入式应用中 8 个 Socket 已经足够应对超过大部分的应用。