搜索
您的当前位置:首页正文

一种基于MCU的网络传输系统的设计与实现

来源:六九路网
维普资讯 http://www.cqvip.com 络化成为当今电子行业的热门话题。把MCU与Intemet互 联,具有巨大的市场要求。 目前,对于将MCU和Internet互联的方法还比较少见。 本文主要研究了一种基于MCU的TCP/IP协议栈,提出了 低端MCU实现网络化的一种新方法,具有成本低、硬件少、 占用面积小、传输速度快、使用方便等优点。最后,在此基础 图2硬件模块设计图 上,设计并实现了基于MCU的网络传输系统。 2.网络传输系统的硬件设计 2.2.1处理器模块 2.1 MCU介绍 处理器是整个系统的心脏,负责完成网卡芯片的驱动、 MCU(Micro Controller Uni0微控制器,又称 片微型计 TCP/IP协议的实现、数据的采集与控制、中断服务程序的执 算机,简称单片机,是将计算机的CPU、RAM、ROM、定时器 行、串口数据的收发、数据的存储以及一些算法等。 和多种I/O接口集成在一片芯片上,形成芯片级的计算机。 系统选取P89C58作为处理器。该芯片是51内核,Flash MCU按其存储器类型可分为MASK(掩模)ROM、OTP 空间最多可以是32KB,最高可以工作在33MHz,RAM可扩 (一次性可编程)ROM、FLASH ROM等类型,也可按其总线 展到64K字节,全双工增强型UART,具有4个中断优先 位数分为:4位、8位、l6位、32位、64位等类型。目前,随着 级,6个中断源,4个8位I/O口,另外带两个DPTRo这些功 生产工艺和技术的进步,虽然32位MCU的发展势头非常 能有利于提高系统的效率及传输速度。 迅猛,但是从市场销售来看,8位MCU的出货量占到了55% 2.2.2存储器模块 以上,仍是MCU市场的主导产品。高集成度、多功能化、低成 系统采用存储容量达64K的EPROM27C512作为外接 本以及小体积是MCU的发展趋势。现在的MCU大都集 存储器作为数据缓冲区。其具体实现如下:系统处理器 成RISC CPU CORE、ADC/DAC、ROM、FLASH、PLL电路等 P89C58的P0口分别与74LS373的输入引脚10.I7相连, 丰富的可供用户使用的资源。 P89C58的P0口分别与27C512的输出引脚DO.D7相连, MCU功能模块如图1所示: P89C58的ALE与74LS373的G1相连,P89C58的P2口分 别与27C512的输入引脚A8.A15相连,P89C58的PSEN与 27C512的OE引脚相连,74LS373的00.07分别与27C512的 输入引脚A0-A7相连,74LS373的G2,27C512的CE接地。 2.2.3外部接口模块 系统的外部接口模块包括以太网接口模块、串行接口模 块两个部分。 (1)以太网接口模块设计 数据包要能够发送到网络上,能够从网络上接收到数据 图1 MCU功能模块图 包,必须借助以太网控制器。 2.2系统硬件设计 RTL8039C芯片是一款应用广泛的10M网络芯片,支持 基于MCU的网络传输系统的硬件平台主要是由处理 以太网II和1EEE802.310Base5,10Base2,10BaseT,并支持 作者简介:周哲,男,广东湛江人,助理工程师,研究方向:计算机通信相关的维护和管理。 维普资讯 http://www.cqvip.com 可编程输出的4.诊断LED。 系统将RTL8039C的数据线SD0.SD7与P89C58处理 器的ADO.AD7(P0口)相连。在驱动RTL8039C的过程中,需 要控制它的32个寄存器,硬件上只需要5根地址线。考虑到 地址的连续性,在设计中用SA[0…41作为地址线与P89C58 的A0.A4(P0口锁存后的信号)连接,AD15经反相后与AEN 相连,故RTL8039C的寻址空间为0X8000.0X801F。 f2)串口通信模块设计 在该模块中,电平转换芯片采用MAX232CPE芯片,该 模块的串口通过3线电缆与计算机的9阵串口连接,通信协 议为RS.232协议。单片机的TXD,RXD与MAX232的 TIN,R/OUT管脚相连,MAX232将发送的串行数据转换为 RS.232C标准的电平信号发送到发送端;反之MAX232将 接收的RS.232C标准的电平信号转换为串行的数据传给单 片机,这样就完成了RS.232C接口通信功能。串行口的通信 方式采用8位异步通讯方式,波特率采用9600bps。 3.网络传输系统的软件设计 TCP/IP协议实际上就是在物理网上的一组完整的网络 协议。TCP/IP是一个四层协议,即由应用层(如Http、FTP)、 传输层(TCP和uDP)、网络层(IP、IGMP、ICMP)和链路层 (设备驱动程序和网卡等)组成。TCP/IP协议的核心部分是 传输层协议(TCP和uDP)、网络层协议(IP)和物理接口层。 系统软件设计流程图如图3所示: 应用层 传输层 网络层 链路层 图3软件设计流程图 3.1 以太网卡驱动程序 网络接口层是TCP/IP协议栈与以太网设备的驱动程序 之间的接口。它一方面将从网卡接收到的数据提交给上层 网络层协议软件处理;另一方面它将从网络层接收来的数 据传送给网卡驱动。接口函数介绍如下: (1)初始化函数 初始化函数InitNic()负责实现网络接口层以及下层的 物理设备驱动程序的初始化。主要包括以太网控制器的上 电复位、MAC地址的配置、收发缓冲环首尾地址的配置以及 DMA的初始化和收发数据格式的定义等。 (2)发送函数 在发送数据时,网络接口层发送函数Send ethernet Frame()负责接收IP协议产生的数据,将其封装成以太网数 据帧后,调用下层的Send_Packet()函数实现发送。 Send Packet()函数实现的是把太网数据帧通过远程DMA通 道送到RTL8039C中的发送缓存区,然后再启动本地DMA, 将数据发送网上。 网络技术 (3)接收函数 在接收数据时,网络接口层接收函数Recethernet—— Packed 0被下层以太网驱动程序的数据接收函数Rec— Packed()调用。Rec ethernet Packed()的作用根据以太类型 值,调用不同的函数,同时去除以太帧的头部,将数据从NIC 的数据缓冲区内发送到PC机的接收缓冲区内。Rec-_Packed ()函数通过读取RTL8039C的当前寄存器CURR(写寄存 器)和边界寄存器BNRY(读寄存器)的值来确定是否有新数 据的到来,若有新数据到来,则设置数据地址和数据长度,然 后启动远程DMA将接收缓冲环中的以太网帧送交给上层。 3.2 ARP协议的实现 ARP协议的职责是实现IP地址和物理地址的动态映 射。设计中没有实现ARP高速缓存以及动态改变ARP相关 参数,而是使用全局变量保存源、目的lP地址和源、目的物 理地址。简化后的协议的实现由以下4个函数来完成: Arp Request()完成ARP请求操作。ARP协议要求程序 根据子网掩码削断请求解析的IP地址是否属于旧一子网, 如果在问‘ 内,ARP请求目的物理地址,否则 求默认 网关MAC地址。 Arp Answer()完成将ARP请求包的源地址和目的地址 的内容交换,填写源物理地址和并将操作类型改为ARP应 答。 Arp Process()对  ARP 应答回来的信息进行处理,进行简单的ARP更新,将解析得到的目的主机的物理地址存入 Ping_Ip_Address中,而将网关的物理地址存入GatewayIp__ Address中。 GatewayArp__Request0定时对网关的IP地址进行解析。 3.3 Ping的实现 经过简化的Ping能够完成最基本的连通测试功能。完 整Ping过程主要用以下4个函数实现: Ping Request0完成Ping请求。当从串口输入Ping命令 , 凋刖此函数,发出请求包。 PingnAswer0完成Ping应答。只要收到发给自己IP的 请求他就会自动应答。 Ping Echo()显示应答信息。每当收到应答就立即显示相 天信息。 Pross_Ping0负责对Ping数据包进行处理。主程序循环 中调用该函数,判断所Ping的IP地址是否已经解析。若已 经解析,则发出Ping_Request;否则需要先解析IP地址。 3.4 IP协议的设计 网际协议IP是TCP/IP协议族中最为核心的协议,它的 主要功能是负责把数据交付给主机,当目标主机与原主机处 于不同的物理网络中时,IP负责把数据包路由到相应的目 标网络上。Intemet所有的数据都以IP数据包格式传输。IP 协议最大的特点是提供不可靠的和无连接的数据包传送服 务。简化后的协议主要由以下2个函数来完成: SendIp__Frame0负责发送IP数据。该子程序用来创建 一个发送数据包。当系统需要发送数据时,IP层以上的协议 将调用该子程序。 一57— 维普资讯 http://www.cqvip.com

