当前位置: 首页 > 范文大全 > 公文范文 >

嵌入式TCP/IP协议栈在单片机上的实现

时间:2022-03-22 09:23:58  浏览次数:

摘 要:给出单片机上网的可行方案,采用SST89E564RD单片机,既提供了网关服务,也实现了在线仿真和下载的功能。由于51单片机资源有限,精简了TCP/IP协议族,在8位单片机上实现了UDP、TCP、ICMP、IP、ARP协议,为嵌入式系统通过以太网接入Internet打下了基础。经过几个月的软硬件测试表明:系统设计合理、稳定可靠。

关键词:单片机; 以太网; TCP/IP; UDP

中图分类号:TP393 文献标识码:B

文章编号:1004-373X(2010)10-0198-04

Realization of Embedded TCP/ IP Protocol Stack on MCU

WANG Fang1, ZHOU You-xia2

(1.School of Electronics and Information Engineering, Sanjiang University, Nanjing 210012, China;

2. Property Division of Xisan District, Wuxi 214000, China)

Abstract:A feasible project about MCU access to the Internet is presented, With SST89E564RD, the Ethernet protocol gateway services are provided, and the on-line debugging and downloading functions are realized., The TCP/IP protocol family is simplified because of the limited resources of 51 MCU. The UDP, TCP, ICMP, IP, ARP protocols were achieved on an 8-bit MCU, which lays the good foundation for embedded system to access the Internet through Ethernet. The software and hardware testing in several months shows that the new detection system is reasonable, stable and reliable.

Keywords:MCU; Ethernet; TCP/IP; UDP

随着嵌入式设备与网络的日益结合,在单片机系统中引入TCP/IP协议栈,以支持单片机接入网络,成为嵌入式领域的一个重要方向。在此对基于SST89E516RD单片机的TCP/IP协议栈的实现方法给予讨论。选用SST89E516RD单片机实现了在线仿真和编程的功能,大大节约了开发成本。采用VB 6.0语言与Window 98/2000/XP等为软件开发平台,对系统进行了测试。经过几个月的软硬件测试表明:系统设计合理、稳定可靠,已基本实现了最初的设计目标。对其他类似系统移植该项技术奠定了基础,有很好的参考价值。

1 系统硬件实现

整个系统以SST89E516RD单片机为核心,通过RTL8019AS以太网控制芯片实现远程通信。串口完成网卡参数的修改、在线仿真。在系统中还使用X5045作为外部扩展的E2PROM,用来存储IP地址、物理地址以及网卡的其他配置信息,同时X5045还具有电压监控、看门狗定时器、上电复位三种功能,使用X5045监控系统的运行过程,当系统不稳定时可以进行有效地复位。图1为系统硬件结构图。

图1 系统硬件结构图

2 系统软件实现

系统软件主要包括客户端和服务器端软件的设计,主要有以下几部分内容:

(1)RTL8019AS的初始化和驱动程序的设计;

(2)数据帧的发送和接收子程序;

(3)TCP/IP协议栈程序的设计;

(4)客户端和服务器端程序的设计;

(5)X5045看门狗和E2PROM程序的设计。

系统的主程序流程图如图2所示。

由图2可知,系统首先完成对单片机定时器、串口、网卡芯片和以太网等部分的初始化,然后进入以太网处理部分的主程序,通过定时器中断进行网口数据的超时出错处理,并完成TCP定时器保活和ARP表生存时间的更新。

图2 主程序流程图

2.1 系统初始化

所谓初始化和驱动程序是指实模式下一组硬件芯片的驱动子程序,它们屏蔽了底层硬件处理细节,同时向上层软件提供与硬件无关的接口。主要包括定时器初始化,初始化PING表、ARP表,初始化TCP,RTL8019AS的初始化等。RTL8019AS的初始化主要包括网卡的复位和网卡寄存器的初始化。RTL8019AS的初始化主要包括网卡的复位和网卡寄存器的初始化。RTL8019AS内部寄存器有4页,与NE2000兼容的有3页,第4页不用。页选择由CR寄存器的PS1,PS0位确定。在零页寄存器中可以设置接收、发送状态配置以及发送缓存区的起始页与接收缓存区起止页地址等;在1页寄存器中可以设置以太网接口的MAC地址和组播地址。对网卡的初始化就是对相关寄存器初始化,这些寄存器包括CR,RCR,TCR,PSTART,PSTOP,BNRY,TPSR,ISR,DCR,IMR,CURR,PAG0~PAG5,MAR0~MAR5等。初始化过程如下:

(1) CR=0x21,选择页零的寄存器同时使芯片处于停止模式,不会发送和接收数据包;

