那么首先我们来看一下有关于单片机TCP/IP就是在单片机上运行的TCP IP协议栈。由于嵌入式联网设备越来越多,需要在嵌入式设备上实现TCP IP协议栈,但是嵌入式设备不同于PC机,它们一般采用MCU也就是单片机而不是CPU作为核心处理器。这就需要在单片机上实现TCP IP协议栈。对于高端的32位单片机,由于其性能已经接近于低端PC机CPU(例如奔腾II系列),所以和在PC上实现TCP IP协议栈没有多大区别;这里主要讲述低端8位(例如51单片机)、16位单片机TCP IP协议栈。
单片机TCP/IP的特点
在单片机上实现TCP/IP与在PC机上实现TCP/IP是有所不同的,它的特点是:
1. 速度慢:12M晶振的51单片机的最快网络传送速度为25KB/s。其中的关键在于TCP/IP需要对传送的每个字节进行校验和计算,以及必要的拷贝。这样51单片机的处理速度就不够了。为了提高单片机TCP/IP的速度一般的方法是要对协议栈进行精简。
2. 程序存储空间和外部RAM空间不大:一般的单片机的最大程序和数据空间为64KB。TCP IP协议一般需要对发送的数据进行缓存,而一个最大的数据包就有1500B左右,当网络速度很大的时候内存消耗将很大。对于非嵌入式TCP IP协议栈,64KB的程序和数据空间是不够的。
3. 单片机体系结构:51单片机是8位机,所以对于需要完成同一个数据操作,32位的PC机可能只需要10条指令,而51单片机可能需要几百条指令。
已有的单片机TCP IP协议栈
由于TCP协议栈的程序流程较为复杂,因为程序中需要处理对方法送过来的数据、发起的连接,而我方并不知道对方会何时进行什么样的操作,这就使得协议处理起来较为复杂。另外一个原因是单片机TCP IP协议栈的稳定性是以非常重要的问题,一个稳定的协议栈需要在实际应用中经过长时间的测试,所以编写一个稳定的单片机TCP IP协议栈更加困难。为此另外一种选择就是使用现有的TCP IP协议栈。
1. eCos单片机TCP IP协议栈():
eCos TCP/IP栈是涉及与eCos操作系统/内核一起运行的。eCos(和TCP/IP栈)由大量处理其结构支持。eCos TCP/IP栈当前发布了一个测试版,作为一个单独的模块。
2. ZLIP 51单片机TCP IP协议栈():
BSD栈历史上是其他商业栈的开始点,大多数专业TCP/IP栈(如带Wind-River VxWorks内核的)是BSD栈派生的。这是因为BSD在BSD许可协议下提供了他们的栈,它们的许用证使你能以修改或未修改的形式结合它们的代码而无须向创建者付版税。与GPL许用证相比,如果你结合GPL源代码,后者要求你的GPL中公开你的源代码。
5. lwIP 单片机TCP IP协议栈():
TinyTCP栈是TCP/IP的一个非常小的简单的实现,它包括一个FTP客户。TinyTCP是为烧入ROM设计的并且现在开始对大端结构似乎是有用的(初始目标是68000芯片)。TinyTCP也包括一个简单的以太网驱动器用于3Com多总线卡。
8. WATTCP 单片机TCP IP协议栈():
WATTCP是为嵌入基于DOS的系统而设计的一个小型TCP/IP栈。它包括一个Real Mode DOS版本和另一个32位扩展环境版本。