当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]随着嵌入式设备与网络的日益结合,在单片机系统中引入TCP/IP协议栈,以支持单片机接入网络,成为嵌入式领域的一个重要方向。在此对基于SST89E516RD单片机的TCP/IP协议栈的实

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

1 系统硬件实现

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

 

2 系统软件实现

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

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

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

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

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

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

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

 

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

2.1 系统初始化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.2 TCP/IP协议栈的移植

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

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

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

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

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

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

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

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

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

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

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

(11)结束。

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

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

 

(2)客户端程序的测试

打开服务器端测试界面,如图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个月的测试,没有出现任何丢包和堵塞的现象。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

PLC(可编程逻辑控制器)和单片机是两种不同的控制设备,它们之间存在明显的区别:

关键字: 单片机 plc 控制器

Holtek隆重推出全新一代32-bit Arm® Cortex®-M0+ 5V CAN MCU - HT32F53231/HT32F53241/HT32F53242/HT32F53252。这一系列单片机带有来自Bosc...

关键字: MCU 工业自动化 单片机

Holtek精益求精,宣布推出全新5V宽电压Arm® Cortex®-M0+ 32-bit MCU系列HT32F50431/HT32F50441/HT32F50442/HT32F50452。此系列MCU经多方位升级能满...

关键字: 单片机 智能家居 工业控制
关闭
关闭