(2) RCR=0xE0,设置接收结构寄存器,monitor方式,所有数据包都被拒绝;

(3) TCR=0xE2,设置发送配置寄存器,工作在内部lookback模式;

(4) PSTART=0x4C,接收缓冲区开始页面地址;

(5) PSTOP=0x80,接收缓冲区中止页面地址;

(6) BNRY=0x4C,接收缓冲区最后页面指针;

(7) TPSR=0x40,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40;

(8) ISR=0xFF,清除所有中断标志;

(9) DCR=0xC8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;

(10) IMR=0x00,设置中断屏蔽寄存器,屏蔽所有中断;

(11) CR=0x61,选择页一的寄存器;

(12) CURR=0x4D,网卡写内存的指针,指向当前正在写的页的下一页,初始化时指和0x4C+1=0x4D;

(13) 设置多址寄存器MAR0~MAR5,均设置为0x00;

(14) CR=0x22,使网卡芯片开始工作;

(15) 设置网卡地址寄存器PAR0~PAR5;

(16) CR=0x21,选择页零的寄存器;

(17) RCR=0xCC,设置接收结构寄存器,设置为使用接收缓冲区,跟外部网络连接;

(18) TCR=0xE0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;

(19) CR=0x22,使网卡芯片开始工作;

(20) ISR=0xFF,清除所有中断标志;

2.2 TCP/IP协议栈的移植

以太网帧的发送与接收属于协议层中的最底层。发送前的协议封装和接收时的协议分解都非常简单。封装时,只需在上层封装数据前面添加14 B的以太网首部就可以了;接收到数据帧之后,根据头信息中的帧类型字段判断是否属于IP包或ARP包,若是就继续相应的协议分解,否则将被丢弃,不予处理。帧的接收工作由网卡自动完成,只需对相关的寄存器如PSTART,PSTOP,CURR和BNRY进行适当的初始化即可。以太网帧的发送过程如下:

(1) 初始化命令寄存器CR,启动RTL8019AS;

(2) 设置数据配置寄存器DCR,以字节方式通信;

(3) 设置发送配置寄存器TCR,选择RTL8019AS数据发送的工作方式;

(4) 设置远程开始地址寄存器RSAR0(低位),RSAR1(高位),指明远程DMA操作时所传送数据的起始地址;

(5) 设置远程字节计数寄存器RBCR0(低位),RBCR1(高位),指明远程DMA操作时所传送的数据的字节数;

(6) 设置命令寄存器CR,开始远程DMA写操作。RTL8019AS自动将数据I/O端口的数据写入其缓冲区中;

(7) 开始向数据I/O端口传送需要发送的数据;

(8) 数据传送完毕后,设置发送页起始地址寄存器TBCR,指明待发送数据的起始地址;

(9) 设置发送字节计数寄存器TBCR0(低位),TBCR1(高位),指明待发送数据的字节数;

(10) 设置命令寄存器CR,启动本地DMA操作,把缓冲区中的数据发送到网络上;

(11) 结束。

需要指出的是,数据在发送前必须先由上到下进行层层封装才能正确地发送出去,同时,接收到的数据包还必须自下而上层层解包才能为用户所识别,即协议分解。在协议编程实现中,数据封装与协议分解互为逆过程。这就是说,必须在数据采集子系统中实现嵌入式TCP/IP协议才能完成数据的TCP/IP处理。

2.3 客户端和服务器端程序的设计

分别设计客户端和服务器端程序,适应于不同的工作场合。在面向连接的TCP协议中,服务器和客户机开始通信之前必须首先建立连接。在连接之前,服务器程序必须正在运行并处于监听模式,等待客户端的连接。TCP的连接是通过3次握手协议来完成的。首先,客户端发送1个SYN标志位的TCP段给服务器,其带有所选择段的初始序号。服务器端收到该报文段后,以1个带有SYN标志的段作为应答,其中也给出根据本身情况选择的初始序号,并包含对客户端的确认。而客户端收到服务器端的应答后,再次送回1个报文段,其中带有对服务器端SYN的确认。这样双方的连接就建立了,以后就能开始传送数据。同样终止1条TCP连接实际上也需3次握手过程。

3 应用系统实现

为了验证系统的可行性,应用VB开发了接口程序,构建了软硬件测试平台,用来设置网卡的配置参数并实现数据的发送与接收。所有配置参数包括(本地IP地址、服务器端IP地址、端口号、网卡物理地址、ping的IP地址、串口号等)都能通过串口动态地更改。系统能实现Ping的功能,以方便检查以太网的状态。

