基于51单片机嵌入式web服务器.doc_第1页
基于51单片机嵌入式web服务器.doc_第2页
基于51单片机嵌入式web服务器.doc_第3页
基于51单片机嵌入式web服务器.doc_第4页
基于51单片机嵌入式web服务器.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 绪 论嵌入式Internet是几年前发展起来的一项新兴概念和技术。在工业测控领域,1999年成立的“工业以太网协会(IEA)”正在积极致力于工业以太网现场总线的研究开发1。与其它现场总线相比,采用以太网接口芯片和TCPIP协议实现的嵌入式WEB服务器可以使各种家电设备、PDA、仪器仪表、工控设备和数据采集设备很容易地连接到Internet,这样就能够利用Internet实现对各种嵌入式设备的低成本远程访问和资源共享。嵌入式设备在价格、体积、实时性以及可靠性等方面都具有优势,但嵌入式系统的资源有限,在占用较小资源的情况下如何实现TCPIP协议簇中的相关协议已经成为嵌入式网络开发的一个重要问题。本文在精简的TCP协议上实现了HTTP协议,采用HTTP协议可以使不同的设备具有相同的访问接口。整个系统占用资源少,能够完成常用的相关网络通讯功能。11 嵌入式系统的发展及现状嵌入式系统泛指单片机和微处理器构成的电子设备。它出现至今己经有30多年的历史2。嵌入式技术在经历了以单芯片为核心的可编程控制器形式的系统,和以嵌入式微处理器为基础、以简单操作系统为核心的嵌入式系统以及以嵌入式操作系统为标志的嵌入式系统这三个阶段后。而今正在进入以Internet为标志的嵌入式系统.这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与工Internet的结合将代表嵌入式系统的未来。其主要应用领域可以包括:工业自动化:工业现场应用了大量的8, 16, 32位嵌入式微控制器,其网络化是提高生产效率和产品质量、减少人力资源的主要途径,在工业过程控制、电力系统、电网安全、电网设备监测、石油化工等系统中具有广阔的应用前景;智能大厦:随着计算机的普及应用以及网络和自动化技术的发展,大厦内所有的公共设备都将采用嵌入式智能系统来提高大厦的服务能力,嵌入式系统的应用可实现大厦内各种操作和信息的共享,实现按需控制;智能仪器:参考PC机主板设计方法设计的嵌入式计算机智能仪器应用系统通用性强,并可根据不同要求,选择其中的全部或部分电路,只需对软件做部分修改或删除,简化系统,大大提高了开发效率,降低了开发成本,具有广阔的应用空间;信息家电:21世纪是数字化网络的时代,计算机、通信、控制“3C技术相互融合,各类消费类电子产品随着数字化技术与联网的普及而走向数字化、网络化。嵌入式计算机是实现电子产品数字化、网络化的技术基础。随着数字化进程的日益加深,人们的家居生活越来越明显地印上了“网络的烙印”,最突出的表现就是数字家电开始走向数字化、网络化。本文将研究的单片机+TCP/IP软件的方法就可以使嵌入式系统上Internet,使嵌入式设备之间可以相互通信。这种技术现今已用于工业自动化,POS(电子收款机系统)网络及电子商务,智能公路等方面。12 嵌入式系统的特点及应用嵌入式系统以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统通常具有如下特性3:完成单一或一组紧密相关的特定功能;具有高性能和实时的要求;系统作为设备的一部分,其运行一般不需要人工干预;系统的电源要求具有较高的可靠性和安全性;处理器的选择是嵌入式系统设计的关键一步。嵌入式计算机在应用数量上远远超过了各种通用计算机。在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。随着“后PC”时代的来临,嵌入式系统技术已经成为无所不在的推动力量,为人们的生活、工作带来一个又一个的变革。嵌入式产品成为信息产业的主流.1.3 嵌入式Web Server的系统设计131 单片机系统接入Internet方案目前,国内外嵌入式仪器接入Internet主要有以下三种方案4:一是使用嵌入式操作系统,即由TCP/IP协议栈十嵌入式操作系统十高速32位处理器做成的嵌入式仪器。因为32位处理器有足够的资源可以扩充利用,RAM和ROM可以做得足够大,整个TCP/IP协议族可以做到系统里面去,甚至可以嵌入一个带TCP/IP协议族的操作系统。所以32位微处理器除了可以实现复杂功能外,还能较容易的进行网络通信的TCP/IP协议处理,因而可以成为直接接入Internet的网络仪器。但其缺点也是明显的,32位微处理器开发难度大,开发工具昂贵,并且大多用在高端产品里,在成本较低的嵌入式系统里现在用的还比较少。二是代理服务器方案。它由低档8位机组成嵌入式仪器,采用专用网络(RS-232,RS-485, CAN BUS等)把若干嵌入式仪器连在一起,该网络再与PC相连,由此组成PC网关专用网。此时把PC作为网关,并由PC把该网络上的信息转换为TCP/IP协议数据包,发送到Internet上实现信息共享。这样虽然可以使嵌入式仪器连到Internet,但必须用一台PC机或类似PC机的设备作为网关来实现协议转换,即把其它协议的信息转换成适合在Internet上传输的数据包。这样虽然也能实现信息共享,但其成本较高。三是直接实现方案,即在8位单片机中直接实现TCP/IP协议来实现Internet的接入功能。利用这种方案的好处是省去操作系统和网关的费用,大大节约系统资源。缺点是增加了开发难度,技术实现上有一定困难。132 嵌入式Internet的研究意义及目的目前国内单片机的应用非常广泛,大多数系统是以51单片机为核心,与检测、伺服、显示设备配合起来实现监控功能。数据的传输大多采用RS-232, RS-485以及各种现场总线,这些方式有些通信速度不够快,有些距离不够远,且各种总线之间难于实现互连和互操作。以太网作为目前应用最为广泛的局域网,在工业自动化和过程控制领域得到了越来越多的应用。同时,随着Internet的普及,现代通信技术的进步,基于TCP/IP和Client/ Server架构的分布式监控技术也日趋成熟。借助以太网和Internet技术,把嵌入式系统连接到Internet上,就可以方便、低廉地把信息传送到世界的任何一个地方。因此,对于以单片机为中心的嵌入式设备,如何充分利用现有的Internet网络实现远程监控,已成为当今电子世界中的热门话题。随着电子设备智能化要求的提高和各种功能强大的微处理器的推出,嵌入式系统逐渐成为许多电子设备不可缺少的一部分,并处在前所未有的发展期,而互联网概念跳深入人心更为嵌入式系统与互联网的结合提出了要求。嵌入式系统接入Internet以后,不仅可以实现设备的远程控制、维护和升级,而且从另外一层意义上讲,接入Internet的设备己经成为网络共享资源的一部分. 2 硬件设计及分析2.1 硬件的总体设计图2-1-1是整体的系统结构框图,涉及到本次设计中用,以及各个芯片间的连接关系,下文将介绍硬件怎样实现其功效:FLASHC8051F020RTL8019ASPM34_1006MRJ45接口JTAGMAX232RS232接口SRAM图2-1-1 系统结构框图接口电路主要由MCU、网络控制器、RJ45、RS232等构成。原理图如图2-1-2所示:RJ45 P7 P4.6P4.7 P0.3 P0.2 P0.1 P0.0TPOUTSD0SD7 TPINSA0SA7IORBIOWBRSTDRVINT0 AEN IOCS16B RXDTXD RS232 C8051F020 RTL8019AS图2-1-2 原理图MCU与计算机之间通过RS232标准总线进行数据通讯,本设计采用电平转换芯片MAX232实现他们之间的电平兼容,而MUC与局域网之间是通过采用无屏蔽双绞线的RJ45接口,RTL8019已内置了10BASET的收发器,故接口部分电路比较简单,只需要外接1个隔离滤波器PPT TPN+、TPN-为接收线,TPOUT+、TPOUT为发送线,经隔离后的4根线与RJ45接口相连。单片机实现TCP/IP涉及的元件主要是接口层单片机和网卡芯片。单片机的选择主要考虑内存大小,是为了让单片机有足够大的RAM空间来处理至少一个以太网帧,通过比较,选择Cygnal C8051F020;Ethernet接口电路采用以太网控制芯片RTL8019AS实现。RTL8019AS本身包含了Ethernet网络模型中最低两层。2.2 C8051F020单片机1. C8051F020单片机简介 C8051F020单片机内集成了两个多通道ADC子系统(每个子系统包括一个可编程增益放大器和一个模拟多路选择器)、两个电压输出DAC、两个电压比较器、电压基准、SMBus/I2C总线接口、UART、SPI总线接口、5个通用的16位定时器、一个具有5个捕捉/比较模块的可编程计数器/定时器阵列(PCA)、内部振荡器、8个8位通用数字I/O端口、64KB Flash程序存储器和4352B数据RAM,同时还具有片内电源监测、片内看门狗定时器时钟源,因而是一种功能比较齐全的高速、高性能单片机5。 C8051F020单片机具有100个引脚,其主要特点如下:带有与8051全兼容的高速(峰值达25MIPS)微控制器内核;大容量的Flash程序存储(64KB和内部数据存储器RAM(4352B);具有较高精度和速度的两个多通道ADC(最大速度可达100kbps)和2路12位DAC;工作温度范围较大,为-4585;功耗低,供电电压为2.7-3.3V,典型工作电流为12mA,并具有多种节电休眠和停机模式,全部I/O、RST、JTAG引脚均允许5V电压输入;片内JTAG仿真电路可提供全速、非插入式的电路内仿真。2. C8051F020的功能及原理.CPUC8051F020单片机采用Cygnal公司的专利CIP51微处理器内核。CIP51在提升8051速度上采取了新的途径,即设法在保持CISC结构及指令系统不变的情况下,对指令运行实行流水作业。在这种模式中,废除了机器周期的概念,指令以时钟周期为运行单位。平均每个时钟可以执行完1条单周期指令,从而大大提高了指令运行速度。即与8051相比,在相同时钟下单周期指令运行速度为原来的12倍;整个指令集平均运行速度为原来8051的9.5倍,使8051兼容机系列进入了8位高速单片机行列。同时,C8051F020单片机扩展了中断处理,增加了中断源,可提供22个中断源,这对实时多任务系统的实现是很重要的;另外C8051F020单片机还具有内部时钟,但若需要也可接外部时钟。该芯片在程序运行时可实现内、外部时钟的切换,这在低功耗应用系统中非常实用;同时C8051F020还在内部增加了复位源,从而大大提高了系统的可靠性。.ADC和DACC8051F020单片机内部有两个多通道的ADC子系统(12位的ADC0和8位的ADC1),两个子系统由逐次逼近型ADC、多通道模拟输入输出选择器和可增益放大器组成。其ADC0的最大采样速率可达100kbps,可提供12位精度。ADC1的最大采样速率达500kbps,可提供8位精度,该ADC均由CIP51通过特殊功能寄存器控制。在低功耗应用当中,当转换结束时,系统控制器还可以关断ADC以节省功耗。该芯片内部的可增益放大器的增益可以用软件设置,当不ADC输入电压信号范围差距较大或需要放大一个具有较大直流偏移信号时,该可编程增益放大器是非常有用的。 C8051F020单片机内部具有2通道12位DAC和2个比较器,CPU一般通过特殊功能寄存器来控制数模转换器和比较器,CPU可以将任何一个DAC置于低功耗关断方式。C8051F020中的DAC为电压输出模式,它可与ADC共用参考电平,并允许软件命令、定时器2、定时器3及定时器4的溢出信号更新DAC出口。.I/O口C8051F020单片机除具有标准8051的P0、P1、P2和P3四个8位I/O口外,还有更多的扩展8位I/O口,每个端口I/O引脚都可以设置为推挽或漏极开路输出,同时具有低功耗模式。数字交叉开关设计可将内部数字系统资源定向到P0、P1和P2端口,并可将定时器、串行总线、外部中断源、A/D转换输入以及比较器输出通过数字交叉开关控制寄存器定向到P0、P1、P2中的I/O口,以允许用户根据自己的特定应用选择通用I/O端口和所需数字资源的组合。.存储器C8051F020中包含有数据存储器和程序存储器。C8051F020单片机的CIP51具有标准8051的程序数据地址结构,它包含有4352B的RAM以及64K字节的扩展数据RAM。 C8051F020单片机内部带有64k字节Flash存储器,该存储器可按128字节为一个扇区来编程,同时也可以在线编程而不需要程序代码的未用扇区可作为非易失性数据存储器使用。.串行总线及JTAG编程调试C8051F020单片机除设计有标准的全双UART之外,还设有I2C/SMBus、SPI串行总线等多类型串行总线端口,且通讯功能更加强大。另外,C8051F020单片机设计有JTAG口与片内调试电路,因此可以实现非插入式在片仿真调试,与使用传统的仿真相比更优越,更能真实地在片放映仿真实时信息。42.3 RTL8019AS网卡芯片1.内部结构RTL8019AS内部可分为远程DMA接口,本地DMA接口,MAC(介质访问控制)逻辑,数据编码解码逻辑和其它端口6。内部结构如图2-3-1:远程DMA接口是指单片机对RTL8019AS内部RAM进行读写的总线,即ISA总线的接口部分。单片机收发数据只需要对远程DMA操作。本地DMA接口是把RTL8019AS与网线的连接通道,完成控制器与网线的数据交换。ISA总线接口即插即用(pnp)Boot ROM端口EEPROM端口ENA(编码译码)逻辑AUI接口双绞线接口8K*16SRAMMAC逻辑图2-3-1 RTL8019AS内部结构MAC(介质访问控制)逻辑完成一下功能:当单片机向网上发送数据时,先一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令;当RTL8019AS完成了上帧的发送后,再开始此帧的发送。RTL8019AS接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区,收满一帧后,以中断或寄存器标志的方式通知主处理器。FIFO逻辑对收发数据作16字节的缓冲,以减少对本地DMA请求的频率。RTL8019AS支持三种工作方式:即插即用方式,I/O地址和中断都由操作系统管理,用户不必过多干预,但是较耗费系统资源;跳线方式,网卡的I/O地址和中断都由跳线决定;非跳线方式,网卡的I/O地址和中断都由外接的93C46里的内容决定网卡使用何种方式由RTL8019AS的输入引脚的第65脚JP决定。当该引脚为低电平时,由93C46里的设置内容决定RTL8019AS是工作在第2种还是第3种方式。RTL8019AS网卡的第65脚一般为悬空,此时引脚的输入伏态为低电平(悬空输入脚的电平为低电平,因片内接有一个100 k的下拉电阻)。如果第65脚接高电平(VCC),即使用跳线方式,那么网卡的I/O地址和中断就不是由93C46的内容来决定。RTL8019AS的local DMA操作是由控制器本身完成的,而其remote DMA并不是在无处理器的参与下,数据能自动移到主处理器的内存中,它的操作机制是这样的:主处理器先赋值与remote DMA的起始地址寄存器RSAR0、RSAR1和字节计数器RR0、RBCR1,然后在RTL8019AS的DMA I/O地址上读写指定地址上的数据。2.内部RAM地址空间分配RTL8019AS内部有两块RAM区。一块16K字节,地址为0X40000X7FFF;一块32字节,地址为0X00000X001F。RAM按页存储,采用分页的方式管理,每256字节为一页。一般将RAM的前12页(即0X40000X4BFF)存储区作为发送缓冲区;后52页(即0X4C000X7FFF)存储区作为接收缓冲区。第0页叫Prom页,只有32字节,地址为0X00000X001F,用于存储以太网物理地址。要接收或发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM。它实际是个双端口的RAM,是指有两套总线连接到RAM,一套总线RTL8019AS读或写该RAM,即本地DMA。另一套总线是单片机读或写该RAM,即远程DMA。RTL8019AS有20根地址线,但是真正能够寻址的范围只有:0X003000X0031F这32个地址。其中0X003000X0030F分配给了寄存器组,0X003100X00317分配给了远程DMA端口,剩下的地址空间分配给了复位端口。3.I/O地址分配RTL8019AS具有32位输入输出地址,地址偏移量为00H1FH。(其中00H0FH共16个地址,为寄存器地址)RTL8019AS寄存器组共77个寄存器,分配给寄存器的地址只有16个,因此RTL8019AS采用分页面管理的方式,将这些寄存器分为4个页面:PAGE0、PAGE1、PAGE2、PAGE3,每页的大小为16个字节,刚好对应分配给寄存器的16个地址。其中PAGE0页的寄存器在读和写的情况下,意义是不同的。在PAGE0PAGE2共有58个寄存器。这些是和NE2000兼容的寄存器件,和RTL8019AS本身设置相关的寄存器放在PAGE3里,PAGE3是RTL8019AS自己定义的,对于其它兼容NE2000的芯片如DM9008无效。所有这些页都包含了叫做CR(Command Register命令寄存器)的寄存器,本系统中其对应的地址是0X00300。通过设置CR寄存器中最高两位来决定要访问的页。其中芯片的I/0地址由引脚85、84、82和81来决定。C8051虽然可以直接读写寄存器组,但是却不能直接读写双口RAM,需要通过远程DMA端口间接访问双口RAM,(远程DMA地址包括10H17H),C8051先在寄存器组中设置缓冲区地址和字节计数器,然后通过循环读写远程DMA端口,把数据传送到双口RAM的缓冲区,或从其中读取出来。实际上C8051在读写RTL8019AS时只需要5根地址线与RTL8019AS最低5位地址线相连就可以了。RTL8019AS上的其它15根地址线按照I/O基地址的设置(0B000000000011000XXXXX)分别接地或者高电平。复位端口包括18H1FH,共8个地址,功能一样,用于RTL8019AS复位。在上文中已经谈到硬件设计中的几个注意问题,这里就不累叙,下面就简单给出RTL8019AS引脚的两个连接表,以及几个需要强调的引脚。RTL8019AS有20根地址线,但是真正能够寻址的范围只有:0X003000X0031F这32个地址。RTL8019AS的20根地址线SA0SA19,如下表2-3-1连接:表2-3-1 RTL8019AS地址线的连接表SA19SA10接地SA9SA8接单片机c8051f020的P6.7SA7SA0接单片机c8051f020的P7口4 RTL8019AS与F020的连接RTL8019AS网卡是8/16位ISA总线的网卡。按功能可将其划分为:接收模块、CRC产生模块、发送功能模块、地址识别模块、FIFO控制模块、协议逻辑阵列模块及DMA和缓冲控制模块。对网卡进行编程可以实现局域网内任意站点之间的通信。熟悉网卡接口电路是对网卡编程的首要条件。网卡接口电路可分为两部分:一是与计算机ISA总线相连,包括数据总线读写、地址总线驱动、中断信号的产生、存储器读写信号以及FO端口读写信号的引入等;二是对网卡内部的操作,包括对缓冲RAM的读写、对RTL8019AS的控制。ISA总线共有98根信号线,通过对网卡工作原理的分析,可将接口信号线减至最少。表2-3-2列出了驱动RTLSO19AS网卡所需的信号线。表2-3-2 RTL8019AS的ISA总线接口引脚与单片机的连接表Pin29IORB读信号,接到单片机的WR引脚(P3.6)。Pin30IOWB写信号,接到单片机的RD引脚(P3.7)。Pin33RSTDRVRESET信号,接单片机的T0(P3.4)。Pin34AEN地址有效信号,接地。Pin96IOCS16采用电阻下拉该引脚,复位时刻脚为低电平,选择8位模式。Pin36Pin43SD0SD78位数据总线,接单片机的P0口。(只用到8位数据总线,SD8SD15不接。)表2-3-2为读写操作、复位操作对应的连接采用10BASET布线标准通过双绞线进行以太网通信,而RTL8019AS内置了10BASE-T收发器,所以网络接口的电路比较简单。外接一个隔离LPF滤波器0132,TPIN+/-为接收线,TPOUT/-为发送线,经隔离后分别与RJ-45接口的RX+/-, TX/- 端相连。时钟电路通过T1、T2接口一个20MHz晶振以及2个电容,实现全双工方式。LED0、LED1各接一发光二极管以反映通讯状态:LED0表示LED_COL,即通讯有冲突;LED1表示LED_RX,即接收到网上的信息包。2.4 双通道RS232线性驱动/接收器1.芯片简介Max232是一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平7。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。2.芯片特性满足或超过TIA/EIA-232-F 规范要求,符合ITU v.28标准单5-V电源供电和4个1.0uF充电泵电容包含2个驱动器和2个接收器低工作电流典型值为8mA2000-V ESD保护3 RS232串行通信接口电路PC机与单片机通信的RS232通信接口电路原理图2-4-1所示:C8051F020的TX0与RX0脚连接在RS232接口芯片上MAX232E上。而D89插座的2脚可与PC机端的串口RX0脚相连,D89插座的3脚可与PC机端的串口TX0脚相连,5脚接地,4脚可以输出PC机端发出的复位信号。图2-4-1 RS232串行通信接口电路2.5 .外部数据存储器62256和锁存器74HC373使用外部RAM 62256的目的是提高单片机的数据传输速度和进行复杂的TCP/IP处理。由于以太网的包最大可以有1500多字节,C8051F020单片机无法存储这么大的包,只有放到外部RAM里。同时外部RAM也用作串行口的输入输出缓冲,以使单片机可以较快地吞吐数据(用网卡上的RAM来代替62256会影响速度)。D0D7接单片机的P7口,/OE接单片机的瓜D,/WE接单片机的/WR,/CE接单片机的P2.7,A8一A14接单片机的P6.0一P6.6。SD锁存器74HC373的DATAO一DATA7接单片机的P7口,/OE接地,LE接单片机的ALE。因此外部存储器62256占用单片机的外部数据地址空间000OH一7FFFH,共32k字节。图2-5-1是外部存储器62256(32K字节的RAM)的DATA0-DATA7接单片机的P0口。图2-5-1 外部存储器接单片机2.6 FLASH芯片FLASH又名闪存,属于EEPROM,即电可擦除可编程的存储器。由于具有电可擦除的特性,并且其数据可保留上百年,所以它的应用范围非常广泛,非常适用于作为MicroChip以及DSP的外部程序存储器,或者作为需要存储大量数据的外部EEPROM。W29C040为32脚DIP封装芯片,工作电压为5V,内部 512K * 8位的快速闪存,它的结构为256字节为一页,每页的擦写时间为5mS,整片擦除时间为50mS8。W29C040管脚图如图2-6-1所示,管脚表如表2-6-1所示图2-6-1 W29C040管脚图表2-6-1 W29C040 FLASH ROM管脚名称功能描述A0-A18地址的输入口DQ0-DQ7数据的输入/输出口#CE片选脚#OE读脚#WE写脚Vdd5V脚Vss地 3 软件的设计和实现3.1 工作流程和软件设计RJ 45为系统与局域网的接口。由于大部分局域网都采用以太网,这里的RTL8019AS就是用于处理以太网协议(IEEE 802.3)的。数据的流向为:请求信息从局域网中来,通过RJ 45送到RTL80l9AS,处理后的数据包送入单片机系统的协议栈,由协议栈对数据包进行解析,得到原始请求信息。请求信息再经过单片机系统的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。整个系统的软件流程如图2-1-1所示。接收IP包接IP包,送TCP层接TCP包,送应用层WEB SERVER处理请求信息传送数据到RTL8019AS发送缓冲区0?TCP 打 包IP 打 包开 始初 始 化接收缓冲区0? 是 否 是否图3-1-1 单片机处理流程图 在建立起相应的硬件连接后,就可以根据不同的硬件特点,选用不同的开发工具和开发语言进行Web server的软件设计工作。所谓的TCP/IP协议是一个四层协议系统,包括数据链路层、网络层(含lP协议)、传输层(含TCP协议)和应用层,每一层负责不同的功能。基于TCP/IP协议可以实现多种功能应用,如:HTTP(超文本传输控制协议)、TELNET(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传送协议)、SNMP(简单网络管理协议)等。本文主要讨论实现Web/Server所需的协议。当然,还可以根据需要附加其它的协议功能。IP包含编址方案,并提供寻址功能:TCP则是在不同主机的对等进程之间提供可靠的进程间通信。与TCP两端口所连接的实体中,一端为应用程序进程或用户,另一端则为底层协议,如IP协议。TCP在建立连接过程中采用三向握手机制,以保证数据的可靠性,用户可以根据自己的需要在此程序框架上添加构成Web Server的所有其它动态或静态元素。嵌入式Web服务器的软件主要由芯片初始化设置、TCP/IP协议栈的实现、数据采集及处理等模块组成。在程序中加入基于TCP/IP协议的用户自定义数据通信协议。这样使客户局域网中的PC机能够与嵌入式Web服务器进行自定义的通信,如:发送数据采集命令、采集参数初始化命令等。3.2软件的实现:通过MCU编程,来实现RTL8019AS初始化,发送数据、接收数据等功能,在处理数据步骤之前,还需要对网络控制器进行必要的检测、复位和初始化。网络接口通过两个DMA操作来完成数据的接收和发送,本地DMA完成RTL8019与其内部FIFO队列之间的数据传送,远程DMA完成RTL8019与CPU之间的数据传送。RTL8019AS驱动程序的设计所谓驱动程序实际上就是对RTL8019AS的寄存器组以及远程DMA端口进行读写。软件的编写采用KEIL公司的C51 uVision2 for Windows软件。因为采用C语言编程,所以代码便于阅读和移植。 RTL8019AS有四页寄存器组,每页寄存器组有16个寄存器。对网卡的初始化就是对相关寄存器进行初始化。这些寄存器包括CR、DCR、RBCI、PSTART、PSTOP、ISR、IMR、PARO、 PARS、MARO、 MARS、CURR、TCR和RCR等9。初始化过程如下:(l)CR=0X21,选择页0的寄存器;(2)TPSR=0X45,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0X40;(3)PSTART=0X4C,PSTOP=0X80,构造缓冲环:0X4c0X80;(4)BNRY=0X4C,设置指针;(5) RCR=OXCC,设置接收配置寄存器,使用接收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃,校验错的数据包不接收;(6) TCR=0XE0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;(7)DCR=0XC8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;(8)IMR=0X00,设置中断屏蔽寄存器,屏蔽所有中断;(9)CR=0X61,选择页l的寄存器;(10)CURR=0X4D,CURR是RTL8019AS写内存的指针,指向与正在写的当前页的下一页,初始化时指向0X4C+l=0X4D;(11)设置多址寄存器MAR0MAR5,均设置为0X00;(12)设置网卡地址寄存器PAR0PAR5;(13) CR=0X22,选择页1的寄存器,进入正常工作状态;(14) TCR=0XEO,发送器正常工作状态。4 TCP/IP协议的栈的设计及实现4.1 TCP/IP协议概述TCP/IP协议(传输控制协议/网间协议)是由美国政府资助的高级研究计划署(ARPA)在二十世纪七十年代的一个研究成果,用来使全球的研究网络联在一起形成一个虚拟网络,也就是国际互联网10。原始的Internet通过将已有的网络如ARPRnet转换到TCP/IP上来而形成,而这个Internet最终成为如今的国际互联网的骨干网。在网络术语中,协议是为了在两台计算机之间交换数据而预先规定的标准。TCP/IP并不是一个协议而是由许多协议组成,而TCP和IP只是其中两个基本协议而己。TCP/IP规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在Internet中几乎可以无差错地传送数据。4.2 TCP/IP协议栈的实现对于一个功能齐全以太网WEB服务器,需要一下几个协议:地址解析协议(ARP),网际协议(IP),网际控制消息协议(ICMP),传输控制协议(TCP),超文本传输协议(HTTP)。 TCP/IP协议最先是在UNIX系统里实现的,后来的LINUX、DOS、Windows也实现了TCP/IP,随后TCP/IP协议也被移植到其它嵌入式的处理器上。由于指令的原因,以及资源上的原因,在UNIX上实现的TCP/IP协议的源代码并不能直接移植到8位的单片机上。并且单片机根本没有足够的代码空间实现全部协议。一般在单片机里只实现与需要有关的部分,不使用的协议一概不支持。基于这一思想,我们在设计嵌入式Internet时就可以在TCP/IP协议的子集中实现,从而降低设计的难度。下面就嵌入式Internet如何实现TCP/IP协议的要点问题加以详细讨论。本文仅介绍与嵌入式WEB SERVER编程密切相关的部分:TCP/IP协议的分层结构及其报文格式。TCP/IP协议采用分层结构,它是一个四层协议系统,每一层负责不同的功能。嵌入式TCP/IP协议栈通常包括ARP/RARP、IP、ICMP、UDP、HTTP、SMTP及FTP等协议。协议实现前应该首先明白各个协议的关系。下面就给出基本的协议流程图,如图4-2-1所示:应用程序应用程序接口TCP协议模块UDP协议模块IP协议模块ICMP协议模块网络接口层ARP协议模块网络接口控制芯片以太网图4-2-1 基本协议流程图嵌入式系统通过网络接口控制芯片连入网络,这部分内容本文在之前做过讲析。链路层的主要作用是为上层协议发送和接受数据包。根据物理层的不同,链路层有很多协议选择。为便于理解,同时考虑适用的广泛性,这里只讨论以太网协议。嵌入式Internet要通过以太网接入Internet就必须实现该协议要求,并且实现该协议可以采用通用的网络接口控制芯片。TCP/IP协议是一套把因特网上的各种系统互联起来的协议组,保证因特网上数据的准确快速传输。参考开放系统互联(OSI)模型,TCP/IP通常采用一种简化的四层模型,分别为:应用层,传输层,网络层,链路层。4.3 TCP/IP协议的分层结构TCP/IP协议采用分层结构,它是一个四层协议系统,每一层负责不同的功能11。其分层模型及协议如表4-3-1.表4-3-1 分层模型应用层(Application)HTTP、Telnet、FTP 、SMTP、SNMP传输层(Transport)TCP、UDP网络层(Internet)IP(ARP、RARP、ICMP、IGMP)网络接口层(Network)Ethernet、X.25、SLIP、PPP(1)网络接口层网络接口层经常称作数据链路层或链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。链路层(Link Layer):又称数据链路层或网络接口层,这是TCP / IP协议族的最底层,它负责接收IP数据包和把数据包通过选定的网络发送出去,或者从网络上接收物理帧,抽取出IP数据包,交给IP层。链路层通常包括计算机中对应的网络接口卡及其设备驱动程序,它们一起处理与电缆(或其它任何传输媒介)的物理接口细节,完成网络上物理帧的传输。除网络控制器驱动外,链路层典型的协议就是ARP (Address Resolution Protocol)地址解析协议。以太网的网络接口层支持的是48位以太网地址,而网络层支持的是32位的IP地址。ARP协议的功能是为32位IP地址到对应的48位以太网物理地址之间提供动态映射,将上层的IP地址与底层的物理地址进行绑定,它形成了只能使用IP地址的上层协议软件与只能使用物理地址的下层设备驱动程序软件之间的分界线。当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在A即高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应以太网地址的映射。如果查到匹配结点,则相应的以太网地址被写入以太网帧首部,数据包被加入输出队列等候发送。如果查询失败,ARP会先广播一个询问目的主机硬件地址的ARP报文,等到收到回答后再将数据包发送出去。 (2)网络层网络层有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。(3)传输层传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。(4)应用层应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:HTTP超文本链接协议、Telnet远程登录、FTP文件传输协议、SMTP简单邮件传送协议、SNMP简单网络管理协议和Web系统等。4.4网络接口层在TCP/IP协议族中,网络接口层主要有三个目的: (1)为IP模块发送和接收IP数据包; (2)为ARP模块发送ARP请求和接收ARP应答; (3)为RARP发送RARP请求和接收RARP应答。TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。在链路层协议中,最具代表性、使用最普遍的是Ethernet。与其他的数据层协议相比,Ethernet具有控制方法简单,具有NIC和设备驱动程序易编写的特征。4.4.1 ARP协议的实现ARP地址解析协议的本质是完成网络地址到物理地址的映射。从概念上讲就是找到一个映射方法f,使得“物理地址=f(网络地址)”。物理地址有两种基本类型:以太网类型和令牌环网类型,网络地址特指IP地址,对映射方法的要求就是高效。具体到以太网,使用的是动态绑定转换的方法,这是因为TCP/IP网络是为将不同种类计算机互联而发明的,它的体系结构是分层的,层和层之间相互独立,改变物理层的实现不会影响到网络层12。32位IP地址到以太网48位物理地址的映射,采用动态绑定转换的方法会遇到许多细节问题,例如减少广播,ARP包丢失,物理地址变更(更换网卡)、移动(移动设备到另一子网)、消失(关机)等。一般是设置ARP高速缓存,通过学习、老化、更新、溢出算法处理ARP映射表来解决这些问题。其中学习是指ARP收到任何指向本节点IP地址的ARPIP包,从中提取出地址对,当ARP缓存中无对应项时,由ARP接收部分添加;老化是指为每项设置寿命域,以便代谢掉陈旧的地址映射项;更新是指ARP提取到新的地址对时,用其更新缓存里已有的对应项;溢出算法是指当缓存满时,采取何种方法替换旧的地址。ARP的本质是地址转换,抓住这个关键,设计的大方向就把握住了。具体实现过程各具特色,因人而异,没有统一要求,有些功能可以不实现,有些优点不能兼得,不同的人有不同的设计方法。 整个ARP处理过程,主要主要用下面几个函数实现。(1)void init_arp(void)初始化ARP;(2)void arp_send(UCHAR * hwaddr, ULONG ipaddr, UCHAR msg_type) ARP请求;(3)void arp_rcve(UCHAR xdata *) ARP应答;(4)UCHAR xdata * arp_resolve(ULONG) ARP回应处理;(5)void age_arp_cache(void) Aged out a cache entry;(6)void arp_retransmit(void) ARP重新发送4.5 网络层IP是TCP/IP协议族中最为核心的协议,它将来自传输层的数据封装为IP数据包,送往作为目的地的接收端。所有的TCP, UDP, ICMP及IGMP数据都以IP数据包格式传输。4.5.1 IP数据包的构成IP中数据的基本单位,我们称之为数据包。IP数据包由报头部分和数据部分构成,报头部分记载了目的IP地址信息,主机及路由参考目的IP地址的字段,对数据包进行传输处理13。IP数据包的格式如图4-5-1所示:0 3 4 7 8 15 16 314位版本4位首部长度8位服务类型(TOS)16位总长度(字节)16位标识3位标志13位片偏移8位生存时间(TTL)8位协议16位首部检验和32位源IP地址32位目的IP地址32位选项(若有)数据图4-5-1 IP数据报首部图4-5-1 中的IP数据包的各部分说明如下:版本 :IP的版本现在使用的是版本4.报头长:表示报头长度以32位为一个单位,取值范围为515.服务类型:优先级和可靠性等服务品质要求的数值。数据包长:IP数据包的全部长度以8位(字节)为一个单位表示。标识:识别IP数据包的编号。上层协议调用时的标识号。标志:表示有无碎片。0位固定为(0),1位为0表示有碎片,2位为0表示是最后的碎片、为1则表示接收中。片偏移量:产生碎片时应该比到达的数据包早到的字节数。生存时间:存放控制IP数据包寿命长短的数值。协议:表示上层协议。报头检验和:存放检查报头错误用的校验码。源IP地址:存放IP数据包发送设备的IP地址。目的IP地址:存放接收端的IP地址。选项和填充码:把报头进行32位整数化后余下的位补O.4.5.2 IP协议的实现网际协议IP是TCP/IP协议族中最为核心的协议,它的主要功能是负责把数据交付给主机,当目标主机与原主机处于不同的物理网络中时,IP负责把数据包路由到相应的目标网络上。Internet所有的数据都以IP数据包格式传输。 IP协议最大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论