嵌入式系统TCPIP网络解决方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式系统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.网卡部分

图3 ISA网卡接口部分

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位来选中网卡已经绰绰有余了。

图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需要占用一部分的系统资源,

另外实验证明接受一个最大的数据报需要耗时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个函数,分别是复位,初始化,收报和发报。

图9 802.3帧结构

TYPE:0x0800代表IP报,0x0806代表ARP报,0x814C代表SNMP报,0x8137代表IPX/SPX,小于0x0600用于IEEE802帧表明了数据的长度。

相关文档
最新文档