您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 嵌入式系统TCPIP网络解决方案
嵌入式系统TCP/IP网络解决方案嵌入式系统TCP/IP网络解决方案梁志明(微02)孔凡志(微02)甘珏瑜摘要:以单片机为核心的嵌入式系统在TCP/IP网络中的数据传送技术,远程监控、数据传送方面的应用,提供一种具体的实现方法。关键字:嵌入式系统单片机TCP/IP一、综述随着互联网应用的日益普及,以单片机应用系统为中心的小型嵌入式设备正成为当今电子界的热门话题。本课题研究主要研究嵌入TCP/IP协议的单片机在网络通信中的数据传输技术。包括实现TCP/IP链路层中的直接链路数据传输,网络层中的IP协议、ARP地址解析协议,传输层的TCP传输控制协议、UDP用户数据报协议,以及应用层的HTTP、TELNET等网络协议。这种嵌入了TCP/IP协议的单片机系统,为现有的互联网提供了一种价格低廉、硬件简单、相对完善的网络接入方案,在实际应用中更会体现传输速度快、使用方便等优点,并且有着广泛的应用前景,特别是数据采集、数据传输领域。二、硬件设计硬件设计上采用8位的单片机系统配以太网接口芯片来完成以太网的网络通讯。考虑到8位单片机的处理能力有限,以太网接口芯片也亦采用10M的接口芯片。设计中采用了Topstar公司的ISA口的10M网卡TE-2500B,芯片采用Realtek公司的RTL8019AS芯片。该芯片可以工作在8位总线模式下。单片机采用了Winbond公司的W78E58B,该芯片支持32K的程序代码,具有3个计数器和256字节的内部RAM。单片机使用串行口与上位机通讯,上位机通过终端向单片机发送命令或者接受单片机处理后的数据。上位机与单片机间使用MAX232转换电平。因为单片机需要处理大量的以太网数据报,所以大容量的RAM必不可少,设计中使用了HM62256作为单片机的扩展RAM,其大小为32K。总线连接上也留出地址线A15作为网卡地址选择。完成的设计原理图见附录,现在对部分电路作详细介绍。1.单片机部分电路为扩展的数据存储器模式,单片机的工作频率为22.1184MHz,P0和P2端口用作数据及地址总线,P3.0(RXD)和P3.1(TXD)用作串行通讯,P3.2(/INT0)用作网卡的中断IRQ,P3.4用作网卡的冷复位RESET,P3.3和P3.5用作I2C总线的SDA和SCL,扩展的32K外部RAM(62256)使用地址(0x0000-0x7FFF)。设计中留有了I2C总线,以便于扩充各种的串行器件,以适合不同的应用场合,目前的串行器件层出不穷,比如:E2PROM,串行DAC/ADC,串行时钟芯片等等。未使用的P1端口保留给用户应用程序,在后面的WEB控制的Demo中,演示了如何利用WEB实现控制LED,该LED被连接到P1.7上。图1单片机部分电路2.串行口部分上位机使用是RS-232-C接口,接口电气特性(RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”,-5~-15V;逻辑“0”+5~+15V。噪声容限为2V。)都与单片机的串行口电气特性不同,需要转换电路,该电路较简单,仅使用一片MAX232和4个电容。图2串口电平转换电路3.网卡部分图3ISA网卡接口部分ISA接口分为两个部分A,B和C,D部分。C,D部分为扩展部分,设计中只用到3个引脚,嵌入式系统TCP/IP网络解决方案VDD、GND、/IOCS16。/IOCS16为16位IO选择引脚,在网卡复位时,该引脚为输入,通过R10下拉地,所以网卡在复位时选择为8位IO模式。地址线和数据线都位于ISA的A,B部分,A0-A19为ISA网卡的地址线,D0-D7为网卡的数据线。我们所使用的8019网卡有3种配置方法:1.跳线模式,2.即插即用P&P模式,3.串行Flash配置模式。P&P模式用于PC机中,在我们的试验板上无法实现,能实现的为跳线模式和串行Flash配置模式,但Topstar的ISA的网卡并未在电路上提供硬跳线支持,对网卡作电路修改可能会影响网卡的正常工作,所以最后参照REALTEK公司所提供的RTL8019AS手册,使用串行Flash配置模式。设置网卡工作的I/O:0x0240--0x025F,使用中断Interrupt:IRQ9。网卡的引脚33(RESET)连接到单片机的P3.4,引脚35(IRQ9)连接到单片机的/P3.2(INT0),引脚44(/IOR),45(/IOW)连接到单片机的P3.7(/RD),P3.6(/WD)。网卡使用的地址为20位,而单片机可提供的总线地址只有16位,我们无法把网卡直接挂于16位的总线上。我们使用的网卡的IO地址为0x240~0x25F共32个地址。图4网卡IO地址表有图可以看出,实际使用的IO地址只有5位,分别是A0-A4,其他地址都是固定的000000000010010。从这点出发,我们使用高位地址的7位来选中网卡已经绰绰有余了。地址线A6,A9(ADDR15)A5(ADDR13)A4(ADDR12)A3(ADDR11)A2(ADDR10)A1(ADDR9)A0(ADDR8)值10XXXXXP2口P2.7P2.5P2.4P2.3P2.2P2.1P2.0图5网卡IO与单片机总线映射A7,A8,A10-A19接地,A6,A9接总线最高位P2.7,A0-A5接至总线高位地址上(P2.0-P2.5)。那么网卡的地址0x240-0x25F就被映射到单片机总线的0x0C000-0x0DF00了。图6访问映射后的网卡地址三、软件设计1.系统IO及驱动程序1)伪多任务的实现:单片机需要处理的3个主要任务,接受终端的命令,查询接受以太网的数据报和后台服务超时程序。所以一个多任务的轮转机制是必不可少的,设计没有采用多任务的实时操作系统(RTOS),而只是采用一个简单的轮转调度方案。使用RTOS需要占用一部分的系统资源,地址线A19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0240H00000000001001000000...000000000010010XXXXX25FH00000000001001011111另外实验证明接受一个最大的数据报需要耗时60ms,而同时发送一个回应数据报也需要耗时70ms,而通常Internet上数据报的超时都在秒级的,所以在1s内,可以同时处理8个最大的数据报,这样只要保证接受任务处理8个数据报以内,就能保证下一个任务在超时前完成,实际上我们在一次任务中只处理了一个数据报,这样就不会因为在一个任务上停留时间过长而破坏了系统的实时性。串口使用了终端,在串口接受缓存区允许的情况下,可以接受到实时的命令输入。图7多任务轮转调度2)系统时间和计时器使用Timer2作为时间计数器,定时间隔为1ms。系统提供的时间为一个累加的16位秒计时,计时可以达到18个小时。系统另外提供1个8位ms级倒计时器和1个8位的100ms倒计时器。该倒计时器可以被用作超时计时,也可用作255ms内和25s内的计时器。图8系统时间使用倒计时器用作ms级或100ms级的计时器,任务时对倒计时器赋0xFF,这样倒计时器就开始工作了,任务结束时对倒计时器按位取反,即得到计时的间隔。在Ping程序中可以看到使用了ms级的计时器对目标返回的Echo数据报的时间间隔做了计时。3)硬件的驱动程序RTL8019AS网卡驱动程序这里指的驱动程序不同于Windows下的VXD和WDM驱动,这里指的是实模式下一组硬件芯片的驱动子程序。RTL8019AS的工作流程非常简单,实现只需要4个函数,分别是复位,初始化,收报和发报。前导位PR帧起始位SD目标地址DA源地址SA类型TYPE/长度LEN数据域DATA填充PAD校验FCS62bit2bit48bit48bit16bit=1500Bytes32bit图9802.3帧结构TYPE:0x0800代表IP报,0x0806代表ARP报,0x814C代表SNMP报,0x8137代表IPX/SPX,小于0x0600用于IEEE802帧表明了数据的长度。嵌入式系统TCP/IP网络解决方案DATA:DA+SA+TYPE+DATA=1514,最大的数据报长度为1514字节(RFC894)PAD:DA+SA+TYPE+DATA60时,即数据报长度不足60字节时,填充PAD。(RFC894)接受状态下一页指针帧长度目的地址DA源地址SA类型TYPE数据域DATA填充PAD校验FCS8bit8bit16bit48bit48bit16bit=1500Bytes32bit图10RTL8019AS接受帧结构目的地址DA源地址SA类型TYPE/长度LEN数据域DATA填充PAD48bit48bit16bit=1500Bytes图11RTL8019AS发送帧结构发送功能的实现:待发送的数据报必须按照RTL8019AS的发送帧结构,将发送帧存入8019AS的RAM中,把数据报所在的首地址和长度告知芯片后(TPSR、TBCR),启动发送命令,即可实现数据报的发送。接受功能的实现:我们使用查询的方法来接受数据报。接受缓存是一个FIFO列队,PSTART、PSTOP两个寄存器限定了列队的开始和结束页。芯片设有2个指针CURR写指针和BNRY读指针,CURR受芯片控制。我们在查询中判断(CURR==BNRY),如果CURR和BNRY指向不同的地址,则说明有新的数据报,那么从芯片的16kRAM中读取数据报。使用RTL8019AS接受帧的结构体指针,就可以取得不同部分的数据了。接受到的数据报保存到单片机RAM中,系统的实现是接受到一个处理一个。芯片DMA结构介绍:图12双口RAM结构RTL8019AS使用了双口的RAM,这使操作的DMA端口分为了远端(Remote)和本地(Local)两个。如图12所示,本地DMA接口指得是硬件收发电路侧,而远端DMA指得是连接到CPU接口侧。这里的DMA与平时讲的DMA有不同,本地DMA由芯片控制器本身完成,而远端DMA也需要主机CPU参与读取数据。具体的方法是,先由CPU给出首地址和长度,然后DMA读写RAM芯片,每操作一次RAM地址会自动加1,这样的DMA操作省去了普通DMA操作时需要先发地址的时间,速度较快,但是只能完成连续地址空间的DMA读写操作。芯片初始化的具体参数和程序实现可以参阅附录的源代码8019as驱动部分。另外设计中编写了一些外设的驱动程序:HD4478016x2字符液晶驱动程序(见附录源代码)I2C总线的串行E2PROM24C02(见附录源代码)2.TCP/IP网络协议设计使用的以太网封装格式都按照RFC894中定义的格式。(1)ARP:地址解析协议在局域网内,一台主机将以太帧发送到另外一台主机上,需要根据48bit的以太网地址,设备驱动程序不检查IP数据报中的32位的IP地址。ARP地址解析协议,为这两种地址间提供映射。通常ARP的映射是自动完成的,用户及程序都无须关心。图13ARP请求与应答的分组格式OP字段指出了操作类型,ARP请求(1)、ARP应答(2)、RARP请求(3)、RARP应答(4)。RARP为逆地址解析协议,在嵌入式系统中用处不大,故省略。ARP协议的实现,发送ARP请求数据报,同时设置3秒超时,在3秒内接受到ARP回应数据报,将数据报内容ARP信息缓存,返回IP层对应ARP缓存单元的首地址。在3秒内没有接受到ARP回应数据报,则通知IP层ARP解析失败。ARP缓存使用双链表,结构如图14所示。图14ARP缓存使用Demo板的arp命令,可以在终端上进行ARP缓冲区的查看、新加、查找和删除操作,图15显示的是arp–l显示命令的输出结果。图15Demo板ARP缓存输出(2)IP:网际协议IP协议是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据报都是以IP数据报的格式进行传输的。IP数据报的格式如图16所示:嵌入式系统TCP/IP网络解决方案图16IP数据报格式及首部各字段Demo板使用协议为IPV4版,不支持TOS特性,TTL生存时间为32。IP协议层
本文标题:嵌入式系统TCPIP网络解决方案
链接地址:https://www.777doc.com/doc-5449163 .html