天线|RF射频
直播中

熊洁

7年用户 186经验值
私信 关注
[问答]

实现TCP/IP协议的方法有哪几种?

实现TCP/IP协议的方法有哪几种?
嵌入式Internet的各种技术原理是什么?
怎么实现嵌入式网关的功能?

回帖(1)

魏贝贝

2021-5-28 14:39:26
  1. 引言
  在Internet的日益普及,信息共享程度的不断提高的今天,人们的工作和生活方式已经有了革命性的改变。家庭电器和工业设备中无处不在的充满了单片机或微控制器(MCU)。但目前大多数嵌入式系统还处于单独应用的阶段,而工业上也只是利用孤立于Internet以外的的控制通信网络(如CAN,I2C,PROFIBUS等现场总线)实现MCU组网 。如果能将嵌入式系统连接到应用广泛的Internet上面,或者在现有网络的基础上利用Internet为介质,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方,从而进行远程监控 。因此,嵌入式Internet技术就应运而生,并成为业内的一大热点。
  2 嵌入式Internet技术原理及方案
  嵌入式Internet技术,也就是将嵌入式系统与Internet结合
  起来实现系统网络化,涉及的两个关键问题即传送信息的媒质和采用的协议。
  与Internet相联接的途径可以是以太网或者电话线等媒介。而在大多数工作场地都配有以太网,电子装置通过集线器(HUB)可以随时插接。在家庭中,也有电力线和电话线等载体可以利用。如果是与局域网连接,只需要为该装置设置硬的或软的IP地址就可。如果是利用电话线路,可以使用电话用户的ID。现在实现嵌入式电子装置的访问连通,几乎不成问题。所以嵌入式Internet技术的关键问题在于如何在MCU中实现Internet上被广泛使用的TCP/IP通信协议。但是TCP/IP通信协议对于计算机存储器、运算速度等的要求比较高,普通单片机无法达到其要求。
  根据各种MCU自身的特性,实现TCP/IP协议的方法可分以下几种:
  1)高档MCU芯片
  采用ARM内核的系列处理器或者386EX等高档MCU,其运算速度快,性能高,在芯片上可以运行实时操作系统(RTOS),同时也可以嵌入完整的TCP/IP协议。
  2)32位MCU芯片
  32位机也有足够的资源和能力运行TCP/IP协议和一些嵌入式操作系统。所以原则上讲,实现思路和高档机一样。
  3)8/16位MCU芯片
  由于8位和16位MCU的处理能力和存储问题,要实现TCP/IP协议是比较困难的。因此要根据其特点,对TCP/IP协议进行简化,保留其最基本的东西。同时,上层协议可不用或者简单实现。即将原来的TCP/IP协议转变成嵌入式TCP/IP协议,我们随后会具体介绍。
  由TCP/IP协议在MCU中的实现方法和嵌入式系统的要求,一般实现嵌入式Internet的方案有以下几种:
  1.把标准网络协议(TCP/IP)一直扩展到嵌入式设备当中,由嵌入式系统自身实现联网功能,每个设备都可与Internet相连。这是解决问题的最佳方案及未来电器、设备的发展方向。例如Netscillon公司的ARM+NET系列芯片,将其嵌入到任何设备中既可实现上网。此方案对微处理器性能的要求较高。
  2.通过专用的WEB服务器实现。在现有的嵌入式系统中大量使用的是8位和16位MCU,并不要求每个设备都直接连到Internet上,用户可以通过Internet接近设备,然后再用轻量级网络扩展到多个设备上。如电力线、RS-485、RS-232、I2C等 。专用WEB服务器可作为子网设备路由器来转换和实现嵌入式系统与外部网的通信。emWare公司专门为嵌入式微控制器设备设计的网络服务器。
  3.通过嵌入式网关(emGateway)联接。嵌入式网关运行TCP/IP协议,与嵌入式设备轻量级网络(如RS-232,RS-485,现场总线等)相连接,提供与Internet或局域网的协议转换及路由功能。
  2.1 嵌入式TCP/IP协议概述
  传输控制协议/网间协议 (TCP/IP)是构建Internet的标准协议,它最早是在PC机上实现的 。由于嵌入式系统与PC机的差别很大,因此在嵌入式系统中实现TCP/IP 协议与PC机操作系统中的实现有很大的不同。
  由于嵌入式系统没有一个多任务的操作系统,而且又是直接面对硬件,所以嵌入式TCP/IP协议在应用层上要求简单。同时,不同嵌入式系统对嵌入式Internet所采用的应用层协议要求不同,而且应用层的协议还要和链路层实现的协议相对应。因此,系统要根据自己的需要和链路层协议的实现来选择和简化应用层的协议。
  传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:面向连接的TCP(传输控制协议)和无连接的UDP(用户数据报协议)。TCP是面向接入即传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失,重复和连接失败等错误。但是正因没有接入机制,它可以实现高速发送,充分发挥物理传输设备的速度。UDP适合用在通信介质十分可靠的情况,例如以太网等。
  网络层处理分组在网络中的活动。其协议包括IP协议(网际协议)、ARP协议(地址解析协议)、ICMP协议(Internet互联网控制报文协议)以及IGMP 协议(Internet组管理协议)。IP协议是TCP/IP族的核心协议,它使异构网络之间的通信成为可能。因此如果嵌入式Internet,需要跨越不同的网络进行通信就必须要实现IP协议。ARP协议实现将逻辑IP地址映射为物理地址。ICMP协议主要用来传递差错报文以及其他需要注意的信息。我们通常使用的应用程序PING就是采用ICMP协议来测试网络的连通情况。对于普通的嵌入式Internet的应用而言,在ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的PING应答协议即可。通常嵌入式Internet不考虑IGMP。
  链路层主要作用是为其上层协议发送和接收数据包,根据物理层的不同,主要协议有以太网、令牌环网、FDDI(光纤分布式数据接口)及RS232串行线路协议等。可由选择的网络接口芯片完成。
  3 设计实例
  应用普通8/16位MCU形成嵌入式网关是最具发展潜力的一大热点。而应用TCP/IP协议的以太网已经成为最流行的分组交换局域网技术,整个网络只有一种底层通讯协议,同时也具有开放的TCP/IP网络技术。它可满足控制系统各个层次的要求 。工业控制领域中常用的现场总线和串行通信可以通过嵌入式网关与以太网相连,从而方便的实现控制网络与Internet连接,目前基于以太网的工业控制网络已经成为未来的发展趋势。所以本设计采用在16位MCU中嵌入“裁剪”后的TCP/IP协议栈及以太网控制芯片驱动程序,并通过以太网接入Internet网络。
  这种方案首先要求在链路层上,由于采用以太网的接人方式,系统必须要实现IEEE802.3标准,这可采用通用的以太网接口芯片RTL8019AS来完成。其次,为了保证系统在以太网的通信,系统还需实现ARP应答协议。在网络层上要实现IP协议,为了能够测试系统与网络的连接,系统需要实现ICMP协议中的ping应答协议。在传输层上我们选择UDP协议。应用层上单片机系统传递来自Ethernet和数据终端的数据,应用层只对大的数据报作打包拆报处理。
  RTL8019AS是RealTek公司生产的一种全双工以太网控制器,符合Ethernet II 、IEEE802.3(10Base5、10Base2、10BaseT)标准;与NE2000兼容;支持8位、16位数据总线;内置16KB的SRAM,用于收发缓冲,可降低对主处理器的速度要求。外部RAM使用PSD4135(512KB),从而为数据处理提供了很大的缓存,同时它也有地址锁存和地址译码功能。使用E2PROM—93C46,可以将网卡物理地址和其他参数保存在里面。
  这里的RTL8019AS就是处理以太网协议(IEEE802.3)的。数据的流向为:请求信息从局域网中来,通过RJ45送到RTL8019AS,处理后的数据包送入80C196协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过80C196的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。RJ45为此系统与局域网的接口。
  数据段的个数可从46Byte“1500Byte,不足46Byte时用零补足;超过1500Byte时,需要拆成多个帧传送。前导位、帧起始位和帧校验序列仅供控制器本身用,主处理器收到的数据帧的组成依次包括:接收状态、下一帧的页地址指针、目的地址、源地址、数据长度、数据段。IEEE 802.3标准中的数据长度值小于或等于0x0600时,表示数据段的长度;反之,表示数据帧的类型。例如值为 0x0800,表示数据段为IP包;值为0x0806,表示数据段为ARP包。
  3.1 系统软件
  在选定硬件,完成各芯片间地址线、数据线及状态线连接后,开始软件设计。软件设计主要包括:芯片初始化程序、以太网控制器驱动程序、TCP/IP协议栈程序、系统网络配置程序。芯片初始化程序用于设置MCU工作模式及外围芯片选择;以太网控制器驱动程序用于设置以太网控制芯片的工作状态及工作方式,分配收发数据的缓冲区;系统网络配置程序用于给监测系统分配IP地址及域名。
  当网络有数据时,RTL8019AS在接收和处理完以太网数据帧后传送给单片机,80C196对数据包进行分析,如果是ARP(物理地址解析)数据包,则程序转入ARP处理程序。如果是IP数据包且IP地址正确,则继续分析若是ICMP包,则调用ICMP处理程序。若是UDP数据包,则80C196对数据解包后,将数据部分转存在PSD4135中或者通过串口输出。反之,当有数据要发送时,80C196将调用UDP打包程序来封装数据并送入RTL8019的缓存中去。具体流程为:数据放到UDP的数据段->生成UDP校验->建立IP头->(ARP地址解析)->生成Ethernet头->放到网卡发送缓冲区->发送 。
  4 结束语
  基于嵌入式Internet的工业以太网控制网络是未来新一代工业控制网络的发展趋势。本文阐述了嵌入式Internet的各种技术原理,并通过了以太网接口控制芯片和嵌入式TCP/IP协议实现了嵌入式网关的功能。相信随着嵌入式Internet技术的日益完善,这种可与现场总线等已有网络实现方便简单连接的方案,会得到更加广泛的应用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分