微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机的TCP/IP的实现与UNIX的不同

单片机的TCP/IP的实现与UNIX的不同

时间:11-30 来源:互联网 点击:
TCP/IP最先是在UNIX系统里实现的,后来的LINUX、DOS、WINDOWS也实现了TCP/IP,随后TCP/IP协议也被移植到其它嵌入式的处理器上,例如8位的MCS51单片机、AVR单片机,16位的ARM、C166以及32位的MIPS、ARM等芯片上。 TCP/IP协议的最底层IP层,很多定义都是16位或32位的,例如源IP地址(32位)目的IP地址(32位),校验值(16位),特别是较验值,是以16位为单位进行计算的,这样使得能够处理16位、32位运算的CPU,比如80286、80386……,ARM、MIPS、DSP,就有很大的速度上的优势。而8位机MCS51处理则会慢很多。

由于指令的原因,以及资源上的原因,在UNIX上实现的TCP/IP协议的原代码并不能够直接移植到8位的单片机上。最早期的LINUX1.0版的内核是最小的实现TCP/IP的操作系统,它的程序的大小大概在1兆字节。而现在的红旗LINUX,红帽子LINUX,内核多达几十兆,整个系统要几张光盘来装。早期的LINIX因为小,而被移植到掌上电脑,PDA等产品中。 单片机的程序空间是极为有限的,直接寻址的空间仅64K字节,这跟电脑的存储空间相比要差几个数量级。除了程序空间小之外,可用的内存RAM也是非常小的,最多只能扩64K的RAM,而电脑的RAM至少在1兆以上。单片机的运算速度也极为有限,一般只有2MIPS,而电脑上的处理能力在100MIPS以上。

有些人提到有没有必要在单片机上实现TCP/IP的问题。因为TCP/IP是一种标准,以太网也成为局域网的标准。在很多情况下运用以太网和TCP/IP,能够简化结构。比如目前较热的智能小区,因为布线的原因,不能为每个家庭布很多线,而以太网的8芯双绞是一定有的。例如宽带上网,是直接通过以太网的,如果你制造的设备,比如安全产品,远程抄表产品,家居智能产品能够走以太网的话,可以利用现成的以太网络。但如果走其它网络,比如RS485、CAN单线、LONWORKS等,那么需要另外布线。布线是复杂的,还涉及到消防安全等。从成本看,用以太网实现联网要比CAN、LONWORKS等更为便宜,集线器、交换机现在都非常便宜,而且将来有三网合一的趋势,电话、电视、计算机三网合一。将来的趋势可能是高速的以太网的天下,电话信号、电视信号、联网都在以太网上跑。尽管目前还未能实现,但是这种趋势是不可避免的。

有网友提到就算要利用以太网,也没有必要跑TCP/IP。那么为什么要跑TCP/IP呢? TCP/IP是一标准,这个标准使得数据传输不一定是要局域网,而可以在互联网、跨地区跨国界。例如你在某一区域安装了很多监控产品,但数据中心可能不设在那个区域,而设在其他地区。TCP/IP有两种协议TCP和UDP;TCP保证了数据传输的正确性,(如果你的数据只跑以及网层,那么你的数据完整性是要你的编程来保证的,校验的计算。数据包的丢失需要你手工处理,而TCP把这些所有你要处理细节都帮你处理了。UDP可以面向广播的、视频的、音频的等方面的应用。实现TCP/IP的协议的好处是可以统一平台,比如智能小区的产品,如果大家都遵守TCP/IP的协议,那么大家的产品才能兼容,假设一个大型的智能社区,这个社区可能由多家设备供应商进行建设,可能有某些厂商做平台、做软件,一些厂商做硬件。如果大家遵守TCP/IP协议,各自的远程抄表产品,智能防盗产品就有可能兼容,对地产开发商来说,可以选择多个供应商,有利于竞争,也避免某个厂家倒闭造成重大影响。

题外话说的多了,还是回到本章要谈的内容吧。由于单片机与电脑的差别很大,两者的实现有很大的不同。在电脑里编写TCP/IP程序,你可以不考虑代码大小、代码速度,但在单片机上这些都是你要考虑的问题。 综合来说,单片机实现与UNIX实现TCP/IP有如下区别:   (1)、操作系统。不论是WINDOWS、UNIX、LINUX,它们都有一个多任务操作系统,这使得代码编写简单化,而在单片机上,因为资源的原因而无法使用多任务操作系统,这使得代码结构变为顺序执行+硬件中断的方式,而在电脑里却可以并发地执行。对程序执行结构,单片机要考虑更多。

(2)、内存分配。WINDOWS或UNIX的内存分配是动态的,根据需要随时分配,随时撤消 。我们阅读一些关于LINUX、UNIX的书,它们都是mbuf的存储结构。mbuf是一个存储链,这个链可以动态地增加和减校比如在数据包很少的情况下,UNIX分配一个2K字节的缓冲区可能就够用了,但如果数据包很多,就有可能要分配64K甚至更多的缓冲区,可分配的内存要根据CPU的可用内存来调整。 但是在单片机却不能够这样做。一个最大的以太网数据包有1500多个字节,分配一包的缓冲区就要1.5K字节,而一般实现TCP/IP的单片

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top