3.1 参数设置界面

用串口线将测试板(数据采集和控制系统模块,下同)与计算机连接起来,选择好串口号,然后按“连接单片机”按钮,连接状态工具栏里出现“已经连接”,说明测试板与计算机已经连接上,然后就可以修改配置参数了。在参数设置栏中填写正确的参数值后,按“设定”按钮,接收状态栏中会提示参数设置成功,然后按测试板上的复位键,网卡的参数配置

就被写到了X5045中。参数设置界面如图3所示。

3.2 数据收发测试界面

分别测试客户端和服务器端软件通信是否正常。

(1) 服务器端程序的测试

打开客户端测试界面,如图4所示,设置连接IP地址为192.168.0.44(该地址必须与服务器端的IP地址一致),设置连接端口号为3330(该端口号必须与服务器端端口号一致)。将作为服务器端的程序烧入到测试板的微处理器中,通过图3修改配置界面,将服务器端需要的参数写入X5045,参数配置包括:“单片机IP地址”(指的是测试板自身的IP地址)为192.168.0.44,“服务器端IP地址”可以不用设置(因为测试板本身就即服务器端);如果是新网卡芯片,还需要设置MAC地址,这里设为121314151617(一般选择任意的12位数即可);“服务器端口号”设为3330(必须与客户端一致);网关设为192.168.0.1(要与上位机保持在同一个网段内)。设置好所有参数后,可以进行数据的收发了。

图3 修改配置参数界面

图4 客户端测试界面

(2) 客户端程序的测试

打开服务器端测试界面,如图5所示。

图5 服务器端测试界面

设置连接IP地址为192.168.0.44(该地址指的是上位机自身的IP,必须与客户端设置的“服务器端IP地址”一致),设置连接端口号为3330(该端口号须与客户端设置的“服务器端口号”一致)。将作为客户端的程序烧入到系统的微处理器中,参数配置:“服务器IP地址”(指的是上位机的IP地址)为192.168.0.44,“单片机IP地址”可以不用设置(因为系统仅作为客户端),“服务器端口号”设为3330(必须与客户端一致),网关设为192.168.0.1(要与上位机保持在同一个网段内)。设置好所有参数之后,即可进行数据收发。服务器端的数据可以被发送到串口,同样,数据也可以从串口发送到服务器端。

测试表明:上位机通过以太网与系统之间的通信正常。

4 结 语

在此实现了TCP/IP协议栈在单片机上的移植,完成了系统的硬件电路和相关嵌入式软件的设计,应用VB开发了上位机修改参数界面,通过串口完成对网卡等参数的配置和修改,解决了数据包的超时重发、定时保活、参数配置、硬件看门狗复位等一系列问题。实验表明,整套程序比较稳定,收发数据正常,TCP超时重传效果很好。经过近1个月的测试,没有出现任何丢包和堵塞的现象。

参考文献

[1]熊育悦,赵哲分.工业以太网在控制系统中的应用前景[J].仪表技术,2002(3):37-39.

[2]陈积明,王智,孙优贤.工业以太网的研究现状及展望[J].化工自动化及仪表,2001,28(6):1-4.

[3]马利,李佐儒,杨四海.实现电子设备的网络化解决方案[J].单片机与嵌入式系统应用,2002(2):8-10.

[4]李广弟,朱月秀,王秀山.单片机基础[M].北京:北京航空航天大学出版社,2003.

[5]康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社,1998.

[6]微型计算机及外部设备常用芯片手册编辑委员会.微型计算机及外部设备常用芯片手册[M].北京:清华大学出版社,1999.

[7]周立功.单片机实验与实践[M].北京:北京航空航天大学出版社,2004.

[8]赵海兰,钱国宝,徐煜祥.利用SST89C58的IAP/ISP实现的在线仿真技术[J].沙洲职业工学院学报,2003,6(5):8-11.

[9]周向红.X5045芯片在单片机系统中的应用[J].现代电子技术,2006,29(5):111-112,116.

[10]魏计林,邱选兵,王青狮,等.单芯片嵌入式网关在煤矿井下人员定位中的应用[J].现代电子技术,2008,31(21):143-145,149.

[11]冯丽慧,陈爱国,张磊.一种基于内嵌TCP/IP的抄表器的设计[J].现代电子技术,2008,31(14):33-34,40.

[12]武永梅.基于嵌入式的以太网与现场总线协议网关的设计[D].太原:太原理工大学,2006.

[13]吴艳光.嵌入式TCP/IP协议栈设计方法的研究[D].太原:太原理工大学,2004.

推荐访问: 机上 嵌入式 协议 IP TCP