AVR单片机TCP/IP协议的设计与实现荣盘,赵海,王嘉良,刘丹,蔡鹏华东北大学信息科学与工程学院,沈阳,中国。电子邮件:panrong1012@126.com收到的6月3日2010;修订后的6月30日2010;接受7月6日日2010。摘要:随着嵌入式技术的快速发展,物联网的研究和实施将是一个新的技术革命,但物联网之间实现的通信的基础的事情是个问题。随着嵌入式控制技术的成熟,网络也逐步与之结合,深入到工业、楼宇、家居智能化等领域,实现远程数据采集、远程控制等功能。网络化已经成为新一代嵌入式系统发展的一个重要趋势。出于这个原因,实现单片机之间的通信的功能尤为重要。此文基于嵌入式单片机的特点,分析了传统PCTCP/IP协议,和适当定制的TCP/IP协议簇的基础上表现嵌入式单片机的特点。最后,我们意识到减少TCP/IP协议簇适合嵌入式单片机,特别是在AVR单片机平台上的应用。关键词:物联网,Webit,互联网的嵌入式系统,TCP/IP协议,以太网1.介绍物联网的意思是指通过信息的一种网络设备如FRID等设备,红外传感器,全球定位系统、激光扫描仪等,在安排的协议,加入任何和互联网之间沟通信息,实现智能识别、跟踪监视和管理。互联网的概念建议出现在1999年的时候。意思是“在因特网传达的东西”。这意味着两个方面:第一个是,互联网的核心和基础事情仍然在互联网,这基于扩展和延伸互联网;第二个是其客户延伸和扩展到任何东西,形成交流和沟通[1-3]。随着计算机和网络的迅速发展技术,互联网已经成为一个重要手段来传播信息,越来越多的嵌入式设备是有必要实现互联网的网络工作[4-5]。相对于电脑,计算和存储相比嵌入式系统资源相对有限;因此要实现所有的TCP/IP协议簇嵌入式单片机是非常不现实的。所以,为了节省系统资源和保证的可靠性系统的情况下提高嵌入式系统的性能,这就有必要简化的模块化的TCP/IP协议。2.采用设备和测试平台服务器是一个整体解决方案使设备智能化和网络化。这是新的网络设备系统与互联网的元素和结构,其基本思想是一个独立的、低成本的3W服务器嵌入式设备,使设备有独立的情报网络。辽宁省重点实验室推出服务器嵌入式互联网产品决定的嵌入式的技术。Webit1.0在2000年成功通过技术鉴定和商标注册,Webit2.0(互联网标准电气设备访问服务器)通过了2001年5月由辽宁科学技术委员会鉴定科技成果的会议。考虑到webitAVR8位单片机,它的存储单元是非常有限的,因此设计一种TCP/IP协议适合的产品集群是非常重要的。Webit2.0的性能如下:根据外部PC系统结构;使用AtmelAVRRISC处理器;用户定义的网页;用户定义的CGI程序用来控制;14位I/O接口(TTL);TTL水平UART支持115200个基点;10M以太网接口(注册插孔-45);系统编程(ISP);以太网控制器芯片RTL8019AS的概述Webit:高度集成以太网控制器RTL8019AS,它可以简单的符合即插即用NE2000兼容的适配器,减少两倍的功率特征。通过三级控制的特点,RTL8019AS网络装备是在已知的绿色电脑中最理想最好的网络设备。双重的功能可以模拟发送和接收传播之间的双绞线以太网交换机和所有的1/2。这不仅可以从10Mbps到20Mbps使带宽更强大,也避免muliaccess以太网阅读协议通道战斗角色。微软的即插即用功能可以减轻用户较低的收入和集中在资源适配器,等输入和输出、IRQ、内存地址,等等。然而,在特殊应用没有即插即用功能的兼容性,RTL8019AS支持跨接和JUMPERLESS选项。为了提供完整的即插即用的解决方案,RTL8019AS集成10baset收发器,自动检测功能AUI和BNC之间的接口。此外,8IRQ总线和16个基本地址总线为大型资源提供舒适的环境的情况。数据的收发其实就是对RTL8019AS内部的寄存器进行操作的过程,所以首先得对RTL8019AS进行初始化,主要是设置所需的寄存器状态,建立网络接口收发的条件,并对RTL8019AS缓冲区RAM进行划分,建立接收缓冲环。数据的收发就是对前面所介绍的寄存器的读写过程,当然其中还涉及到对RTL8019AS数据缓冲环的操作。网络接口通过两个DMA操作来完成数据的接收和发送。本地DMA完成RTL8019AS和它内部的FIFO之间的数据传送。远程DMA完成RTL8019AS和CPU之间的数据传送。所有这些功能由驱动程序实现,下面将以太网驱动程序进行介绍:3.4.1RTL8019AS初始化RTL8019AS的初始化,其实就是对RTL8019AS内部与NE2000兼容的寄存器的初始化。程序首先设置了ARM芯片LPC2292的I/O口属性。然后对RTL8019AS网络芯片进行复位,包括硬件复位和软件复位。再进入芯片停止状态,对内部寄存器进行设置,包括MAC地址的写入和内部SRAM的分配。最后,使芯片进入运行状态结束初始化。3.4.2数据接收过程RTL8019AS完成初始化后,就处于接收状态,一旦有数据分组到达,就自动执行本地DMA,将RTL8019ASFIFO中的数据送入接收缓冲环,然后向LPC2292申请“数据分组到达”中断请求。同时RTL8019AS内部的寄存器会发生相应变化,如ISR、CURR。CPU响应中断请求(读ISR,以判断中断类型)后,从接收缓冲环中取出数据分组至LPC2292的存储器中,然后对接收缓冲环CURR、BNRY指针内容进行修改,以便RTL8019AS能从网络上正确接收后续分组。启动远程DMA后,LPC2292不断读写RTL8019AS的数据端口(BASE_ADDR+10H),就能成功执行远程DMA操作,完成CPU与RTL8019AS缓冲RAM之间数据的交换。接收函数总是把所有数据报都读出来后才退出,而接收缓冲区没有指示哪些报未被处理。因此,如果接收到的数据报(指放在网络接口芯片内部缓存的)来不及处理,那么可能会发生丢包现象,所以对处理速度慢的机器需要设置更多的接收缓冲区。几乎接收函数的所有代码都属于临界区代码。函数一开始就进入临界区。如果网络接口芯片是处于复位状态,则对网络芯片进行初始化然后退出。RTL8019AS支持16k,32k和64k字节内存布朗和闪存接口。它提供了页面模型函数,它可以只支持4米字节布朗16k字节的内存系统空间。布朗的无用的命令是用来释放布朗内存空间。RTL8019AS的单片机设计的16k字节存储器,这样不仅提供了更多友好的功能,而且还节省了SRAM存储资源。3.Webit简化TCP/IP的设计协议栈AVR单片机,由于相对有限的资源,完整的TCP/IP协议簇的功能是不能实现的。所以根据的特点AVR单片机,我们原始的TCP/IP协议集群获得减少了TCP/IP协议簇。与此同时,基于TCP/IP协议栈的体系结构,我们适应网络的设计方法片模型。TCP/IP协议的架构集群简化后包含了ARP、IP、ICMPTCP,UDP协议处理模型,等等(6-8)。每一层的TCP/IP协议栈的体系结构是作为一个设计的独立功能的模块,处理他们的数据。不同的模块可以通过函数将被调用基准面上或下处理模块[9]。图1显示了简化TCP/IP协议的体系结构。的图1中,当AVR单片机接收到的数据网络,数据包处理模块将在一定条件下选择ARP基地模块的链路层或IP协议模块的网络层的过程。图1所示。简化TCP/IP协议的体系结构UDP和TCP协议模块的传输层,它将移交处理数据包的IP协议处理模块,并使封装为IP地址,第一(如地址、类型的协议,等等)。通过相应的函数调用。然后将数据报传输包括IP第一和TCP层越低通过函数调用,直到顺利发送数据。物理链路层:包含网络芯片的硬件和基于硬件上的芯片级驱动。随着网络物理介质的不同和使用网络芯片的不同,需要选择不同的通信方式和修改相应的驱动程序,但只要对外提供的接口不变,网络层的程序是不用修改的。例如以太网(Ethernet)和通过Modem上网的方式不同,驱动不同,但不影响网络层。网络层:接收物理链路层过滤后的数据,并对通过识别不同的分组信息后传给传输层中不同的协议。著名的IP(网际协议)是网络层的协议,它支持将多种网络技术互联为一个逻辑网络。IP提供不可靠的、无连接的、尽最大努力交付的分组传输机制,为两个物理设备之间的信息传递提供最好的传输服务。所有具有网络层的因特网设备都会运行IP协议。传输层:传输层的两个重要协议TCP(传输控制协议)和UDP(用户数据报),都是端到端的协议,根据应用程序需要的服务的不同可以选择其中的一个协议。发送时,TCP和UDP都将报文头和数据打包放在IP的数据段中发送出去。接收IP分组后,剥离IP的首部,得出是TCP还是UTP协议,再根据其首部中端口的不同,交给应用层程序处理。应用层:这一层的功能最终面向用户,因此非常丰富,并且千差万别。每一个应用层协议都是为了解决某一类应用问题而规定的,是通信双方都需要遵循该协议才能正常通讯。比如,telnet提供远程登陆服务;FTP提供应用级的文件传输服务;SMTP提供简单的电子邮件发送服务;http提供网页浏览服务;还有域名服务系统DNS、简单网络管理协议SNMP等等。TCP/IP协议处理如图2所示。图2.TCP/IP协议处理4.简化的设计和实现嵌入式TCP协议首先,在Webit,我们的格式和大小MAC和转换功能,系统地址配置,大小缓冲器已经被定义。我们让MAC地址格式化、IP成为固定的价值系统。系统组态用于设置特定值的转换功能,港口和MAC地址。在此系统中,为有限的数据需要单片机处理,所以我们不会设置缓冲区比正常。.DSEG.ORG0x60LocalMAC:.6字节LocalIP:.4字节LocalPort:.2字节RemoteMAC:.6字节RemoteIP:.4字节RemotePort:.2字节Plugdelaytime:.32字节TCPCB:.30*2字节RevBuffer:.260字节4.1ARP协议的实现因为嵌入式单片机通常是在服务的被动状态。所以当我们设计和实现了ARP协议,我们不实现地址映射功能表,没有实现的功能查询任何客户机IP映射到MAC地址,只需要实现当其他客户端查询本地Mac地址。数据包并获得反馈的关系之间的IP和MAC地址,并发送。当嵌入式单片机接收到ARP数据包从以太网,我们根据操作的类型编码的数据包决定类型的ARP包,如果ARP请求数据包,比较目的IP地址字段ARPP包的本地设置IP地址。如果是相等的,当地的MAC地址包装回应道ARP应答包,如果没有,不做处理,丢弃它。ARP数据包的处理流程如图所示3。图3.ARP协议处理4.2IP协议的实现IP协议是TCP/IP协议的核心集群。所有的ICMP、UDP和TCP数据传输IP数据报图3。ARP协议处理格式。在IP协议处理模块实现IP协议模块,我们首先收到IP日期从以太网的数据包和决定目的IP地址字段值在数据报主管等于本地IP地址,如果没有,丢弃,如果一致,检查等领域的版本号和校验和IP数据报等。检查后,确认包是正确的,和然后决定选择ICMP协议,UDP协议或TCP服从上层处理,根据类型IP数据。另外,IP协议的另一个功能我们设计和实现是使模块从上层到IP数据消息封装交付,然后向IP封装数据链路层数据帧封装和发送。处理IP协议流程如图4所示。图4.IP协议处理4.3ICMP协议的实现ICMP协议是一种信息传递的控制协议。我们考虑嵌入式单片机作为一般服务器回应客户,作为一个被动的设备,它不需要主动发回消息。所以我们只实现单片机之间的接收和处理回声请求等设备在ICMP协议模块,并发送回声回答。ICMP协议的实现:阅读类型代码的ICMP数据的第一个字节数据包,检查ICMP数据包类型。如果类型代码是8,数据包的类型将被修改为0,每个字段的数据包封装的回声回复数据包需要发回,最后调用发送IP函数,使ICMP数据包到IP数据报封装发送。如果数据包的类型代码不是8,丢弃数据包。ICMP协议的处理流程如图5所示。图5.ICM