络荻术 Rcve 负责接收 数据。该子程序检测一个Ip Frame() Tcp Initial()完成初始化TCP首部的各项信息。 Send Reset()是发送TCP RST数据包,复位对方连接。 Delete Socke0完成撤销本地连接,并清空重发缓冲区。 Tcp Listen()使得TCP处于监听状态,等待syn信号的到 来。 TcpSynRec0从TcpListen接收到syn后,即可进入该状 —外来的数据包,并对数据包作相应的处理。 3.5 UDP协议的设计 UDP协议是一种简单的传输层协议,处于应用层和网 络层之间,是应用程序和网络操作的中介物。UDP协议使用 端口号创建进程到进程的通信,不提供流控SU,只提供程度 很弱的差错控制。简化后的UDP协议主要由以下3个函数 来完成。 Udp equest()完成udp请求。当从串口输入udp命令 __态该状态可接收Tcp Syn和TcpAck或TcpRst。 __TcpSyn__Sent0用SendIpFrame函数,该函数自动为 __TCP数据报生成 头,并发送数据包。 后,即调用此函数,发出请求包。 Process Udp Command() 负责判断 地址是否解析,在Tcp Close Wait()完成TCP等待关闭状态的处理。 Tcp_Last Ack()当接收到Tcp RST,TcpSyn或TepAek __主程序中被定时调用。如果 地址已经解析则直接使用解 析得到的物理地址并调用UdP ;如果IP地址未解Request() .包文时,关闭连接。 4.结束语 析,则调用函数Arp Request() ,请求解析IP地址;如果UDP 连接的主机是本机,则发出出错信息。 rocessU@0是对Udp_RequesPt()的处理,每当收到请 _本文主要研究了一种基于MCU的TCP/IP协议栈,提 出了低端MCU实现网络化的一种新途径,具有成本低、硬 件少、占用面积小、传输速度快、使用方便等优点,使MCU 可以利用网络进行相互通信。随着嵌入式TCP/IP设备实时 求就立即显示相关信息。在Udp Request 0 函数中调用了Send ID Frame 0函数,该函数自动为UDP数据包生成IP 头,并发送数据包。 3.6 TCP协议的设计 性的不断提高,MCU与TCP/IP相结合的方法将会更广泛地 应用在家庭和工业的各个领域。 参考文献: [1】李明,康静秋,贾智平.嵌入式TCPHP协议栈的研究与开发 [J1.计算机工程与应用,2002,(16):116-121. TCP协议是整个TCP/IP协议的核心,也是传输层中最 复杂的协议。同时TCP协议是一种可靠的传输层协议。应用 程序将数据流交给TCP后就保证了数据流能按序地、无差 错地、也没有丢失或重复地到达另一端的应用程序。经过简 化的TCP协议由以下函数组成: CheckSum()完成计算校验和把TCP pseudo header、TCP 头部和数据域按字相加,结果取反。 [2]Douglas E Comer.用TCP/IP进行网际互联,第(2)卷:设计、实 现与内核[M1.北京:电子工业出版社,2001. [3】丁峰,邵定宏,Web Service和ASP.NET在GIS中的应用探讨 Ⅲ.微计算机信息,2005,(1):162-163. Design and Implementation of a Networking Transmission System Based on MCU Zhou Zhe (Zhanjiang Television Station Hub,Zhanjiang 524005,Guangdong) 【 b棚】 MCU is a normal element of IC. With the development of embedded technology nd anetwork,MCU is more nd amore useful in the market.The paper provides a new method of combining MCU and Internet with which we design and/mplement a networking transmission system based on MCU. 【 巧r'喇 】newortking transmission;MCU:lnternet 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top