已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录摘 要1第1章 绪论21.1嵌入式系统21.2课题研究的意义21.3 整体方案设计21.4课题最终实现目的3第2章 TCP/IP协议(栈)简介42.1 TCP/IP协议的分层结构42.2 TCP/IP协议的封装和分用52.2.1 什么是封装52.2.2 什么是分用52.2.3 以太网帧格式62.3 TCP/IP的子协议82.3.1 ARP协议82.3.2 IP协议102.3.3 ICMP网际控制报文协议122.3.5 应用层协议(HTTP协议)16第3章 硬件实现173.1 物理层接口实现173.1.1 RTL8019AS简介6173.1.2 RTL8019AS的内部结构193.1.3 RTL8019AS内部寄存器简介193.1.4与系统配置和运行有关的寄存器203.1.5 与DMA有关的寄存器223.2硬件设计243.2.1硬件接口框图243.2.2 主要器件24第4章 软件实现264.1 RTL8019AS驱动程序设计264.1.1 RTL8019AS的初始化264.1.2报文的发送274.1.3 报文的接收294.2 TCP/IP协议栈的实现304.2.1 地址解析协议ARP的是实现304.2.2 网络层IP协议的实现3 IP包处理324.2.3 差错控制报文ICMP的实现354.2.4 传输控制协议TCP的实现374.2.5 应用层(HTTP协议)的实现414.3 轻量级TCP/IP协议栈uIP的嵌入414.3.1 uIP架构424.3.2 uIP在MCS-51单片机上的调试44结 论49致谢50参 考 文 献51基于MCS-51单片机技术以太网接口设计摘 要现实生活中,许多的嵌入式系统设备已被广泛地应用,由于当前硬件设计的 问题,未嵌入网络连接模块,使得这些嵌入式系统在使用上受到限制,而添置新设备又需要很高的成本。本文设计的网络接入模块解决了嵌入式设备与以太网络的连接问题,在不改变嵌入式设备本身结构的情况下,用户终端可以通过这个模块将现有的各种串口设备快速方便地接入网络,从而实现仪器的远程控制、远程数据终端的数据通信等功能。本设计利用8位单片机AT89C52提供的系统资源和处理能力,加上ISA接口的10 Mb/s网卡芯片RTL8019AS,通过编写一套精简的协议栈,并实现可靠的数据通信,从而达到低成本、可靠连接网络的目的。关键词:以太网,单片机,RTL8019AS,AT89C52第1章 绪论1.1嵌入式系统嵌入式系统是指嵌入式计算机及其应用系统,是指嵌入于各种设备及应用产品内部的计算机系统,它主要完成信号控制的功能,体积小,结构紧凑,可作为一个部件埋藏于所控制的装置中,它提供用户接口、管理有关信息的输入输出、监控设备工作,使设备及应用系统有较高的智能和性价比。嵌入式系统由嵌入式硬件与嵌入式软件组成,硬件以芯片、模板、组件、控制器形式埋藏于设备内部,软件是实时多任务操作系统和各种专用软件,一般固化在ROM或闪存中。软硬件可裁剪,适用于对功能、体积、成本、可靠性、功耗有严格要求的计算机系统中。嵌入式计算机系统,最早出现在60年代的武器控制中,后来用于军事指挥控制和通信系统,现在广泛应用于民用机电一体化产品中。1.2课题研究的意义随着Internet技术的普及,信息共享的程度越来越提高。TCP/IP协议栈使得嵌入式系统可以通过Internet将通信距离无限扩展。以太网使得大量数据的快速传输成为可能。这样,除了可以充分利用PC机上各种资源,完成数据的存储、分析、统计工作外,还可以实现测控系统间的数据交换,对于智能化、模块化的嵌入式设备集群的实现提供了另一种途径。PPP协议可以通过调制解调器实现远程的数据交换、状态控制等功能,为嵌入式系统提供了更为灵活的控制、监测方式。因此,基于单片机的嵌入式系统如何控制以太网网卡控制器进行数据传输,如何嵌入TCP/IP协议连接到互联网,这些都具有深远的意义2。1.3 整体方案设计方案的主要任务是采用单片机控制网络接口芯片实现以太网接口,以便宜控制系统通过以太网实现网络化。在本文中最重要的是嵌入式TCP/IP协议在8位单片机上的实现,从而达到了实现嵌入式以太网接口的目的。嵌入式以太网的实质是在嵌入式系统的基础上实现网络化,使嵌入式系统能够实现TCP/ IP网络通信协议,接入以太网。将嵌入式系统与TCP/IP协议融合到一起主要有两种方法:一种是采用带有以太网接口的嵌入式处理器,即使用已有的TCP/IP芯片直接作为以太网口。这种方法的优点是可靠性高,执行速度快,但往往硬件电路复杂、价格昂贵、硬件成本高。另一种是采用嵌入式处理器+网卡芯片,即将TCP/IP协议以软件方式嵌入到嵌入式系统的ROM中。一般来说,TCP/IP协议栈比较庞大,在嵌入式系统中很难支完整的TCP/IP协议,因此要根据嵌入式网络产品的特点,精简TCP/IP协议,实现与需要相关的部分,大幅度减少对于系统资源的需求。本设计采用了第二种方式,使用通用高性能做51系统MCU,成本低、技术成熟,软硬件开发周期都很短,并且设计方案灵活多变,可适用于不同的对象。1.4课题最终实现目的本课题主要实现将TCP/IP协议嵌入 8位单片机中,单片机上网研究最多的一种方案就是用单片机驱动ISA总线网卡或者是驱动基于ISA总线的以太网(局域网组网规范) 控制芯片,考虑到在实际的网络应用中以太网在局域网中占有主导地位,本文采用后者。单片机上网的困难在于TCP/IP协议是一组庞大的协议集,而8位单片机自身资源有限,其存储容量、运行速度和总线宽度等不能像PC机那样通过标准的硬件和软件接口实现TCP/IP。本文将介绍利用Atmel公司的51单片机芯片AT89C52,它能够满足需求,而且极为常用,价格便宜,易于获取。网卡芯片采用台湾Realtek公司生产的10Mbps ISA总线的以太网控制芯片RTL8019AS,嵌入T CP协议以实现单片机上网。第2章 TCP/IP协议(栈)简介2.1 TCP/IP协议的分层结构TCP协议和IP协议是使计算机能相互通信的一组协议中的两个重要协议,通常就用TCP/IP来代表这一组协议。该协议是用于通信的一个规则或标准,由计算机传送数据时使用,保证Internet上数据的准确快速传输。本文采用TCP/IP的一种简化的四层模型,分别为:应用层、传输层、网络层、链路层。如表2.1所示。表2.1 TCP/IP协议的分层结构层主要协议应用层FTP 、TELNET、 SMTP、 SNTP、 HTTP传输层TCP、UDP网络层IP、ARP、RARP、IGMP、ICMP链路层接口层协议链路层:有时也称作数据链路层或网络接口层,定义计算机怎样连接网络,数据必须通过对网络的连接才能传出去,它提供物理介质(如网卡芯片)与单片机的接口,将原始数据转换成上一层能识别的逻辑帧。网络层:负责处理从原发送方到目的地的报文地址和路由信息,以便让信息可以发送到相邻的TCP/IP网络上的任意主机上。IP协议就是层中传送数据的机制。这一层使用的主要协议还有:地址转换协议(ARP协议)、反向地址解析协议(RARP协议)、网际控制报文协议(ICMP协议)和Internet组管理协议(IGMP协议)。传输层:主要为两台主机上的应用程序提供发送端到目的端的通信。这一层的协议有两个,基于可靠传输的传输控制协议(TCP协议)和不可靠传输的用户数据报协议(UDP)。应用层:负责对接收的数据提供解释服务。对嵌入式系统来说,有两个协议是非常重要的,即超文本协议(HTTP协议)和文件传输协议(FTP协议)。超文本传输协议用于将文件从一个主机传送到另一个主机,并在请求方主机上显示文字、文件;文件传输协议用于将文件从一个主机传送到另一个主机,并将文件存储在发出请求的主机内。它传送的只是一个拷贝,不是原文件。其它的协议还有远程登录、简单邮件传输协议、简单网络管理协议等3。2.2 TCP/IP协议的封装和分用TCP/IP协议采用分层结构,实现也采用分层实现的方法。在实现的过程中首先要了解封装和分用的概念。2.2.1 什么是封装当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层,直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),这个过程称作封装。如图2.1所示:app1首部数据IP首部TCP首部帧首部TCP数据IP数据以太网帧数据帧尾部TCP报文IP报文以太网帧图2.1 数据进入协议栈时的封装过程2.2.2 什么是分用当目的主机收到一个以太网数据帧时,数据就开始从协议栈底层向上升,同时去掉各层协议加上的报文首部。以太网帧要检查首部中的帧类型字段,IP要检查首部中的协议字段,TCP和UDP要检查首部中的端口号来确定数据属于哪一层,这个过程称作分用。如图2.2所示:ARPIPRARP以太网帧TCPIGMPUDPICMP应用程序应用程序应用程序应用程序根据首部中的协议值分根据首部中的帧类型分根据首部中的端口号分图2.2 以太网数据帧的分用过程2.2.3 以太网帧格式各种通讯协议都有自己的报文格式,TCP/IP也不例外,它也有自己单独的报文格式。对TCP/IP协议编程,首先要清楚其报文格式。由于TCP/IP协议采用分层结构,各层都有专用的包头,下面先介绍以太网的物理帧格式,TCP/IP其它各层的帧格式讲座2.3节介绍。以太网协议不止一种,本课题使用的是802.3协议,物理信道上的收发操作均使用此协议的帧格式。一个标准的以太网物理传输帧由前导列PR、分隔位SD、目的地址DA、源地址SA、类型字段Type、数据段Data、填充位PAD和帧校验序列FCS共8部分组成。帧结构如表2.2所示。表2.2 802.3协议以太网物理帧结构PRSDDASATypeDataPADFCS56位8位48位48位16位461500字节DATA小于46字节时补032位PR:同步位,用于收发双方的时钟同步,同时也指明了传输的速率(10M和100M的时钟频率不一样,所以100M网卡可以兼容10M网卡),是56位的二进制数101010101010.。 SD:分隔位,表示下面跟着的是真正的数据,而不是同步时钟,为8位的10101011,跟同步位不同的是最后2位是11而不是10。 DA:目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡。如果为FFFFFFFFFFFF,则是广播地址,广播地址的数据可以被任何网卡接收到。 SA:源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节。 TYPE:类型字段,表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。如:0800H 表示数据为IP包,0806H 表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包,(小于0600H的值是用于IEEE802的,表示数据包的长度。) DATA:数据段 ,该段数据不能超过1500字节。因为以太网规定整个传输包的最大长度不能超过1514字节。(14字节为DA,SA,TYPE) PAD:填充位。由于以太网帧传输的数据包最小不能小于60字节,除去(DA,SA,TYPE 14字节),还必须传输46字节的数据,当数据段的数据不足46字节时,后面补000000.(当然也可以补其它值) FCS:32位数据校验位.为32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入。对于数据的校验算法,我们无需了解。数据帧传输时,除了数据段的长度不定以外,其他部分的长度固定不变。数据段为461500字节。以太网规定整个传输包的最大长度不能超过1514字节(14字节为DA、SA、Type),最小不能小于60字节。除去DA、SA和Type共14字节以外,还最少必须传输46字节的数据,当数据段的数据不足46字节时需填充,填充字符的个数不包括在长度字段里,超过1500字节,需要拆成多个帧传送。事实上,发送数据时,PR、SD、FCS及填充字段这几个数据段由以太网控制器自动产生;而接收数据时,PR、SD被跳过,它们只被控制器检测,而不被作为接收数据接收,控制器一旦检测到有效的前序字段(即PR和SD),就认为接收数据开始。2.3 TCP/IP的子协议2.3.1 ARP协议ARP是Address Resolution Protocol的缩写,中文译作“地址解析协议”。本质是完成网络地址到物理地址的映射。从概念上讲就是找到一个映射方法f,使得“物理地=f(网络地址)”。 物理地址有两种基本类型:以太网类型和ProNET令牌网类型,前者有大型的固定的物理地址,后者有小型的易于配置的物理地址,网络地址特指IP地址。 地址解析协议ARP是IP能够获得与某个给定IP地址相关的主机物理地址。ARP的功能分为两部分:一部分在发送数据包时请求获得目的主机的物理地址;另一部分向请求物理地址的主机发送解析结果。 地址解析原理:当主机A需要向同一物理网络中的主机B发送IP数据报时,主机A的IP层要将IP数据报传给数据链路层进行帧封装, 封装时要求给出目的主机的物理地址。因此,IP层发送IP数据报时通常将产生以下事件:(1) IP调用ARP,请求IP地址为IB的目的主机B的物理地址为PA。(2) ARP创建一个ARP请求帧,请求IP地址IB对应的物理地址。ARP请求将包括如下信息:l 请求主机的物理地址PA;l 请求主机的IP地址IA;l 目的主机的IP地址IB。(3) 主机A在本地网络中广播ARP请求帧,请求帧的目的地址为广播地址(全为“1” )。(4) 该网络中的所有主机都能接收ARP请求帧,并将该帧中的目的地址IP地址IB和自己的IP地址进行比较。其地址IB不匹配的主机将忽略这个帧。(5) 如果主机发现请求中的目的主机IP地址IB与自己的IP地址相同,就产生一个包含其物理地址PB的ARP应答帧。 (6) ARP应答帧直接发回给发送ARP请求的主机A(ARP应答帧不以广播方式发送)。ARP应答帧包含以下信息:l 应答主机的物理地址PB;l 应答主机的IP地址IB;l 请求主机的物理地址PA;l 请求主机的IP地址IA。(7) 利用从应答帧中得到的目的主机的物理地址PB完成IP数据报的帧封装,并将该帧发送给主机B。 这里需要注意一下两点:(1) ARP请求帧在物理网络中是以广播方式发送的,因此此时还不知道目的主机的物理地址。ARP应答帧是以单播方式发送的,因为应答方从请求帧中可以得到对方的物理地址。(2) 目的主机必须与源主机位于同一物理网络中。由于ARP采用的是物理网络中的广播,IP路由器不会对该广播进行转发,因而不能用ARP确定远程网络中主机的物理地址,而且也没有必要知道远程地址的物理地址。如果目的主机位于远程网络中,IP会将数据报先发送给路由器,然后又路由器进行转发。在这种情况下,IP只需要利用ARP确定路由器的物理地址就可以了,而路由器将逐级向前转发数据报。以下是ARP地址解析报文的帧格式:表2.3 地址解析报文的帧格式字段以太网首部硬件类型协议类型硬件地址长度协议地址长度OP发送端以太网地址发送端IP地址目的以太网地址目的IP地址位161616881648324832l 以太网首部:帧封装时加在ARP报文的首部。ARP报文作为以太网帧的数据部分进行发送。以太网帧结构参见2.2.3节。l 硬件类型:16比特,定义物理网络类型。物理网络的类型用一个整数值以太网的硬件类型值为“1”。l 协议类型:16比特,定义使用ARP协议的类型。如0x0800表示IPV4。l 硬件地址长度:8比特,以字节为单位定义物理地址长度。以太网为6。l 协议地址长度:8比特,以字节为单位定义物理地址长度。IPV4为4。l 操作类型:16比特,定义报文的类型(“1”为ARP请求,“2”为ARP应答,“3”为RARP请求,“4”为RARP应答)。l 发送方以太网地址:定义发送方的物理地址。l 发送方IP地址:定义发送方的网络地址。l 目的以太网地址:定义目的设备的物理地址。l 目的IP地址:定义目的设备的网络地址。2.3.2 IP协议正像TCP/IP协议的名称所表达的信息那样,因特网的核心协议是IP和TCP两大协议。IP协议作为TCP/IP协议簇中的核心协议,提供了网络数据传输的最基本的服务,同时也是实现网络互连的基本协议。除了ARP和RARP报文以外的几乎所有的数据都要经过IP协议进行发送。IP协议位于网络层,位于同一层次的协议还有ARP和RARP以及上面的因特网控制报文协议ICMP和因特网组管理协议IGMP。ARP和RARP报文没有封装在IP数据报中,而ICMP和IGMP的数据则要封装在IP数据报中进行传输。由于IP协议在网络层中具有重要的地位,人们又将TCP/IP协议的网络层称为IP层。IP是不可靠的无连接数据报协议,提供尽力而为(best-effort)的传输服务。IP协议具有以下特点:(1)是点对点协议,虽然IP数据报携带源IP地址和目的IP地址,但进行数据传输时的对等实体一定是相邻设备(同一网络)中的对等实体。(2)IP协议不保证传输的可靠性,不对数据进行差错校验和跟踪,当数据报发生损坏时不向发送方通告,如果要求数据传输具有可靠性,则要在IP的上面使用TCP协议加以保证。(3)IP协议提供无连接数据报服务,各个数据报独立传输,可能沿着不同的路径到达目的地,也可能不会按序到达目的地。正因为IP协议采用尽力传输的思想,所以使得IP协议的效率非常高,实现起来也比较简单。随着底层网络质量的日益提高,IP协议的尽力传输的好处也体现得更加明显。IP层向下要面对各种不同的物理网络,向上却要提供一个统一的数据传输服务。为此,IP层通过IP地址实现物理地址的统一;通过IP数据报实现了物理数据帧的统一。IP层通过对以上两个方面的统一达到了向上屏蔽底层差异的目的。IP数据报文格式如下表所示:表2.4 IP数据报格式字段版本首部长度服务类型总长度标识标志片偏移生存时间协议头校验和源IP地址目的IP地址选项数据位448161631388163232普通的IP首部长为20字节,如果包括选项字段可达60字节。l IP目前的协议版本为4,因此有时IP也称为IPV4。l 首部长度字段长度为4比特,指出以32位字长(4字节)为单位的数据报首部长度。由于IP数据报首部包含了IP选项这一变长的字段,所以需要通过首部长度确定首部和数据的分界点。l 用单片机实现TCP/IP协议要作一些简化,不考虑数据分片和优先权。因此不讨论服务类型、标志和片偏移,只需填0即可。l 数据报总长度字段的长度为16比特,总长度以字节为单位指示整个IP数据报的长度。IP数据报最大长度可达(即65535)个字节。根据首部长度和总长度可以计算出数据部分的长度。l 标识是数据包的ID号,用于识别不同的IP数据包。l 生存时间TTL是个数量级的概念,防止无用数据包一直存在网络中。一般每经过一个路由器减1,因此通过TTL可以算出数据包到达目的地所经过的路由器的个数。l 协议字段表示创建该数据包的高级协议的类型。如:1表示ICMP协议,6表示TCP协议,17表示UDP协议。l 头校验和字段为16比特。用于保证首部数据的完整性。数据部分的正确性则由高层协议予以保证。l 源IP地址指发送方IP地址。l 目的IP地址指接收方IP地址。l 选项字段为变长字段,是在传输数据报时可选的附加功能,用于控制数据在网络中的传输路径、记录数据报经过的路由器以及获取数据报在途中经过的路由器的时间戳。IP选项长度受首部长度限制4。2.3.3 ICMP网际控制报文协议TCP/IP的IP层在完成无连接数据报传输的同时,还实现一些基本的控制功能。这些控制功能包括:差错报告、拥塞控制、路径控制以及路由器和主机信息的获取等。实现这些控制功能的协议是位于IP层的因特网控制报文协议ICMP(Internet Control Massage Protocol)。ICMP报文分为两大类,差错报告报文和查询报文。经常被认为是IP层的一个组成部分。ICMP报文首先要封装成IP数据报,然后再传递给下一层。报文格式见表2.5所示:8位类型8位代码16位校验和首部其它部分数据首部表2.5 ICMP报文格式ICMP报文首部的通用部分由类型、代码和校验和3个字段构成。l 类型(TYPE):指示ICMP报文的类型。l 代码(CODE):提供关于报文类型的进一步信息。l 校验和(CHECKSUM):提供ICMP整个报文的校验和,校验和算法与IP数据报首部校验和算法相同。与IP数据报首部校验和不同的地方是,ICMP校验和是整个报文的校验和,另外使用校验和进行校验的设备不是中间的路由器,而是最终的目的地。l 首部其它部分为4个字节,大部分差错报告报文未用到这一部分,参数错报告报文用到其中的一个字节作为指针,请求应答报文对利用这4个字节匹配请求与应答报文。不使用时将不使用部分填“0” 。l 数据段部分在报告差错时,携带原始出错数据报的首部和数据的前8个字节,通常这些信息包括了该数据报的关键信息(前8个字节一般为上层协议的首部信息);在请求和应答报文中,携带与请求和应答相关的额外信息。所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。类型字段可以有15个不同的值,以描述特定类型的ICMP报文。有些ICMP还使用代码字段的值来进一步描述不同的条件。ICMP差错报告报文常见类型和含义见表2.6所示:表2.6 ICMP常见类型号及其含义类型34511128或010或913或1417或18报文含义目的地不可达源中断重定向数据报超时数据报参数有问题回送请求和应答路由器询问和通告时间戳请求或应答地址屏蔽请求或回答本课题只考虑ICMP报文的目的站不可达和回送请求与应答报文,表2.7和表2.8分别为这两种报文的格式。表2.7 目的站不可达报文格式类型3代码0-15校验和收到IP一部分,包括IP首部以及前8字节字段类型8或0代码检验和标识符序号可选数据位88161616由请求报文发送,有应答报文重复表2.8 回应请求与应答报文格式 字段类型8和0代码检验和标识符序号可选数据位88161616由请求报文发送,由应答报文重复注:类型0为回应应答报文,8为回应请求报。整个数据包均参与检验。2.3.4 TCP传输控制协议传输层是TCP/IP协议中的一个举足轻重的层次,网络层用IP数据报统一了数据链路层的数据帧,用IP地址统一了数据链路层的MAC地址,但网络层没有对服务进行统一。传输层的目的在于弥补和加强通信子网服务。在TCP/IP协议的传输层,提供了面向连接的传输控制协议TCP和无连接的用户数据报协议UDP。就不同的底层网络而言,TCP和UDP有不同的适用范围,TCP适用于可靠性较差的广域网,UDP则使用于可靠性较高的广域网。传输层以下各层只提供相邻机器的点到点传输,而传输层提供了端到端的数据传输,这里的端到端不仅指源主机到目的主机的端到端通信,而且指源进程到目的进程的端到端通信。 TCP采用协议端口来标识某一主机上的通信进程。为了保证信息能够正确地到达指定的端进程,必须显示地给出全局惟一的信宿端得进程表示符。主机可以用IP地址进行标识,IP地址是全局惟一的,再给主机上的进程赋予一个本地惟一的标识符(端口号),二者加起来,便形成了进程的全局惟一标识符。每个应用进程之间的通信都是基于所谓的socket套接字。套接字socket是系统提供的进程通信编程界面,支持客户/服务器模型。它关联了应用程序和端口,并且为每一个端口分配多个通信端点,从而可以实现同一应用程序的多进程服务。socket地址提供了进程通信的端点。客户和服务器进程通信之前,双方先各自创建一个端点,构成各自的半关联。每个socket都有一个操作系统分配的本地惟一的socket号。然后客户根据服务器的熟知地址建立socket连接。可以用一个完整的关联描述一个socket连接:(协议,本地主机地址,本地端口号,远程主机地址,远程端口号)socket支持不同的传输层协议,当使用TCP协议作为传输层协议时,一个socket连接就是一个TCP连接。TCP是面向流的协议,发送方以字节流发送数据,接收方以字节流接收数据。数据在建立的连接上按顺序发送,并且按顺序达到信宿机。图2.3给出了TCP端口和字节流的直观描述。应用程序(http)应用程序(http)临时端口熟知端口TCPTCP主机A客户主机B服务器IP地址:IP地址:字节流图2.3 进程标识与流传输一个TCP连接的建立过程需要经过客户端与服务器之间的三次握手。TCP报文格式见表2.9所示。表2.9 TCP报文格式字段源端口地址目的端口地址序号确认号首部长度保留urgackpshrstsynfin窗口检验和紧急指针选项填充数据位16163232466161616TCP段格式中各个字段的含义和作用如下:l 源端口地址定义主机中发送本TCP数据段的应用程序的端口号。l 目的端口地址定义接收本TCP数据段的应用程序的端口号。l 序号指出段中的数据部分在发送方数据流中的位置。也就是发送的数据部分第一个字节的序号。l 确认号指出接收方希望收到对方下次发送的数据的第一个字节的序号。这个序号表明该序号以前的数据已经被正确接收。l 首部长度指出以32比特字长(4字节)为单位的段首部长度。l 保留字段长度为6比特,留作将来使用。l 控制字段的每一位都有特定的含义,指出段的目的和内容。l 窗口大小字段长度为16比特,用于向对方通告当前本机的接收缓冲区的大小(以字节为单位)。l 校验和的校验范围包括段首部、数据以及伪首部。其计算方法与IP数据报首部校验和的计算方法相同。l TCP选项是变长字段,位于TCP报头的最后,由若干8位比特的字节组成,所有的选项都参与校验和的计算,选项可以开始于任何一个字节边界,有两种选项的格式:(1)只有选项类型的单字节选项。(2)一字节的选项类型,一字节的选项长度和实际选项值,选项长度的计算包括选项类型,选项长度和实际选项值。2.3.5 应用层协议(HTTP协议)超文本传输控制协议(HTTP)用来分发超文本媒体信息,相当灵活和迅速,是目前通过Internet进行信息交换的最主要方式。HTTP协议是建立在请求/响应模型上的,每次发送请求时必须重新建立连接,也就是程序每次只处理一个请求。客户机建立一条与服务器的TCP连接,并发送一个请求到服务器,请求中包含请求方法、URI(统一资源标志符)、协议版本以及相关的MIME式样的信息(包含服务器的信息、资源实体的信息和可能的资源内容)。HTTP1.0为每一次HTTP请求/响应建立一条新 TCP连接,因此一个包含HTML内容和图片的页面将需要建立多次的短期TCP连接。HTTP1.1提出了可持续连接的实现方法,HTTP1.1将只建立一次TCP的连接而重复地使用它传输一系列的请求/应答消息,因此减少了连接建立的次数和经常性的连接开销。但是在嵌入式系统中不要求HTTP的持续连接,而且传输的数据量也不是很大,所以系统实现了HTTP1.0。HTTP有以下几个特点:1) 请求/响应,一旦建立了传输会话,一端(通常是浏览器)必须向响应的另一端发送HTTP请求。2) 无状态。每个HTTP请求都是自包含的,服务器不保留以前的请求或会话的历史记录。3) 双向传输。在大多数情况下,浏览器请求Web页,服务器把副本传输给浏览器。HTTP也允许从浏览器向服务器传输(如果用户提交所谓“表单”的话)。4) 协商能力。HTTP允许浏览器和服务器协商一些细节,如在传输中使用的字符集,发送方指定它提供的能力,接收方指定它接收的能力。5) 支持高速缓存。为了减少响应时间,浏览器将它接收的每个Web页的副本放入高速缓存。如果用户再次请求该页,则HTTP允许浏览器访问服务器,确定自从高速缓存之后该页的内容是否已经改变。6) 支持中介。HTTP允许在浏览器到服务器之间路径上的机器作为代理服务器,将Web页放入高速缓存并从中应答浏览器的请求。7) 应用层。HTTP在应用层上操作。它采用一种稳定的,面向连接的传输协议,如TCP,但是不提供可靠性或重传机制5第3章 硬件实现3.1 物理层接口实现系统采用基于因特网的接入方式,实现串行通讯协议和以太网协议的转换。与局域网额接口采用Realtek公司的网络接口控制器RTL8019AS实现。RTL8019AS是100脚、PQFP封装、ISA接口的以太网接口芯片,接入速率10Mb/s。串行接口可以实现RS-232。RS-232选用MAXM公司的MAX232(A)。系统通过RTL8019AS接入以太网,利用现有的局域网线路,实现RS-232信号数据的远程传输。下面分别介绍物理层的接口实现。3.1.1 RTL8019AS简介6 RTL8019AS是本系统与以太网通讯的基础,它用以实现系统与网络上其他节点之间的报文发送与接收功能,处于TCP/IP协议栈的数据链路层,是信息传送、控制和管理的重要环节。其功能大致可分为以下两种;(1) 通信数据的发送和接收。发送时,将发送来的数据按照特定的格式并加上前导码、帧定界符灯装配成帧,并进行CRC校验。校验后,将数据串行的从网线上发送出去。接收时,判断报文的目的地址是否为本机地址,如果是,对报文进行校验。校验正确,则将报文发往存储器本发送一个ACK应答帧。如果校验后发现报文错误,则将收到的报文丢弃并发送一个NAK否定应答帧。(2) 载波信号的收发和控制。这项功能包括载波监听、发送时间等。确切的说,网络控制器是一个DTE(数据终端设备)。按照IEEE802.3协议的模型功能划分,可将10Mb/s以太网控制器的功能模块划分为介质存取控制(MAC)子层、接入单元接口(AUI)、介质接入单元(MAU)和物理信号规范(PLS)等4部分,其大体结构框图如图3.1所示:地址寄存器MACPLS缓冲存储器网络接口AUIMAU系统总线 图3.1 RTL8019AS结构框图各单元的功能如下:(1) MAC子层负责执行CSMA/CD协议,负责发送和接收数据封包以及通信媒体管理、完成数据帧同步、接收数据帧时给数据帧定界、检测目的地址是否匹配以及冲突处理等功能。(2) PLS完成发送数据、接收数据、载波监听、错误检测等功能,这些功能都与通讯媒介无关。PLS将MAC传送来的NRI(不归零编码)编码的数据转换成曼彻斯特编码后并将数据通过AUI发送到MAU,或通过AUI从MAU接收以曼彻斯特编码方式编码的数据,并将数据进行NRI译码后将数据发送到MAC。(3) AUI提供PLS功能与MAU之间信号的通道。(4) MAU与通讯媒介直接相关,是DTE与网络介质之间的功能、电气与机械的接口。它将随着通信媒介的不同而不同,用于完成发送数据、接收数据、回环以及冲突检测、SQE(信号质量错误)测试等功能。网络的冲突检测、冲突退避重发、检测接收报文目的地址是否匹配、检测报文CRC校验等工作都由硬件来完成,本系统中只要对发送、接收、初始化、中断处理、出错处理和I/O操作等进行控制。3.1.2 RTL8019AS的内部结构(1)RTL8019AS内部有两块RAM区。一块容量为16KB,地址为0x40000x7fff,用于收发缓冲。收发缓冲以页为单位,每页256字节,共64页,对应的页号为0x400x80。一般将前12页(即地址为0x40000x4bff)作为发送缓冲区,且分为两个6页。这两个发送缓冲区交替使用,可提高发送效率。后52页(即地址为0x4c000x7fff)作为接收缓冲区。为了有效利用接收缓冲区,将接收缓冲区RAM构成FIFO循环队列结构。要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM。它实际上是双端口的RAM,有两套总线连接大奥该RAM:一套总线是RTL8019AS读写该RAM,即本地DMA;另一套总线是单片机读写该RAM,即远程DMA。(2)另一块只有32字节,地址为0x00000x001f,称为Prom页,存储有本网卡芯片的以太网物理地址,其中地址0x00000x000b共12个字节存放以太网物理地址,0x000b后面的地址存储的是生产厂商的代码和产品标识代码。以太网物理地址是6个字节的,这里使用12字节是因为这12字节是重复存储的,例如物理地址0x50584AC219DF存储在0x00000x000b里是50505859ACACC2C21919DFDF,可以看到单和双的地址存储的是一样的。生产厂商和产品标识代码也是单双地址重复存储的。值得一提的是网卡地址是唯一的,且一旦某一网卡生产出来之后,该网卡芯片的物理地址就固定了,是不能改变的。(3)RTL8019AS具有32为I/O地址,地址偏移量为0x000x1f(本例中对应于0x3000x31f)。(4)其中0x000x0f共16个地址为寄存器地址。寄存器分为4页:Page0Page3,由RTL8019AS的命令寄存器(CR)中的PS0、PS1为来决定要访问的页。0x100x17为远程DMA地址,都可以用来作为远程DMA端口,使用其中一个即可,本课题选用0x10。这样,微控制器通过读写端口0x10即可实现对RTL8019AS内部缓冲区的访问。0x180x1f共8个地址为复位端口,它们功能一样,用于对RTL8019AS的热复位,使用其中一个即可,本课题选用0x18。3.1.3 RTL8019AS内部寄存器简介寄存器的设置和使是RTL8019AS应用的关键。RTL8019AS的寄存器大致可分为两组,一组称为NE2000寄存器组,另一组称为PnP组。因为本设计不涉及即插即用功能,故PnP寄存器不予详细叙述。 NE2000寄存器组分为4页,由寄存器CR中的PS0和PS1加以选择。其中0x000x1f是控制寄存器。0x100x17是远程DMA控制寄存器。0x180x1f是Reset寄存器,8个Reset口的作用是相同的。表3.1是RTL8019AS寄存器组及其地址分布表:表3.1 RTL8019AS的NE2000寄存器组 3.1.4与系统配置和运行有关的寄存器1. CR:命令寄存器(00H;类型:读写)该寄存器用于选择寄存器页,允许或禁止远程DMA以及发出各种命令。可能是编程中使用最频繁的寄存器。位符号简述7、6PS1、PS0表示寄存器页。02页:NE2000兼容;3页:RTL8019AS配置53RD20000非法;001远程读;010远程写;011发送包; 1远程DMA完成/退出。2TXP发送包时必须置位。发送完成或退出时内部复位。写零无效。1STA无控制作用,仅反映此位的写入值,上电时为00STP该位为停止命令。职位时既不发送也不接收。2. ISR:中断状态寄存器(O7H;类型:0页读写)该寄存器反映网络接口控制器(NIC)的状态,主控机通过读取其状态定中断源。位符号简述7RST当网络接口控制器(NIC)进入复位状态时置位,而向CR发出启动命令时清零。此外在接收缓存溢出时置位,而在一个和多个包被从缓存中读出时清零。6RDC远程DMA完成时置位5CNT在一个或多个网络故障计数器(tally counters)的最高位为1时置位4OVW接收缓存用尽时置位3TXE发送出错位,当一个包由于冲突过多而退出时置位2RXE当包接收出现CRC、帧对位或帧丢失等错误时置位1PTX表示包发送无误0PRX表示包接收无误3. IMR:中断屏蔽寄存器(0FH;类型:0页写,2页读)各位与ISR对应。上电时全0,某位置1开放对应的中断。4. DCR:数据配置寄存器(0EH;类型:0页写,2页读)5. TCR:发送配置寄存器(0DH;类型:0页写,2页读)位76543210符号111OFSTATDPB1PB0CRC其中:CRC禁止或允许发送时的CRC逻辑。6. TSR:发送状态寄存器(04H;类型:0页读)该寄存器表示包发送的状态。位76543210符号OWCCDH1CRSABTCOL1PTX其中:ABT一表示网络接口控制器由于过多冲突而退出发送;COL一表示发送与网络中其它站点发生碰撞;PTX一表示发送完成无误。7. RCR:接收配置寄存器(0CH;类型:0页写,2页读)位符号简述7总是16总是15MON置位时为监控模式,对接收包只检查不缓存:清零时则缓存。4PRO置位时所以具有物理地址的包均接受;清零时只接受与节点地址匹配的包3AM置位时接受具有多发目标地址的包,清零时拒绝接受多发目标地址址包2AB置位时接受具有广播目标地址的包,清零时拒绝接受广播目标地址包。1AR置位时接受长度少于64字节的包,清零时拒绝接受长度少于64字节的包。0SEP置位时接受有接收错误的包,清零时拒绝接受有接收错误的包。8. RSR:接收状态寄存器(0CH;类型:0页读)位符号简述7DFR延迟。检测到载波或碰撞时置位6DIS禁止接收。当NIC处于监控模式时置位且禁止接收。退出监控允许接收时清零。5PHY接收包为多发或广播目标地址时置位;为物理目标地址时清零。4MPA包丢失位。由于缓存不足或处于监控模式而不能接收输入包时置位。3总为12PAE帧对齐出错,表示输入包未在字节边界终止,CRC与边界字节不符1CRCCRC出错0PRX包接收无误3.1.5 与DMA有关的寄存器1. CLDA0,1:当前本地DMA寄存器(0lH与02H;类型:0页读)从这两个寄存器可读出当前本地DMA地址。2. PSTART:起始页寄存器(01H;类型:0页写,2页读)该寄存器设置接收环形缓存的起始页地址。3. PSTOP:终止页寄存器(02H;类型:0页写,2页读)该寄存器设置接收环形缓存的终止页地址。4. BNRY:边界寄存器(03H;类型:0页读写)该寄存器用于防止环形缓存的覆盖。一般用作一个指针来指示主机己出的最后一个环形缓存页。5. TPSR:发送起始页寄存器(04H;类型:0页写)该寄存器设置发送包的起始页地址。6. TBCR0,1:发送字节数寄存器(05H&06H;类型:0页写)这两个寄存器设置发送包的字节数。7. NCR:碰撞数寄存器(05H;类型:0页读)该寄存器记录节点在一次包发送中遭遇的碰撞次数。8. FIFO:先进先出寄存器(06H;类型:0页读)该寄存器允许主机在产生回环后审查FIFO的内容。9. CRDA0,l:当前远程DMA地址寄存器(08H和09H:类型:0页读)这两个寄存器包含远程DMA的当前地址。10. RSAR0,1:远程起始地址寄存器(08H&09H;类型:0页写)这两个寄存器设置远程DMA的起始地址。11. RBCR0,l:远程字节数寄存器(0AH&0BH;类型:0页写)这两个寄存器设置远程DMA的数据字节数。12. CNTR0:帧对齐错误计数器(0DH;类型:0页读)13. CNTR1:CRC错误计数器(0EH:类型:0页读)14. CNTR2:包丢失计数器(0FH;类型:0页读)15. PAR05:物理地址寄存器(01H06H;类型:1页读写)该寄存器保存本节点地址并用于与接收数据包的目标地址进行比较,而确定接受还是拒绝。16. CURR:当前页寄存器(07H;类型:1页读写)该寄存器指向拟接受包的第一个缓存页的页地址。17. MAR0-7:多发地址寄存器(08H0FH;类型:1页读写)这些寄存器提供由CRC逻辑哈希压缩的多发地址的过滤位。3.2硬件设计3.2.1硬件接口框图单片机嵌入TCP/IP的硬件部分涉及到单片机与网卡控制器的接口,他也属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 常州股权架构协议书
- ipo上市保密协议书
- 挖藕费用协议书
- 萨克斯皮克特协议书
- 2025年传媒行业直播电商合规能力考核试卷-直播产品虚假评论识别与打击专项
- 2025年新能源行业电动汽车充电设施数字孪生仿真技术资格考核试卷
- 2025年农业数字化资格考试·农业遥感·作物种植面积(玉米、大豆)遥感估算考核试卷
- 2025年基层医疗服务能力提升-中医药适宜技术(推拿)治疗儿童常见病考核试卷
- 2025年工业制造行业工业互联网与智能工厂研究报告及未来发展趋势预测
- 2025年疫苗接种规范操作考试:疫苗错误预防机制实施考核试卷
- 医院辐射防护和安全保卫制度
- 第五版-FMEA-新版FMEA【第五版】
- XXXX年中国星级饭店评定报告书
- 经典模板《湛蓝情深》
- 辽宁交通高等专科学校-单招《职测》考前特训复习题库(含答案)
- 战伤救护理论考核题库
- 中文工具书检索
- GB/T 24202-2021光缆增强用碳素钢丝
- 阻尼复合材料课件
- 微生物农药细菌
- 新版GMP验证总计划
评论
0/150
提交评论