2-07毕业设计(论文)初稿--左欣(2)
摘 要
随着计算机通信技术和网络技术的发展,在嵌入式系统中集成以太网口,来实现与其它计算机设备之间的高速数据传输就显得更加的重要了。越来越多的计算机系统都迫切的需要和其它计算机系统进行联网,以达到共享数据,统一管理的目的。因此除了通常的使用PC机的内部网卡接入以太网外,许多的嵌入式系统也需要直接联入以太网,与其它联网的设备实现数据共享的目的。采用STM32微控制器和W5500芯片搭建的网络系统,结构简单、易于实现。
本文首先介绍了目前以太网技术的日前基本情况以及以太网技术在嵌入式系统中的应用现状。再者提供了以太网的应用模型,介绍了各个层次的网络协议。然后结合以太网接口芯片W5500的主要特点、芯片引脚定义、内部寄存器使用说明,提出了这种芯片与嵌入式处理器的硬件接口设计和底层收发程序的编程思路。接着针对嵌入式系统所需要完成的以太网通信的基本要求,从软件设计的角度介绍了一些必须实现的基本网络协议如TCP、UDP等协议的祯格式和主要特点。
该嵌入式以太网系统是基于STM32芯片与W5500高速以太网控制芯片的 ,它充分发挥了 STM32 芯片的 Cortex-M3 内核低成本低功耗的特性,同时该设计直接使用 W5500固化的TCP/IP协议站,对系统性能有了很大提升。
关键词:以太网;以太网接口;W5500芯片
ABSTRACT With the development of computer communication technology and network
technology, at the mouth of the embedded system in integrated Ethernet to achieve high-speed data transmission and other computer equipment becomes more important. More and more computer systems are urgently needed and other computer systems networking, in order to achieve data sharing and unified management. So in addition to the usual use of PC's internal network card access Ethernet, many embedded systems also need to directly connected to the Ethernet, and other network equipment to achieve the purpose of data sharing. The structure of the network system is simple and easy to implement with the STM32 microcontroller and W5500 chip..
First of all, this paper introduces the current application situation of Ethernet
technology recently basic situation and Ethernet technology in embedded system. Moreover, the application of Ethernet is provided, and the network protocols are introduced.. And then combined with the main characteristic of Ethernet interface chip w5500, chip pin definition, internal register instructions for use, and put forward the idea of programming of the chip with embedded processor interface hardware design and the driver to send and receive procedures. Then for embedded systems need the basic requirement of the Ethernet communication, from the point of view of software design introduces some must achieve the basic network protocols such as TCP, UDP protocol frames format and the main characteristics.
The embedded Ethernet system is based on the STM32 chip and w5500 high-speed
Ethernet control chip. It makes full use of the STM32 chip Cortex-M3 low-cost low-power characteristics, at the same time the design used directly w5500 curing of the TCP / IP protocol station, the system performance has been greatly improved.
Keywords: Ethernet; Ethernet interface; W5500 chip
第1章 绪论
1.1 以太网概述
以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网技术的最初进展来自于施乐帕洛阿尔托研究中心的许多先锋技术项目中的一个。1976,梅特卡夫和他的助手戴维伯格斯发表了对以太网的一个标题:局域计算机网络的分布式包交换技术”的文章。多点传输系统称为CSMA/CD(载波侦听多路访问)的碰撞检测,以及符号的以太网的诞生。以太网的吞吐量只有10Mbps,和载波侦听多路访问的访问控制方法(CSMA/CD)碰撞检测使用。这种早期的10Mbps以太网称之为标准以太网,以太网可以使用粗同轴电缆、细同轴电缆、非屏蔽双绞线、屏蔽双绞线和光纤等多种传输介质进行连接[2]。以太网采用带冲突检测的载波帧听多路访问(CSMA/CD)机制。以太网中节点都可以看到在网络中发送的所有信息,因此,我们说以太网是一种广播网络。以太网的工作过程如下:
当以太网中的一台主机要传输数据时,它将按如下步骤进行:
1、监听信道上收否有信号在传输。如果有的话,表明信道处于忙状态,就继续监听,直到信道空闲为止。
2、若没有监听到任何信号,就传输数据
3、传输的时候继续监听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1(当冲突发生时,涉及冲突的计算机会发送会返回到监听信道状态。)
4、若未发现冲突则发送成功,所有计算机在试图再一次发送数据之前,必须在最近一次发送后等待9.6微秒(以10Mbps运行)。
网络芯片之间的数据都是基于以太网帧结构,网络层发送下来的数据加上以太网的帧头和帧尾就变成了可以被数据链路层识别的数据帧,在以太网额帧结构中帧头和帧尾的字节数是固定的,但数据包的大小不同,下面分析IEEE802.3以太网的帧结构。IEEE802.3一般帧格式如图1.1.
图1.1 IEEE802.3帧结构
下面具体分析各个字符的作用:
(1) 前导码:一个56比特由交替的0和1组成的同步的前缀。通过前导码字段,接收方就能建立同步过程,使其网络有时间监听网上的信号,并决定是否接收数据帧或产生冲突。
(2) 帧起始定界符:一个8比特序列,用于指明数据帧的开始。
(3) 目的地址:指明了帧发往目的站的MAC地址,6个字节,可以是单播地址、多
址或者全地址。
(4) 源地址:指明发送帧的MAC地址
(5) 长度:共占两个字节,表示逻辑链路层数据报的长度。
(6) 数据:以太网上传输的数据报文,当报文少于46字节时,该字段的其余部分也必须进行填充,一般用0填充,该段的最大长度为1500.
(7) FCS:校验序列,包括4字节CRC用于检查错误,当一个原站组装一个MAC帧,他在所有字节执行一个CRC计算,原站将计算结果放入这个字段,并作为帧的一部分传输给目的站,当帧被目的站接受后,目的站进行同样的校验,若校验值不同,目的站将认为在过程中发生错误并丢弃这个帧。
当今居于主导地位的局域网技术-以太网,便于实现同时又价格低廉的局域网技术已经成为业界的主流。而更高性能的快速以太网和千兆以太网的出现更使其成为最有前途的网络技术。以太网技术不断创新,不断开发出新的功能,并逐步地成为世界上最流行的网络技术。主要的原因有:
(1)可拓展性好,用户从一个老的网络升级到新的高速网络之间的转换十分方便。
(2)可靠性高,以太网使用的是一种很简单的,但又很可靠的结构化布线的基于双绞线的星型连接传输机制。
(3)成本低廉,众多的以太网厂商,导致网络设备价格的进一步下降
(4)管理方便,有成熟的网络管理技术和软件,使管理员能在中心站点方便的管理各个网路设备
1.2 嵌入式系统概述
嵌入式系统是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统[3]。简单地说,嵌入式系统集系统的应用软件与硬件于一体,具有软件代码小、高度自动化、响应速度快等特点。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的器件[4]。
嵌入式系统的发展可以分为硬件和软件技术的发展。从硬件上来说,主要是嵌入式处理器芯片的发展,从70年代末、80年代初的4位、8位微控制器发展到现在的犯位、甚至64位的微控制器。不但在速度上提高了很多倍,而且在芯片内部集成的功能部件比以往也大大地增加了。嵌入式处理器可以分为以下四类:
(1)嵌入式微处理器:采用“增强型,,通用微处理器,在功能方面与标准的微处理器基本上是一样的。根据实际嵌入式应用要求嵌入式微处理器的主板安装特殊的设计特点只留下系统和应用,可以大大降低的大小和系统的能源消耗,但其电路板应包括ROM,RAM,总线接口,和其他外围设备。这种设备是最快和最适合用在嵌入式系统中的,应用是比
较大的。目前,有68000个处理器的嵌入式系统的通用,存储在功率:PC,ARM,MIPS,ARM处理器等。特别是,嵌入式微处理器的发展一直很快,和嵌入式微处理器已经在过去的几年中占领了很大的市场份额的,并且有逐步蚕食8位及16位嵌入式微控制器市场的趋势。
(2)嵌入式微控制器:嵌入式微控制器又称单片机,它将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某种微处理器内核为核,根据某些典型的应用,在芯片内部集成了ROM、RAM、总线、总线逻辑、定时/计数器、看门狗、FO、串行口、脉宽调制输出、刀D、D/A、FlashRAM、EEPROM等各种必要功能部件和外设。为满足不同的使用要求,功能和配置设置在必要的修改和调整的削减,一个系列的单片机具有多种衍生产品,衍生工具的任何类型的处理器核是相同的,不同的内存和外部配置和功能可与建筑物的最大。应用的需求,降低整个系统的功耗和成本。嵌入式控制器的数量和类型的产品,在各种嵌入式处理器是最大的优点,也是主流单片机是嵌入式系统的应用。嵌入式微控制器可分为通用和半通用两类,比较有代表性的通用系列包括8051、PSIXA、MCS251、MCS96/196/296、C166/167、68300等。而比较有代表性的半通用系列,如支持USB接口的MCUSXC93O/931、C540、C541;支持IZC、CAN总线、LCD等的众多专用MCU和兼容系列。
(3)嵌入式DSP处理器:在数字信号处理应用中,各种数字信号处理算法相当复杂,一般结构的处理器无法实时的完成这些运算。由于DSP的体系结构和指令的特殊设计,使其特别适合于数字信号处理的实时性。嵌入式DSP处理器在数字滤波,光谱分析,DSP算法的DSP嵌入式应用poured,在正常运行和DSP的指令,通过使用转换DSP,嵌入式DSP处理器比较有代表性的产品是TI的TMS320系列、ADI的ADSP系列和Motorola的DSP560OO系列等。
(4)嵌入式片上系统:随着EDA的推广和VLSI设计的普及化,以及半导体工艺的迅速发展,可以在一块硅片上实现一个更为复杂的系统,这就产生了SOC技术。通用处理器核心的多样性,标准库中的soc设计公司,很多其他的嵌入式系统的周辺机器,标准设备的vlsi设计,标准和rlog等硬件描述语言和组件库保存用户,单应用整个系统定义、模拟,然后半导体工厂生产的样品能够设计。一些装置的其他合并,不能被植入了整个系统一种或少数的芯片能整合,应用系统电路板将变得很简单,对于减小整个应用系统体积和功耗、提高可靠性非常有利。
以上介绍了嵌入式系统的硬件核心嵌入式处理器的分类,可以看出硬件的发展的是很快的,同样与之相对应的软件也在不断地发展。从软件上来说,随着嵌入式系统应用范围的不断扩大,采用高级语言编程和嵌入式实时操作系统RTOS己是嵌入式系统设计的必然趋势[5]。因为汇编语言和具体的微处理器的硬件结构密切相关,移植性较差,既不宜在复杂系统中使用,又不便于实现软件重用;而高级语言具有良好的通用性和丰富的软件支持,便于推广,易于维护。高级语言编程具有通用性强、容易编程、可读性强、可移植性好、
可维护性好、直接支持中断管理、支持软件重用等优点,目前基本上每一种微控制器都有相应的高级语言编译器(特别是C语言),并且在代码生成效率上跟汇编语言相比较已经相当接近了。另外,有些嵌入式系统比较复杂,可以采用嵌入式操作系统实现如多任务调度、文件管理、网络协议、图形界面等功能,而不需要自己花费很多的精力来开发这些算法。
1.3 研究现状及背景
随着越来越多的企业开始采用10Gbps传输,运营商开始寻求在城域网实施100gbps以太网,将其作为一种高效率的方式。随着广泛开展的各类宽带业务,例如视频组播、高清晰度电视和实时游戏促使10G以太网技术在城域网和电信骨干网等到广泛应用。越来越多的计算机系统都迫切的需要和其它计算机系统进行联网,以达到共享数据,统一管理的目的。因此除了通常的使用PC机的内部网卡接入以太网外,许多的嵌入式系统也需要直接联入以太网,与其它联网的设备实现数据共享的目的。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等[7]。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
当前,在嵌入式系统接入因特网的所有技术中,被使用最多的局域网通信技术即是以太网通信。通过以太网可以很方便地搭建局域网,因而能与因特网链接。嵌入式系统的开发与设计有了前所未有的空间与机遇,对于嵌入式系统的发展应用,任何时候都有机会跨入嵌入式以太网时代,这些都是需要两者技术上的完美融合。只要完成了嵌入式系统与以太网的链接,使嵌入式系统发展成为以太网中单独的一个节点,用户在节点可以通过网络,方便且低代价地进行数据传输[9]。所以为了实现整个系统的数据的传输功能,而在嵌入式系统与以太网链接的方法上做相应的研究,是具有十分重要的经济价值和现实意义的。
1.4 本文主要研究内容
本文通过对基于嵌入式的以太网通信的研究,采用W5500以太网接口芯片,在嵌入式系统中完成TCP、UDP通信的功能,实现嵌入式系统与以太网网络的互联互通,最终在STM32开发板上进行硬件测试与仿真,主要在一下几方面进行了着重论述:
(1)基于ARM的嵌入式系统硬件平台的组成以及重要硬件实现部分的构成,囊括相关芯片的叙述和网络控制芯片的内部结构、实现功能以及其工作的原理,分别做了相关简介。
(2)基于嵌入式系统实现以太网通信的基本网络协议的分析,主要介绍了TCP、UDP等网络协议。
(3)阐述了实现嵌入式系统与以太网进行TCP、UDP的通信方法。
(4)进行了对嵌入式系统以太网通信过程的仿真与测试
第2章 嵌入式系统以太网网络协议
2.1 网络协议概述
网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层,并提供服务,而上层的细节,以及如何实现业务规则和上层屏蔽层。一个N层的设备和装置是另一个协议。在网络的每一层,有很多协议层协议中,发送方和接收方必须一致,否则一方将无法识别另一个messagg协议交换网络信息和各种网络设备。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。由于网络节点之间联系的复杂性,在制定协议时,通常把复杂成分分解成一些简单成分,然后再将它们复合起来。最常用的复合技术就是层次方式,网络协议的层次结构如下:
(1)结构中的每一层都规定有明确的服务及接口标准。
(2)把用户的应用程序作为最高层
(3)除了最高层外,中间的每一层都向上一层提供服务,同时又是下一层的用户。
(4)把物理通信线路作为最低层,它使用从最高层传送来的参数,是提供服务的基础。
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。
2.2 数据链路层协议
数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上,向网络层提供服务,目的是把网络基础服务发送到网络层obiettiv相邻节点,要实现这一目标,必须有相应的数据链接的一系列功能,主要有:如何将数据组合成数据块,在数据链路层的数据块被称为帧传输数据,数据链路层,是一个统一的框架,为物理信道传输,包括传输错误,如何调整传输速率匹配的两个网络实体和一个接收通道;建立数据连接,维护和发布管理。数据链路层的主要协议有:(1)点对点协议;(2)以太网;(3)高级数据链路协议(;(4) 帧中继;(5) 异步传输模式;
以太网的地址采用48位,因此数据包头部的12个字节为地址信息,协议类型为2个字
节,表示后面的数据是什么类型的数据,比如IP数据包的一般的类型的0 800 h,arp包的类型0806 h。以太网分封循环冗余检验符号(crc)占有使用但是,以太网接口芯片中,正确的数据接收,crc代码不包含,验证工作芯片自动完成了。整个以太网数据包中有效的数据长度为46一1500个字节。对于的不同协议,其格式和长度均有所不同。以太网数据包格式如图2.1
图2.1 以太网数据包格式
2.3 IP协议
IP协议是用于将多个包交换网络连接起来的,它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。传输数据到目的地是IP的责任,但信赖性,流量控制,分组顺序,IP没有责任,协议的主机的主机为其他的一般服务。这个协议由主机到主机协议调用,主机协议的主机网关或目的主机数据发送到本地网络协议调用。例如,tcp / IP协议可以称,作为参数的收件人地址和源地址发送数据报告称IP网络(协议)的数据发送为了的接口。IP不提供可靠的传输服务,它不提供端到端的或(路由)结点到(路由)结点的确认,对数据没有差错控制,它只使用报头的校验码,它不提供重发和流量控制。如果出错可以通过ICMP报告,ICMP在IP模块中实现。
2.4 TCP/UDP协议
TCP和UDP协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
TCP/IP 协议是一个稳定的传输协议,数据真正进行传输之前,程序需要经过三次握手(Three-Way Handshake)。TCP/IP 的三次握手机制可以为通信双方提供稳定的连接,为通信过程提供验证,保证了通信过程的安全性。通过三次握手机制,整个通信过程可以顺利实现数据发送端和数据接收端的信息传输过程的同步,保证数据传输及时准确。TCP/IP 连接是一种稳定连接形式,需要通过三次握手机制。如图2.1 所示,客户端和服务器之间通过三次握手建立 TCP/IP 连接。
图2.1 TCP/IP连接的建立
首先,客户端先要发送一个同步序列编号给服务器,之后客户端进入同步信号发送完成状态,这样完成了第一次握手。
然后,服务器收到来自客户端的同步请求之后会往回发送一个确认信号,表明自身
已经获得该信号进入同步信号接收完成状态,完成第二次握手,而后会再发送一个同步请求给客户端。
最后,客户端接收到了来自服务器的确认信号以及新的请求信号,在这之后客户端会再发送一个确认信号给服务器,确认信号发送完毕,双方都进入到了传输准备阶段,第三次握手完成。
UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用[6]。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。UDP协议是建立IP协议的基础上,因此UDP数据报的前面加上1个20字节长的IP首部就封装成1个IP数据报。图2.3为UDP报文格式
图2.2 UDP报文格式
端口号表示发送进程和接收进程。由于IP层已经把IP数据报分配给TCP或UDP(根据IP首部中协议字段值),因此TCP端口号由TCP来查看,而UDP端口号由UDP来查看。TCP端口号与UDP端口号是相互独立的。尽管相互独立,如果TCP和UDP同时提供某种知名服务,两个协议通常选择相同的端口号。
UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份O字节的UDP数据报也是可以的)。IP数据报长度指的是数据报全长(见表4一
4),因此UDP数据报长度是全长减去IP首部的长度(一般为20)。
UDP校验和覆盖UDP首部和UDP数据,回想IP首部的检验和,它只覆盖护的首部,并不覆盖IP数据报中的任何数据。UDP的检验和是可选的(为0表示不校验)。
UDP数据报的格式是比较简单的,对于嵌入式系统实现UDP数据报的传输时,只需要提供目的方的IP地址和端口号即可马上发出,无需象TCP协议一样建立连接。至于判断对方是否及时收到数据等工作由上一层的协议来完成。
2.5 应用层协议
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。应用层协议可以分为一下几类: (1)域名系统(DNS) :用于实现网络设备名字到IP地址映射的网络服务。
(2)文件传输协议(FTP) :用于实现交互式文件传输功能。FTP是一种文件传输协议,它支持两种模式:一种方式叫做 Standard (也就是 Active,主动模式),一种是 Passive (也就是 PASV,被动模式)。 Standard 模式是 FTP 的客户端发送 PORT 命令到 FTP 服务器。Passive 模式是 FTP 的客户端发送 PASV 命令到 FTP 服务器。两种方式中数据
和控制链路都是分开传输的,惟一的区别在于主动模式由服务器端发起数据链路的链接请求,而被动模式由客户端发起数据链路的链接请求。
(3)简单邮件传送协议( SMTP) :用于实现电子邮箱传送功能
(4)超文本传输协议(HTTP) :用于实现WWW服务。
(5)简单网络管理协议(SNMP) :用于管理与监视网络设备。
(6)远程登录协议(Telnet) :用于实现远程登录功能。
对于嵌入式系统,其应用层协议通常是自定义的,根据应用系统的不同要求制订不同的协议[1]。由于上一层的协议一般是采用UDP协议, 这个协议是一种无连接协议的应用层,实现可靠的数据通信。例如,数据采集系统应用层协议的接口或RS 485接口的方法排序可以从通信主机UDP包发送各种命令及子机参数设置、数据检索等,下位机返回接收到应答、采集到的数据等UDP包等。除了实现以太网通信,PC端(上位机)也需要设计的嵌入式系统软件实现,上位机软件的设计是比较容易的,很多的保护呼叫控制模块或协议模块可用。比如,采用VB编程,可以选用其中的Winsock控件,设置好本地的端口号以及对方的IP地址和端口号,并选择协议类型为TCP或UDP协议,就完成了TCP心DP以下各层的协议,剩下的工作只是编程实现自定义的应用层协议。因此对于上位机的软件一般只需要实现应用层的协议即可。
2.5.1 PING
PING实际上是一个测试程序,用于测试另一台主机能否到达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。因此该程序实际上是利用了Illtemet控制报文协议(即ICMP)的一小部分来实现简单的网络测试工作。为了方便对嵌入式系统的以太网接口进行测试,实现PING协议很有必要。由与PING用的是ICMP协议的回显请求和回显应答的报文,因此发送的报文必须符合ICMP的协议,因此这里首先介绍ICMP协议的格式,如图2.3所示。
图2.3 ICMP协议格式
ICMP报文也可以说是IP数据报的一种,IP数据报中的数据部分就是ICMP报文。对于所有ICMP的报文,其前4个字节(类型、代码、校验和字段)都是必须的,但是剩下的其他字节则互不相同。类型字段可以有巧个不同的值,以描述特定类型的ICMP报文,回显请求和回显应答的类型分别为8和0。某些ICMP报文还使用代码字段的值来进一步描述不同的条件,这里为0。检验和字段应覆盖整个ICMP报文。在回显应答报文中。通常将标识符、序列号、选项数据一并返回请求方。嵌入式系统对PING的处理过程如下:
从PC端执行输入并执行程序PING(IP地址),即发出类型为8(表示回显请求)的ICMP报文。下位机收到该数据报后,修改接收到的数据报的类型为O(表示回响应答),计算校验和,其它内容均不变按原样发回给PC端。
第3章 硬件设计
3.1 总体描述
本文以基于ARM 的微处理器STM32F103RBT6为核心,结合W5500网络控制芯片实现了嵌入式以太网的连接,该接口设计具有硬件设计简单、成本低、集成高度以及软件开发周期短等优点,在自动化控制和数据传输领域有着广泛的市场和应用前景。系统框架如图3.1。
图3.1 系统框图
本设计利用SPI串行外设接口烧写程序到STM32内部的Flash内存存储器,网络传输状态指示灯(LED) 反映了数据传输的实时状态。电源由外部电源提供,分别经过芯片稳压转换输出5 V 和3.3 V 的电压,这样就能够很好地满足内核、外设以及外部电路的供电。
3.2 W5500芯片介绍
W5500 是一款全硬件TCP/IP 嵌入式以太网控制器,为嵌入式系统提供了更加简易的互联网连接方案。W5500 集成了TCP/IP 协议栈,10/100M 以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。全硬件TCP/IP协议栈,支持TCP ,UDP,IPv4,ICMP,ARP,IGMP 以及PPPoE协议。W5500 内嵌32K 字节片上缓存以供以太网包处理。8个独立端口同时工作;高速网络数据传输,速度可达到50 Mbps;支持混合网络TCP/IP协议栈(软件/硬件TCP/IP协议栈);支持存储器到存储器的DMA功能(只有16位数据总线宽度才支持,从模式);内嵌10BaseT/100BaseTX的以太网物理层;自动握手功能(全双工,半双工);自动MDI/MDIX(信号线极性交叉);LED网络指示;第三方物理(PHY)接口;支持8/16位数据总线;支持2种主机接口模式(直接访问模式和间接访问模式)等。为了减少系统能耗,W5500 提供了网络唤醒模式(WO L)及掉电模式供客户选择使用。W5500的主要特点:
支持硬件TCP/IP协议:TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE
支持8个独立端口(Socket)同时通讯
支持掉电模式
支持网络唤醒
支持高速串行外设接口(SPI模式0,3)
内部32K字节收发缓存
内嵌10BaseT/100BaseTX以太网物理层(PHY)
支持自动协商(10/100-Based全双工/半双工)
不支持IP分片
3.3V工作电压,I/O信号口5V耐压;
LED状态显示(全双工/半双工,网络连接,网络速度,活动状态)
48引脚LQFP无铅封装(7x7mm, 0.5mm 间距)
3.2.1 W5500引脚描述
W5500引脚图如图3.2
图3.2 W5500引脚图
W5500引脚类型见图3.3
图3.3 W5500引脚类型
W5500的引脚描述见表3.1
表3.1 W5500引脚描述
3.2.2 W5500的主机接口
W5500 提供了 SPI(串行外部接口)作为外设主机接口,共有 SCSn, SCLK, MOSI, MISO 4 路信号,且作为 SPI 从机工作。在可变数据长度模式中,如图3.4,W5500 可以与其他 SPI 设备共用 SPI 接口。但是一旦将 SPI接口指定给W5500之后,则不能再与其他 SPI 设备共用,然而,在固定数据长度模式,如图3.5,SPI 将指定给 W5500不能与其他SPI设备共享。
图 3.4 W5500可变长数据长度模
图3.5 W5500固定长度模式
SPI 协议定义了四种工作模式(模式 0,1,2,3)。每种模式的区别是根据SCLK的极性及相位不同定义的。SPI的模式0和模式3唯一不同的就是在非活动状态下,SCLK信号的极性。SPI 的模式0和3,数据都是在SCLK的上升沿锁存,在下降沿输出。W5500 支持SPI模式0及模式3.MOSI和MISO信号无论是接收或发送,均遵从从最高标志位(MSB)到最低标志位(LSB)的传输序列,如图3.6。
W5500 与外设主机的通讯受 SPI 数据帧控制。 W5500 的帧分为 3 段:地址段,控制段,数据段。 地址段为 W5500 寄存器或 TX/RX 内存指定了 16 位的偏移地址。 控制段指定了地址段设定的偏移区域的归属,读/写访问模式以及 SPI 工作模式(可变长度模式/固定长度模式)。数据段可以设定为任意长度(N-字节,1≤N)或者是固定的长度:1 字节,2 字节 或 4 字节;如果 SPI 工作模式设置为可变数据长度模式(VDM),SPI 的 SCSn 信号需要由外部 主机通过 SPI 帧控制。
在可变数据长度模式下,SCSn 控制 SPI 帧的开始和停止:
SCSn 信号拉低(高电平到低电平),即代表 W5500 的 SPI 帧开始(地址段); SCSn 信号拉高(低电平到高电平),即代表 W5500 的 SPI 帧结束(数据段的随机 N字节数据结尾)
图3.6 SPI模式0和3的采样
3.3 STM32F103芯片介绍
STM32 是基于ARM Cortex-M3 内核的32 位处理器,具有杰出的功耗控制以及众多的外设,最重要的是其性价比。其最高工作频率为72 MHz;内置高速存储器(512 KB Flash、64 KB RAM);丰富的增强I/O端口和外设资源,包括5路USART、2个12通道DMA控制器、3路SPI以及12位的ADC、DAC、FSMC、SDIO、USB、CAN、I2C等;具有标准和先进的通信接口;提供可编程电压检测器,保证整个系统的稳定工作,提高抗干扰能力;温度传感器直接与内部ADC相连,能够对器件周围环境的温度进行监测。STM32开发板实物图如图3.7。
该板具有的开发资源有:
◆ CPU:STM32F103RBT6,LQFP64,FLASH:128K,SRAM:20K;
◆ 1 个标准的JTAG/SWD 调试下载口
◆ 1 个电源指示灯(蓝色)
◆ 2 个状态指示灯(DS0:红色,DS1:绿色)
◆ 1 个红外接收头,配备一款小巧的红外遥控器
◆ 1 个IIC 接口的EEPROM 芯片,24C02,容量256 字节
◆ 1 个SPI FLASH 芯片,W25X16,容量为2M 字节
◆ 1 个DS18B20/DS1820 温度传感器预留接口
◆ 1 个标准的2.4/2.8 寸LCD 接口,支持触摸屏
◆ 1 个OLED 模块接口
◆ 1 个USB 串口,可用于程序下载和代码调试
◆ 1 个USB SLAVE 接口,用于USB 通信
◆ 1 个SD 卡接口
◆ 1 个PS/2 接口,可外接鼠标、键盘
◆ 1 组5V 电源供应/接入口
◆ 1 组3.3V 电源供应/接入口
◆ 1 个启动模式选择配置接口
◆ 2 个2.4G 无线通信接口(24L01 和JF24C)
◆ 1 个RTC 后备电池座,并带电池
◆ 1 个复位按钮,可用于复位MCU 和LCD
◆ 3 个功能按钮,其中WK_UP 兼具唤醒功能
◆ 1 个电源开关,控制整个板的电源
◆ 独创的一键下载功能
◆ 除晶振占用的IO 口外,其余所有IO 口全部引出,其中GPIOA 和GPIOB 按顺序引
图3.7 STM32开发板
STM32 的VBAT 采用CR1220 纽扣电池和VCC3.3 混合供电的方式,在有外部电源VCC3.3)的时候,CR1220 不给VBAT 供电,而在外部电源断开的时候,则由CR1220 给VBAT供电。这样,VBAT 总是有电的,以保证RTC 的走时以及后备寄存器的内容不丢失。该部分还有JTAG,部分JTAG电路图见图3.8。
图3.8 JTAG部分电路原理图
这里采用的是标准的 JTAG 接法,但是STM32还有SWD 接口,SWD只需要最少2跟线(SWCLK 和SWDIO)就可以下载并调试代码了,而且速度更快,能调试。STM32 的SWD 接口与JTAG 是共用的,只要接上JTAG,你就可以使用SWD 模式了,JLINKV8/JLINKV7 和ULINK2 都支持SWD。
3.4 接口设计
想要实现嵌入式系统与以太网之间的互联互通,那么接口设计就显得尤为重要了,STM32开发板与W5500网络控制芯片的连接如图3.9。
配置W5500 的INT引脚必须通过一个10 kΩ 的电阻接高电平, 以选择W5500 的SPI 接口模式, 置STM32F103 为SPI 主模式,W5500 为SPI 从模式, 在SPI总线模式下的配置复用输入输出接口(AFIO) 的PA5 、PA6、PA4 、PA7 分别为SCLK、MISO、/SCS (SPI 从模式选择, 低电平有效)、MOSI 信号线直接相连, 并用软件设置管脚的输出最大速度为10 MHz ,STM32F105V 通过SPI对W5500 读写操作。
配置PB5 口作为W5500 的复位信号/RST_W, 低电平有效。为实现准确的硬件复位, 复位引脚RST_W 上复位信号至少保持2 μs 。
配置PB1 口为外部中断线1(EXTI1) , 并作为W5500的中断信号输出端/INT, 低电平有效。当W5500 在端口产生连接、断开、接收数据、数据发送完成以及通信超时等条件下, 该引脚输出低电平信号指示微处理器。
配置PA8 口为W5500 输出的以太网物理层信号灯(LINKLED) 指示W5500 的网络连接状态, 通过上拉电阻输入到微处理器, 低电平有效。
图3.9 STM32开发板与W5500网络控制芯片接口
第4章 软件设计
4.1 总体设计
W5500固化了TCP/IP协议,所以我们只需要设计Socket接口。这样简化了设计流程,同时也降低微控制器的处理能力以及系统资源的使用。总体流程图见图4.1。
图4.1 总体流程 当Socket作为服务器模式时,初始化端口需要设置运行模式(Sn_MR) 和本机端口号(Sn_Port) ,并在端口命令寄存器打开(OPEN) 端口。引用Socket_Listen (SOCKET s)程序,只调用一次该程序就可使W5500 设置为服务器模式。主要程序如下所示。
void W5500_Socket_Set(void)
if(S0_State==0)//端口0初始化配置
if(S0_Mode==TCP_SERVER)//TCP服务器模式
if(Socket_Listen(0)==TRUE)
S0_State=S_INIT;
else
S0_State=0
else if(S0_Mode==TCP_CLIENT)//TCP客户端模式
if(Socket_Connect(0)==TRUE)
S0_State=S_INIT;
else
S0_State=0;
Else //UDP模式
if(Socket_UDP(0)==TRUE)
S0_State=S_INIT|S_CONN;
else
S0_State=0;
完成Socket 的打开和设置侦听工作后, 至于远程客户端是否与其连接, 则需要等待Socket 中断, 在服务器侦听模式下, 不需要设置目的IP 和目的端口号。
当端口接收数据时, 产生接收中断。首先调用端口接收数据包函数Process_Socket_Data () , 并对接收到的数据类型进行判断和加工。本过程先调用接收函数S_rx_process () 从W5500 端口的接收数据缓存区读取数据, 然后将读取的数据加上接收存储器读指针寄存器(S0_RX_RD) 的值再写入S0_RX_RD, 最后将RECV 命令重新写入端口0 的命令寄存器(S0_CR) , 以等待下次数据的接收。或者将处理完的数据拷贝到发送缓冲区, 再调用S_tx_process 函数发送数据包给CPU。主要程序如下:
void Process_Socket_Data(SOCKET s)
{
}
//本过程先调用S_rx_process()从W5500的端口接收数据缓冲区读取数据,然后将读取的数据从Rx_Buffer拷贝到Temp_Buffer缓冲区进行处理。处理完毕,将数据从Temp_Buffer拷贝到Tx_Buffer缓冲区。调用S_tx_process()发送数据。
System_Initialization(); //STM32系统初始化函数(初始化STM32时钟及外设) Load_Net_Parameters(); W5500_Initialization(); while (1) W5500_Socket_Set();//W5500端口初始化配置 if(W5500_Interrupt)//处理W5500中断 W5500_Interrupt_Process();//W5500中断处理程序框架 if((S0_Data & S_RECEIVE) == S_RECEIVE//如果Socket0接收到数据 S0_Data&=~S_RECEIVE;
unsigned short size; size=Read_SOCK_Data_Buffer(s, Rx_Buffer); memcpy(Tx_Buffer, Rx_Buffer, size); Write_SOCK_Data_Buffer(s, Tx_Buffer, size); //装载网络参数 W5500_Hardware_Reset(); //硬件复位W5500 //W5500初始货配置
Process_Socket_Data(0);//W5500接收并发送接收到的数据 else if(W5500_Send_Delay_Counter >= 500)//定时发送字符串 if(S0_State == (S_INIT|S_CONN)) S0_Data&=~S_TRANSMITOK; memcpy(Tx_Buffer,
口0发送23字节数据 其中Oxaa 和Ox55 为接收数据包的标志头;长度位为数据包字节长度,不包括数据包头和本身字符,命令位为对对象数据的操作,为0 时读取数据,为1 时设置对象数据,目标代码位用来显示对象代码,如Ox00 为网关IP 、Ox01 为子网掩码、0x02 为物理地址、LED 为状态显示等;数据位为接收到的数据,数据是以16 进制形式接收,最后再加上2 B 的数据报头和1 B 的数据本身。
4.2 TCP通信的实现
TCP是一种而向连接的协议,在进行数据通信之前,通信双方需要根据IP地址
和端口号,与对端建立1个套接,并依此实现数据的接收和发送。在建立套接连接的双方中,先发送连接请求的一方称为“TCP客户端”,另一方称为“TCP服务器”。下而以W5500作为“TCP客户端”为例,介绍TCP通信的实现方法. W5500工作流程如图4.1所示。
(1) 初始化:选择1个套接字,将Sn_MR配置为TCP模式,再配置好端口号、最大分片字节数、保持激活时间等寄存器,然后向Sn_CR写入OPEN命令,此时Sn _SSR状态应变为SOCK_INIT ,TCP端口初始化完成,其实现程序如下。
void W5500_Initialization(void)
图4.1 W5500TCP流程图
W5500_Init(); //初始化W5500寄存器函数
Detect_Gateway(); //检查网关服务器
(2) 建立服务器:初始化完成后,运行LISTEN命令,Sn_SR状态变为SOCK_ISTEN ,W5500工作在服务器模式,等待客户端的连接。当SN_SR状态变为SOCK_ESTABLISHED时,表明已有客户端成功连接,其实现程序如下。
unsigned char Socket_Listen(SOCKET s)
Write_W5500_SOCK_1Byte(s,Sn_MR,MR_TCP);//设置socket为TCP模式 Write_W5500_SOCK_1Byte(s,Sn_CR,OPEN);//打开Socket Delay(5);//延时5ms
if(Read_W5500_SOCK_1Byte(s,Sn_SR)!=SOCK_INIT)//如果socket打开失败 Write_W5500_SOCK_1Byte(s,Sn_CR,CLOSE)//打开不成功,关闭Socket return FALSE;//返回FALSE(0x00) Delay(5);//延时5ms
if(Read_W5500_SOCK_1Byte(s,Sn_SR)!=SOCK_LISTEN)//如果socket设置失败 Write_W5500_SOCK_1Byte(s,Sn_CR,CLOSE);//设置不成功,关闭Socket return FALSE;//返回FALSE(0x00) return TRUE;
Write_W5500_SOCK_1Byte(s,Sn_CR,LISTEN);//设置Socket为侦听模式
至此完成了Socket的打开和设置侦听工作,至于远程客户端是否与它建立连接,则需要等待Socket中断,以判断Socket的连接是否成功。参考W5500数据手册的Socket中断状态在服务器侦听模式不需要设置目的IP和目的端口号
(3) 接受数据:在本系统中采用查询的方式来判断W5500是否接收到数据。当接收数据宇节长度寄存器不为0时,表示接收到数据。默认情况下,数据包包头为数据的字节数,按照此字节数通过Sn_RX_FIFOR寄存器将数据从RX存储器中依次读出,数据全部读取完后,运行RECV命令即完成了数据的接收,其实现程序如下。
GPIO_SetBits(W5500_SCS_PORT, W5500_SCS);//置W5500的SCS为高电平 offset1+=rx_size;//更新实际物理地址,即下次读取接收到的数据的起始地址 Write_W5500_SOCK_2Byte(s, Sn_RX_RD, offset1);
Write_W5500_SOCK_1Byte(s, Sn_CR, RECV);//发送启动接收命令 return rx_size;//返回接收到数据的长度
(4) 发送数据:在发送数据前,需要查询端口的TX存储器的剩余空间的字节数。当TX存储器有足够的剩余空间时,方可将需要发送的数据通过Sn_TX_FIFOR依次写入到
TX存储器中。然后将数据长度写入Sn_TX_WRSR寄存器,运行SEND命令发送数据。 若非首次发送操作,在运行SEND命令前,必须检查上次发送操作是否产生SENDOK中断。如果上一次的SEND命令还没有执行完而又开始下一次的SEND命令,将会产生错误,其实现程序如下。
void SPI1_Send_Short(unsigned short dat) SPI1_Send_Byte(dat/256);//写数据高位 SPI1_Send_Byte(dat); //写数据低位
(5) 断开连接和关闭端口:当接收到对端发来的断开连接请求,将执行断开连接 的处理,W5500状态变为SDCK_ISTEN。亦可运行DISCDN命令来断开与客户端的连接。 若连接请求、数据传输、断开连接请求或其响应等数据包在设定的时间内没有发送出去,将产生TCP超时,W5500。状态变为SDCK_CLOSED,端口关闭。亦可运行CIOSE命令关闭端口,其实现程序如下。
i=Read_W5500_1Byte(SIR);//读取端口中断标志寄存器 if((i & S0_INT) == S0_INT)//Socket0事件处理
j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器 Write_W5500_SOCK_1Byte(0,Sn_IR,j);
if(j&IR_CON)//在TCP模式下,Socket0成功连接
S0_State|=S_CONN;//网络连接状态0x02,端口完成连接,可以正常传输数据 if(j&IR_DISCON)//在TCP模式下Socket断开连接处理
Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//关闭端口,等待重新打开连接 Socket_Init(0);//指定Socket(0~7)初始化,初始化端口0
S0_State=0;//网络连接状态0x00,端口连接失败
4.3 UDP通信的实现
UDP是一种无连接的通信协议,不需要建立类似于TCP的SOCKET连接,因此它允许同多个已知IP地址和端口号的对端进行通信。W5500支持UDP单播、广播和多播通信。其中广播的实现方法与单播基本相同,区别在于单播的口的地址是1个确定的IP地址广播则使用广播地址(255.255.255.255 )。UDP通信实现过程流程如图4.2。
(1) 初始化:将Sn_MR配置为UDP单播模式,在配置多播模式时,还需配置多播分组硬件地址、多播分组IP地址和多播分组端口号。然后运行OPEN命令,此时Sn_SSR状态应变为SOCK_UDP,其实现程序如下。
void W5500_Socket_Set(void)
if(S0_State==0)//端口0初始化配置 if(Socket_UDP(0)==TRUE) S0_State=S_INIT|S_CONN; else S0_State=0;
图4.2 UDP通信流程图
(2) 接受数据:在UDP模式下,接收数据的操作和TCP模式大致相同,不同的是UDP数据包含有8个字节的数据包头,包含了发送端的IP地址、端口号和数据包字节长度及附加值等信息[6] 。
(3) 发送数据:在UDP模式下,需要在执行SEND命令前,设置口的IP地址和口的端口号。对于UDP多播模式,因为已经在初始化过程中设置了多播分组的信息,因此不需要再设置口的IP地址和口的端口号,只需要将数据写入到TX存储器,然后运行SEND命令,程序如下。
if((Read_W5500_SOCK_1Byte(s,Sn_MR)&0x0f) != SOCK_UDP)//如果Socket打开失败
Write_W5500_SOCK_4Byte(s, Sn_DIPR, UDP_DIPR);//设置目的主机IP 设置目的主机端口号
Write_W5500_SOCK_2Byte(s,Sn_DPORTR, UDP_DPORT[0]*256+UDP_DPORT[1]);//(4) 中断设置:本设计采用中断方式来处理数据包的接收和发送,以提高效率。在W5500 处理中断的过程中, 微处理器首先通过应访问W5500的中断寄存器获得产生中断的来源。中断寄存器与中断屏蔽寄存器配合使用,且位是一一对应的,中断屏蔽寄存器(IMR)的相应位可屏蔽中断寄存器中任何中断源。因此, 若要使用某个中断源,先
要将该中断源在中断屏蔽寄存器中的相应位置位,以打开所需的中断源,这样,中断才会产生。当中断产生后, 即进入中断处理程序。本设计中的中断源主要包括端n中断事件。一般设置有Socket 成功连接S_IR_CON),断开连接(S_IR_DISCON),数据发送完成(S_IR_SENDOK),接收到数据(S_IR_RECV)以及传输超时(S_IR_TIMEOUT)等事件中断,其程序如下。
void NVIC_Configuration(void)
NVIC_InitTypeDef NVIC_InitStructure;//定义NVIC初始化结构体 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//设置中断优先级组为1,优先组(可设0~4位)
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_Init(&NVIC_InitStructure);
W5500_NVIC_Configuration(); //W5500 接收引脚中断优先级设置
//设置中断向量号 //设置响应优先级
//使能NVIC
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢先优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
第5章 仿真与测试
5.1 TCP客户端模式通信的实现测试
W5500的端口0工作在客户端模式:主动与《TCP&UDP测试工具》上创建的服务端连接,服务器界面如图5.1,并且以1000ms的时间间隔定时给服务端发送字符串
图 5.1 服务器界面
将W5500的网络参数配置好,在本次测试中,网关为192.168.1.1,IP地址为192.168.1.199,子网掩码为255.255.255.0,端口0的端口号为5000,目的IP地址为192.168.1.100,目的端口号为6000。如图5.2.
在完成上述配置后,在Keil uVision4平台上将程序运行,如图5.3。
图5.3 DEBUG界面
图5.2 服务端设置界面
在完成上述配置后,可以在CMD界面使用PING,来测试两端是否可以传输数据,本次测试结果如图5.4。
图5.4 PING测试结果
由图5.4所示本次PING测试是成功的,在服务器界面点击连接,就可以建立TCP的服务器与客户端之间的通信,如图5.5。
图5.5 测试结果图
5.2 UDP通信的实现测试
W5500的端口0工作在UDP模式,端口通信不需要建立连接即可接收其它UDP模式端口发来的数据, 数据的前4个字节为对方端口IP地址,第5、6个字节为端口号,获得对方IP和端口号后W5500端口, 将定时给对应端口发送字符串
将W5500的网络参数配置好,在本次测试中,网关为192.168.1.1,IP地址为192.168.1.199,子网掩码为255.255.255.0,端口0的端口号为5000,目的IP地址为192.168.1.190,目的端口号为6000。将配置完成后,操作与TCP通信的实现相同,在此不在赘述。测试结果如图5.6。
图5.6 UDP通信测试结果
总结与展望
本文主要论述了以STM32为嵌入式系统,以W5500为核心的以太网接口研究,分析了实现网络传输所必须用到的几种不同层的通信协议,主要介绍在嵌入式系统中常用的UDP/TCP协议。采用UDP/TCP协议可以简化网络协议的软件设计工作,可以用较少的代码实现完整的通信功能。从硬件和软件上分别介绍了如何在嵌入式系统中设计以太网接口的方法,并实现了TCP和UDP的通信。嵌入式系统设备可以实现与internet与intranet的无缝连接。前面研究了采用以太网接口与PC实现通信的几种网络协议,利用这些协议基本上就可以实现Clien/Server结构的Intranet网络连接。这样就可以实现嵌入式系统设备的远程管理、维护、检测等功能。
由于网络技术的发展速度很快,特别是Internet/Intranet技术的快速发展,在嵌入式系统中集成以太网接口不仅仅局限在工业测控方面的应用,在其它领域如家用电器联网等民用范畴也有广泛的应用前景。目前住宅小区和家庭已经比较普遍地采用以太网方式接入,因此要实现上网的家电一般需要一个网关,在该网关中实现以太网网络协议的转换并与智能家电连接,获取相关数据,这样主人可以通过远端的计算机连接到该网关实现远程监控的目的。
随着半导体技术的飞速发展,嵌入式系统的设计方法也在不断地更新。嵌入式处理器的处理速度越来越快,配置的外设越来越多,以前需要很多芯片完成的功能现在可以在一块或少数的几块芯片就能完成。这样就大大地简化了设计,使得系统更简单,同时可靠性反而提高了。但对设计人员的要求是必须及时地掌握新的设计方法,了解各种新的芯片的性能,这样才能比较合理地设计出一个性能较高的系统。对于以太网接口的设计也是一样,应该不断地掌握新的相关信息,合理地选用芯片,这样就能做到事半功倍的效果。
目前已经有较多的内置以太网接口功能部件的嵌入式处理器可以使用,如集成以太网MAC层的ARM内核的ATg1SAM7X系列芯片、ATglSAM9260、S3C4510B等,集成了MAC和物理层的Lu而naryLM356000系列芯片。采用这类处理器作为设计具有以太网接口功能的嵌入式系统的核心是今后发展的趋势,也是将来需要进一步研究的课题。在软件设计方面,如果嵌入式系统的速度较快,内存容量较大,就可以考虑采用实时嵌入式操作系统(RTOS)来进行软件编程。目前大多数的RTOS中都有完整的TCP/IP协议栈,可以根据要求裁减其中的一部分,由于RTOS中的代码通常都是比较成熟的,这样就能有效地提高软件设计的效率,又能保证较高的可靠性。今后还需要进一步研究采用RTOS来实现TCP/正协议的方法,如采用CLinux等操作系统实现网络通信协议。
总之,嵌入式系统的设计应随着新技术的发展及时地跟进,尽量采用一些目前国际上主流的产品和技术,刁一能设计出性能价格比更高的产品。
参考文献
[1] 潘辉.STM32_FSMC机制的Flash存储器扩展技术[J].单片机与嵌入式系统应用,2011,34(1):258-260.
[2] 王晓廷.以太网技术与应用[M].北京:人民邮电出版社,2005:15-18,31.
[3] 王强,张和生,叶华.交通信息采集的UDP通信方法[J].电子测量与仪器
学报,2009,23(3):39-44.
[4] 尹岗.基于ARM的以太网通信控制器的设计[J].电子测量技术,
2009,32(10):133-35.
[5] 王健.基于TOE技术的嵌入式以太网接口设计[J].工业仪表与自动化装置,2010,34(6):34-36.
[6] 乔立岩,梁宇,赵浩然,朱建平.基于W5300的以太网接口设计[J].电子
测量技术,201,35(7):129-132.
[7] 陈峰,易彬,罗春彬.基于嵌入式技术的以太网接口设计[J].通信技术,2010,43(5):127-129.
[8] 于春雪.STM32F103的高速以太网接口设计[J].单片机与嵌入式系统应用,2011,49(5):43-45.
[9] 李文生,黄杰勇,邓春建.嵌入式以太网接口及精简网络协议的非常规实现[J].通信技术,2009,42(01):149-151.
[10] 徐功伟,戴雪峰,刘树东.嵌入式以太网控制器设计[J].通信技术,2011,49(5):43-45.
[11] 兰少华,杨余望,吕建勇.TCP/IP详解[M].北京:清华大学出版社,
2006:15-18,31.
[12] 葛永明,林继宝.嵌入式系统以太网接口设计[J].电子技术应用,
2002,49(3):25-28.
[13] 杨震斌.基于AX88796的以太网接口设计与实现[J].微计算机信息,2007,14(3):49-50.
[14] 李永胜,黄兰红,刘红军.基于UDP协议的多文件传送[J].广西民族大学
学报,2007,49(3):68-72.
[15] Kyok Kim, Hongki Sung, Hoonbock Lee.Performance analysis of the TCP/IP protocol under UNIX operating systems for high performance computing and communications[J].Proceedings, 2005, 17(4): 123-128.
29
致 谢
入校求学至今己有四年,依然清晰地记得高考时的那份执著,接到录通知书时的那份 兴奋,报到时的那份骄傲„„,今天,所有的一切都即将永久地存入我的记忆中。经过前期的大量准备及自己的专心写作,学士的学位论文到今天接近尾声了,这也预示着我四年的大学生涯即将结束。值此学士论文完稿之际,谨向帮助过我与我共同度过这段美好时光的老师、同学和家人致以诚挚的谢意。
感谢我的导师邹豪杰副教授,从论文的选题、构思、初稿修改直到最后定稿,导师都倾注了大量的时间和心血,提出了宝贵的建议和意见;同时,他们的严谨的学风、强烈的责任感、谦和的态度深深地感染了我,我将铭记终身。
感谢系里的老师,你们无私的知识传授,拓展了我的知识视野。
感谢我至亲至爱的同学,四年里,我们情同手足,在我需要的时候,给了我最温暖的问候与最无私的帮助,衷心地祝福你们,前程美好!
最后,谨以此文献给我挚爱的双亲。
学生签名:
日 期: 年 月 日
30