阅读:4235回复:12
嵌入式TCP/IP:选择方案琳琅满目
连接在互联网上的电子装置不一定比单独使用的电子装置具有更高的智能功能,但连通意味着提高智能化管理水平。
TCP/IP是一项应用广泛的标准,利用它可以接通并控制电子装置,通过绝大多数传输媒体几乎可以和运行在所有操作系统上的软件进行通信。嵌入式系统能否连通关键在于基础设施。在大多数工作场地都有以太网,以备电子装置随时插接。在家庭中,也有电力线和电话线等载体可以利用。不再需要为每一个电子装置和控制服务器之间提供点到点的连接路径。仅仅需要将该电子装置挂到基础设施上去就可以了。如果这些基础设施一项都没有,利用无线电接入技术也可以解决大部分的问题。总而言之,现在实现嵌入式电子装置的访问连通,几乎不成问题,增加的费用也不会太多。 与基础设施连接十分简单。如果是与局域网连接,只需要为该装置设置硬的或软的IP地址就可。如果是利用电话线路,该装置可以使用电话用户的ID,以便确认打来的电话是否是呼叫它。如果确认是呼叫它,它就可以接着回答所询问的问题;而且,在线路闲置时,还可以周期性地对该装置进行核查。 在商业系统,利用它来进行远程监视服务很有意思。例如利用它来对售货机、安全保安设备、甚至对咖啡自动售货机进行监控。咖啡自动售货机可以通过电子邮件和售货机的主公司联系,及时报告机器的状态,例如保险丝、或者温度等方面是否存在问题等。这个机器还可以监测库存量,预测使用量;必要时自动呼叫公司把咖啡送来。根据目前TCP/IP网络协议软件栈的情况,几乎可以从世界上的任何地方来监测并控制这些装置。 有利就有弊 通常实现TCP/IP,是通过选择能够支持TCP/IP的实时操作系统RTOS。例如,QNX公司的Neutrino RTOS内,就有各种TCP/IP模块;可以提供完整的TCP/IP协议栈,也可以提供部分嵌入式的协议栈。嵌入式TCP/IP协议栈省去了诸如接口间转发软件、全套万维网服务工具以及支持电子邮件的工具等几个部分,这些软件工具嵌入式装置一般都不使用。虽然大多数TCP或UDP(用户数据报协议)的应用可以在任何的协议栈上运行,但是比较小型的嵌入式TCP/IP栈,对于如何配置系统有一定局限,也只适合用于一定的软插座。QNX公司的协议栈是模块化的,如果存储器的容量有限时,可以在需要使用时,进行动态安装。此外由于Neutrino和核心之间不需要机器语言的连接,因此可以对系统一部分一部分地进行更新,可以从远程对系统进行更新或重新编程,而不需要重新进行引导。 稍微浏览一下嵌入式协议栈,就可以发现嵌入式栈和完整协议栈之间的区别。首先嵌入式栈是建在专用的软插座API之上的。许多厂商将其移植过来,建在Berkeley软插座上的协议栈也称为嵌入式的,但是Berkeley栈带有许多台式机所需要的特性,而这些特性对于嵌入式的应用是不需要的。建在专用软插座上的栈效率比较高,但是它需要使用稍为不同的API。 如果通信通道对于可靠性的要求不太高,也可以选择使用UDP。TCP协议为了保证到达的数据准确无误,采用校验和码的方式来检查数据是否有错误或者有丢失,如果发现有误,或者丢失则要求重发。TCP协议还在应用层上保证到达的数据前后次序无误;接收数据的节点负责恢复数据的顺序。与此相反,尽管应用程序本身能够仿真这些功能,但UDP协议仅仅把检验和码作为选项,也不保证数据的顺序,因此也就不存在重发的必要。UDP比较适合用于传输媒体十分可靠的情况,例如LAN;这时,不需要采用TCP协议那样的复杂程序,也不必分摊那样沉重的负担。如果依靠软件来实现,所需要的存储器容量,往往使得低档的微处理器无法承受。例如,40 k字节的协议栈不能算大,但是对于只有60 k字节的处理器也是难于安装的。 厂商各显其能 由于目前TCP/IP已经十分成熟,于是许多厂商将TCP/IP协议栈用硬件方法予以实现。但是有许多装置需要与互联网连接,例如信用卡的读卡机、售货机、以及许多测量仪表,但是所使用的处理器档次较低,无法执行TCP/IP协议。但是如果采用iReady的芯片或芯核,虽然使用的是4位微处理器也能够和互联网实现直接连接。而且,这样的实现方案,比采用通用CPU所消耗的功率也要少。日本Seiko公司以iReady芯核为基础,开发的S7600芯片。大量购买时价格约为7美元。为了显示iReady的实用性,可以将iReady加上一片Microchip公司的CPU芯片,接到一个1k字节的万维网服务器上,试验通过互联网控制电灯。通过www.mycal.net/wsweb,可以控制电灯的启、闭。根据传输信息方式的不同要求,iReady芯核的大小也有相当大的区别,集成度可以从4万门到22.5万门。22.5万门的型号,其中包括了以太网MAC(媒体访问控制器)。如果采用56k字节的调制解调器作为驱动时,平均功耗的不超过1mW。这样低的功耗无论对于一般无线电的应用,或者对于蜂窝电话的应用都很受欢迎。 也可以选用DSP为基础的TCP/IP协议栈,如eDevice公司提供的SmartStack协议栈,就是在Analog Devices公司的AD1218x DSP芯片的基础上实现的。采用DSP建立协议栈时,还可以把调制解调器的软件和TCP/IP协议的软件栈,一起放在一块芯片上。此外,也还可以根据使用要求的不同,选择AD1218x系列产品中的不同型号;例如,仅仅需要实现和互联网的连通时,就可以选择功能较少价格比较便宜的型号;如果除了实现连通的功能以外,还需要一些DSP MIPS功能,就可以选择具有比较高的时钟频率,比较大的存储器容量的型号。例如,用户可以采用超级MIPS来播放通过电子装置从网上下载的MP3文件或话音信息。SmartStack/AD1218x芯片集,包括有前端的模拟电路芯片,每套起价为18.50美元(购买批量超过1万套时)。今后还将根据用户对于连通的不同要求,提供不同的芯片集,例如可以集成以太网MAC,或者采用一个外接的物理层的器件实现无线电的MAC。这样,使用同样的编码设计和DSP,只需选择不同的接口,就可以服务于不同的连通基础设施。 究竟是采用硬件固化的方式,还是采用软件的方式?是采用完整的协议栈,还是采用代理的方式?这些问题都需要根据所设计的电子装置的实际情况来决定。例如,打算如何来实现和互联网的连接?需要发送和接收那些种类的信息?将软件或硬件芯片整合到所设计的电子装置中去,有没有困难?增加一个协议栈,是否需要对所设计的电子装置进行重大更改等等。如果考虑的应用产品,采用了功能比较强的处理器,而又仅仅需要实现连接,那么只需增加软件协议栈和与网络的接口就可以了。如果应用产品的存储器容量已经没有多少富余,或者处理器的功能也有限,那么采用委托网关实行协议代理的方式,或者采用硬件固化的TCP/IP协议栈,可能是比较明智的选择。 选择适合自己需要的解决方案 有些应用产品,不能够满足实现全部TCP/IP协议栈的要求。这些应用产品所采用的主处理器,不过是一些8位,或16位的微控制器,具有的净空已经不能满足复杂协议栈的需要。这时候如果需要实现和网络的连接,有几种方案可以选择:例如,增加另外一个处理器,这样需要增加成本;或者改变原来的8位或16位处理器的设计,这样不但需要增加成本,还需要耗费一定的时间;另外,还可以利用一个代理协议,间接实现向TCP/IP的过渡。 举例来说,如果想通过互联网来控制家庭中的照明灯,或用来控制温度自动启动装置(如自动火警警报系统)。为照明灯或温度启动装置分别都安装TCP/IP协议栈,所增加的成本费用是难以接受的。此外,一个照明灯所需要接收的信息不过是开、闭,或减弱等少数几条简单的信息,单独接一个TCP/IP协议栈直接和互联网连接也太不值得了。倒不如在照明灯和网关之间,建立一个协议代理 ( proxy protocol ),让网关将信息经过翻译再送交TCP/IP,使照明灯和互联网之间实现"桥接"。 协议代理对于某些公司来说,是极有吸引力的。尤其是家用电器的制造厂商,他们对于每一分钱的成本都不会轻易放过。决不会为了给产品增加上网的功能,随随便便地提高CPU的档次。因为,上网的功能对于这些白色家电产品(如冰箱、洗盘机等)来说,最多也不过是增加了一些微不足道的特性而已。但是这些厂商是乐意在其产品中设置花费不多的代理协议的。emWare公司推出的EMIT(Embedded Micro-Internet-working Technology,嵌入式微型上网技术装置)代理协议装置,仅仅有1k字节的汇编程序,每件的价钱不超过1美元。该代理协议包括有网关、软件以及用户方的工具程序等。 代理协议机制,需要利用网关,在网络中桥接代理协议栈和TCP/IP协议栈。试举一个简单的例子,一个通过互联网控制的仪表,它和控制它的服务器之间只需要交换很少量的几个字节的数据。根本不需要功能完整的TCP/IP协议去管理只有几字节的数据。网关完全可以担当得了翻译转换的业务,将代理协议提供的数据转换成TCP/IP需要的数据,或将TCP/IP发送的数据转换后提供给代理协议。 值得注意的是网关有多种多样的形式。它可以是本地LAN中的一个装置;也可以是ISP或某个端口所支持的一种服务;也可以是目标服务器中的一项功能机构。网关所起的作用,是在适当的时刻,识别代理所提供的业务信息,并且将此信息导向代理的服务器;然后由代理服务器将业务信息转换成TCP/IP的业务信息,再送入到数据流中去。 有些厂商可能不认为在网络中有建立网关的必要性,但是,在有些应用产品中即使对TCP/IP协议具有完整的支持功能,网关仍然具有一定的存在价值。例如,一个数据通道采用的是价格比较便宜、传输速率比较低的调制解调器,或者无线电连接方式;因此频带太窄,不能支持TCP/IP协议。此外,对于一些应用,例如在家庭的网络中,可能有好几个协议同时被使用。例如,家庭的网络节点可能采用的是TCP/IP协议;电力线则可能采用X10协议;电话线则可能采用的是HomePNA协议;无线电方面则可能采用802.11、HomeRF、蓝牙、或蜂窝电话协议。网关则可以作为所有这些协议之间的桥梁。 最后,值得一提的是,即使是对于采用了完整的嵌入式TCP/IP协议栈的场合,仍然需要网关去进行系统管理,而安全保卫的功能也最好留给网关来完成比较适宜。将一部分功能从联网的负载中抽出来,交给网关去完成,例如采用代理协议的方式,或者安装一个经过精简的TCP/IP协议栈,就可以降低每一个节点对处理器所需要的性能的要求。例如,网关可以对若干个节点安装一个防火墙,而不需要对每一个节点安装一个防火墙。但是,虽然网关在许多应用中有好处,然而,对于某些电子产品,例如电子玩具和数码照相机,却希望能够直接和各自的家庭用LAN或者ISP相接;而且除了完整的TCP/IP协议栈以外,任何其它的方式都不能满足需要。 当进行直接的对等网络连接时,是不需要网关的。当一个节点直接接通服务器时,就属于这种情况。这时,并不需要通过TCP/IP协议来往返传递信息。TCP/IP协议的优点在于电子装置都可以接到互联网上去,并且所有装置都是经过互联网间接地接到服务器去的。换句话说,TCP/IP可以使任何一个电子装置,在互联网上的任何一个节点上,访问任何一个接在互联网上的其它电子装置;而不是仅仅限于接在某一个具体服务器上的电子装置。 锦上添花 有些应用产品,要求的支持比完整的TCP/IP协议栈还要多。例如,Accelerated Technologies公司为其命名为Nucleus Plus的实时核心软件(价格在 7495美元到 12945美元之间,包括全部原程序,无须再付许可证费),提供的TCP/IP协议栈(称为Nucleus Net,价格为14995美元),就属于这种情况。Net和Plus合在一起,需要100k到120k字节的程序存储器容量和140k字节的RAM。多数的RAM是用作缓冲存储器。在16位的处理器上可以运行。Net除了TCP/IP以外,还支持ARP(Advanced Resolution Protocol,先进分解协议 )。因为仅仅知道IP地址还不够,还需要知道MAC地址,才能决定下一步的过度段 (hop);而ARP是负责将IP地址翻译成MAC地址的。有时可能还需要利用DNS(domain-name server,域名服务器)将域名转换成IP地址;网关就可以支持DNS服务器。但是如果一个装置没有足够的本地存储容量去存放硬IP地址时,可能需要DHCP(Dynamic Host Configuration Protocol,动态主机组成协议)来处理临时IP地址。 有时候可能还需要一些其它的应用软件来支持TCP,例如FTP(File Transfer Protocol,文件传送协议)、Telnet、POP3(Post Office Protocol 3,第三号邮政协议)和SMTP(Simple Mail Transfer Protocol,简易邮件传送协议)电子邮件,甚至SNMP( Simple Network Management Protocol,简易网络管理协议)。这些应用软件有些RTOS供应商可以提供,有些可以从第三方软件供应商那里得到。 嵌入式TCP/IP的最大优越性也许在于它可以使得嵌入式电子装置支持嵌入式的万维网服务器。有些电子装置并不紧跟快速网页的传送,虽然它可能做得到。例如一个打印机,或者一个SOHO(Small Office, Home Office;小型办公室,家庭办公室)网关就可以提供配置网页或指令。嵌入式TCP/IP的主要用途是进行远程监测。例如,一个售货机可以动态地建立网页,报告它已经收入了多少钱,和那些种类的快餐卖不动;或者一个仪表可以报告使用情况的统计数据。万维网服务器还可以对一个电子装置进行远程配置。例如一个操作人员在中央控制室内就可以根据室外的温度变化情况,及时改变饮料的售价;在天气炎热时,人们对冷饮需求迫切,就应该提升售价。此外还可以进行远程版面更新,例如可以在远处,更新电子装置的内容,即通过下载新的广告内容,让电子装置去显示。万维网服务器的一个引人注目的特性,就是它可以为一个没有接口的电子装置,增加一个接口;通过这个接口,世界上任何地方的计算机都可以对它进行访问了。实际上并不是万维网服务器使得这些功能得以真正实现;万维网服务器不过是十分方便地,并且协调地使得这些功能能够假借各种应用产品和装置本身之力量得到实现而已。 一个电子装置有时需要同时支持万维网服务器和电子邮件这两种功能;万维网服务器的服务是被动的,即用户必须对它进行信息查询,它才能够给予回答;而电子邮件却可以主动地定期发出警示信息,或者按照计划定期及时转储信息。 可能还需要考虑电子装置管理用的软件,因为当在网上增加电子装置时,如何对这些电子装置进行管理就成为必须关注的重要问题了。例如,一个网络规模比较大,接有1000台电子装置;如果为了掌握这些装置的状态,是对它们一个个地进行问讯,那么问讯1000次,将是一场旷日持久的苦差事。如果建立一个数据库,由服务器来积累数据,并且当数据信息积累到一定程度就将他们发送出去。例如,电子装置即使是在夜间也可以不停地发出或接收呼叫,并且登录各装置的状态信息。此外除了在电子装置和数据库服务器之间保持直接的软插座连接之外,还可以使电子装置利用电子邮件功能,主动去登录信息。这一特性可以让你能够在闲暇时间去查阅大多数当前的最新数据。这样的数据库也可以周期性地运行诊断和实行配置任务。数据库的管理还可以扩展到网关,一个网关管理着一个由若干个电子装置组成的子群。网关在一个子群中从各装置收集信息,并为这些装置储存信息。从这个子群积累信息,并将这些信息登录到主数据库服务器中去。 究竟是采用TCP/IP协议栈,还是采用专用的协议并进行桥接,应该根据应用产品的具体情况来决定。TCP/IP协议栈通常需要32位的处理器,但是在一些场合也可以只用16位处理器也能有效地运行。对于连接的带宽,应该根据实现TCP/IP所需要花费的费用情况来进行权衡。如果条件许可,应该采用比较宽的带宽,以防止TCP/IP的负荷占去了全部带宽。如果电子装置所传送的信息很少,选用TCP/IP协议栈将会是弊大于利,不值得。如何兴利除弊,如何根据实际情况进行决断,需要认真分析。不小心,不是由于因采用TCP/IP造成了浪费,就是强行将过多的任务硬塞进一个功能不够的栈中去。为此,首先应该考虑好,为了实现你的设计所需采用的处理器、存储器、以及其它的资源;然后再合理地选择与这些资源相适应的连通技术。 |
|
最新喜欢:chyito...
|
沙发#
发布于:2001-07-06 22:47
好文章!
|
|
地板#
发布于:2001-07-23 12:40
关键是, 有免费的吗?
|
|
地下室#
发布于:2001-09-29 23:32
可以download?
|
|
5楼#
发布于:2002-10-09 10:50
不错,支持。
|
|
|
6楼#
发布于:2002-10-11 17:03
没听说有“ARP(Advanced Resolution Protocol,先进分解协议 )。”,只看见有(Address Resolution Protocol 地址解析协议)。
|
|
7楼#
发布于:2002-10-14 23:40
我正需要这些!谢谢ZNSOFT
|
|
|
8楼#
发布于:2002-10-24 16:19
呵呵,可以写篇论文了。
|
|
|
9楼#
发布于:2003-01-09 19:34
我找了好久都没找到免费的!
|
|
10楼#
发布于:2003-12-15 13:47
我们在89c51下实现的!有个开源的叫lwIP
|
|
11楼#
发布于:2003-12-22 19:37
HAO AR
|
|
12楼#
发布于:2004-07-21 19:26
关注!
|
|