基于单片机以太网通信模块的软件设计.docx
- 文档编号:23262144
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:37
- 大小:241.59KB
基于单片机以太网通信模块的软件设计.docx
《基于单片机以太网通信模块的软件设计.docx》由会员分享,可在线阅读,更多相关《基于单片机以太网通信模块的软件设计.docx(37页珍藏版)》请在冰豆网上搜索。
基于单片机以太网通信模块的软件设计
第1章绪论
1.1选题的目的与意义
随着信息技术的飞速发展,Internet应用己经深入到生活的方方面面。
传统的互联网应用以PC为中心,现在已开始转向以嵌入式设备为中心,许多嵌入式设备尝试着接入Internet。
嵌入式系统己经广泛地渗透到航空、汽车电子、工业生产、通信、消费电子以及人们日常生活的方方面面。
IA(InternetAppliance)概念现在甚为流行,这表明互联网应用进入嵌入式互联网的时代己经来临。
中国计算机学会(ChinaComputerFederation)于1999年6月举行了“嵌入式系统及产业化在中国的发展前景”研讨会,专家们探讨了嵌入式系统在当今计算机工业中的地位及其网络化问题,认为下一代网络设备中嵌入式设备将大大增加,互联网上传输信息的70%将会来自小型嵌入式系统。
随着嵌入式系统更广泛的应用以及网络的进一步普及,嵌入式系统接入网络已成为嵌入式系统应用的一个重要方向和必然结果。
嵌入式Web服务器是嵌入式系统网络化应用的重要方面。
把嵌入式系统作为Web服务器与Internet相连接很适合于远程监控和生产过程控制等系统,通过特定的手段采集数据,利用远程浏览器通过访问嵌入式Web服务器就可以直接监控现场设备的运行,提高生产效率和管理水平。
在嵌入式系统上实现WEB服务器,不仅克服了嵌入式系统用户界面死板甚至无界面的缺点,同时也为嵌入式系统的远程应用提供了一种人机可交互的方便的操作方式,从而使嵌入式MCU以WEB服务器的方式提供给客户端。
在嵌入式系统网络化应用日趋流行的今天,设计和实现微处理器的网络接入是一个很有现实意义的问题,可以实现基于Internet的远程数据采集、远程控制、自动报警、上传/下载数据文件、自动发送E-mail等功能,同时也为IST(InternetSensorTechnology网络传感器技术)、HVAC(家庭环境自动控制)、局部环境自动监测、智能小区管理、网络自动抄表等技术的应用与发展提供技术保证。
8051系列微处理器被广泛应用于从军事、自动控制到PC机上的键盘上等各种应用系统中,很多制造商都可提供8051内核系列单片机,像Intel、Philips、Atmel、Siemens等。
这些制造商给51系列单片机加入了大量的性能和外部功能,像I2C总线接口、模拟量到数字量的转换、看门狗、PWM输出等,更加丰富了8051单片机的功能和外围接口。
不少芯片的工作频率达到40MHz,工作电压下降到1.5V,由于这些功能都是基于同一个内核,使得8051单片机很适合作为厂家产品的基本构架。
同时由于基于8051系列微处理器的硬件系统价格低廉,因此对于那些需要开发低成本产品的项目来说是一种不错的选择。
而伴随着Internet遍布于全世界的每个角落,对于大量低端的以8051系列微处理器为核心的小型嵌入式设备来说,把其作为一个简单的WEB服务器,借助于Internet来传送各种测量和控制信息,可以使人们在任何时候,任何地方实时监控现场设备和数据,还可以在远方对现场设备进行诊断和软件升级,具有快速、方便、可靠的特点。
因此单片机如何控制以太网网卡控制器进行数据传输,如何嵌入TCP/IP协议使其连接到互联网,这些都具有深远的意义。
1.2本课题在国内外的发展现状
近几年来,国外投入嵌入式Internet研究的公司逐渐增多,参与研究的公司规模差异也越来越大,大的如Philips、Microsoft、NEC、Motorola等公司,小的则是一些刚刚成立的高科技公司。
下面主要介绍一些国外公司在嵌入式Internet领域的研究状况。
1)iReady公司致力开发各种TCP/IP堆栈处理器硅片解决方案。
它己成功开发TCP/IP堆栈技术,这种独特的技术可提供全面的传送卸载支持,确保以太网网络可以发挥极高的性能。
多家公司已获许可使用iReady的硬件加速TCP/IP堆栈技术,有关公司包括Toshiba、SeikoInstruments、Sony及AgilenteSeiko公司在此基础上推出IC芯片S7600A芯片,将TCP/IP协议栈用硬件方法予以实现。
2)AcceleratedTechnologies公司开发的NucleusPlus实时核心软件,提供了完整的TCP/IP协议栈,包括全部源程序(称为NucleusNet,价格约为14995美元)。
3)美国EmWare公司提出嵌入式微互联网EMIT(EmbeddedInternetTechnology)运行技术,即嵌入式微型网络技术,将串口设备接入Internet,实现基于Internet的远程数据采集、智能控制、上传/下载数据文件等功能。
松下电工的家庭网络中间件,核心技术即采用的EmWare公司开发的EMIT构架。
4)在工业测控领域,1999年成立的“工业以太网协会”(IEA)正在积极致力于工业以太网现场总线的研究开发,美国OPT022公司采用嵌入式Internet技术,研制开发了“以太网I/O系统”-SNAPI/O系统,成功应用于工业控制过程、楼宇智能化监控等多项工程中。
此外,惠普公司应用IEEE1451.2标准,生产的嵌入式以太网控制器具备10-BaseT接口,运行FTP/HTTP/TCP/UDP协议,应用于传感器、驱动器等现场设备。
而国内嵌入式Internet技术的研究才刚刚起步,有一些公司也正在积极研究嵌入式Internet技术,但成果没有国外的丰硕,且大多停留在理论阶段。
对工业控制网络领域的理论研究主要局限于现场总线网络上,对建立工业以太网控制网络还未进入到实质研究阶段。
在产品开发方面,北京英贝多公司研发出了基于芯片的微型Internet网关和瘦服务器,为迎接Internet向嵌入式领域发展的第三阶段做好基础性准备。
另外武汉力源公司也推出了专用网络接口芯片PS2000以及一款用于连接电子设备和Internet网络的集成电路Webchip,其内部固化了MCUNET协议,该协议与EmGateway和OSGI协议兼容。
这种应用系统通过Webchip网络芯片与Gateway连接,再接入Internet。
目前国内己经有基于该芯片的相关应用开发。
可见,如何通过互联网共享以“微控制器”(MCU,MicroControllerUnit)为中心的小型嵌入式设备相关的信息,也即如何使MCU成为Web服务器是当今嵌入式研究领域中的一项重要内容。
1.3本课题要解决的主要问题
本文主要是针对以RAT8019AS单片机为硬件平台的中低档嵌入式系统,用C5l编程语言开发一个适合小型系统使用的轻型嵌入式TCP/IP协议。
具体的工作主要有:
(1)RTL8O19AS的驱动编程,为TCP/IP协议栈的开发提供易用的接口。
(2)从实际成本出发,本文采用低档单片机直接控制网卡芯片,在单片机中实现TCP/IP协议的方案。
(3)在本文对网络协议做了详细的阐述,特别是本设计中需要进行设计的几个协议,IP协议、ARP协议、UDP协议。
(4)精简TCP/IP协议的编程,这是本课题的重点所在。
(5)联机调试,完成各层协议的测试。
第2章TCP/IP协议
TCP/IP协议即传输控制协议/网际协议是发展至今最成功的通信协议,它被成功应用于当今所构筑的最大的开放式网络系统Internet之上就是其成功的明证。
Internet最初的设计是为了满足美国国防部的需要,今天Internet已经发展得更加商业化,更加面向消费者,尽管基本目的发生了改变,但其最初的所有质量标准(也就是开放式、抗毁性和可靠性)依然是必需的。
这些特性包括可靠传输数据、自动检测和避免网络发生错误的能力。
TCP/IP是一个开放式的通信协议,开放性意味着在任何组合间,不管这些设备的物理特征有多大差异,都可以进行通信。
本章主要介绍了TCP/IP协议分层模型及其工作原理,并按照由下向上的顺序介绍了TCP/IP协议族中最重要的一些协议如ARP、IP、ICMP、UDP、TCP、HTTP等。
其中结合本课题的需要,重点介绍了IP协议和TCP协议。
如同0SI参考模型,TCP/IP也是一种分层模型。
它是由基于硬件层次上的四个概念性层次构成,即应用层、传输层、IP层和数据链路层。
图2.1给出了TCP/IP的概念性层次结构图。
概念性层次层次之间的传递对象
报文或字节流
传输协议分组
IP数据包
特定网络帧
图2.1TCP/IP概念性层次结构
2.1TCP/IP分层模型的工作原理
TCP/IP协议是一个大的协议族,其中一些常用协议在TCP/IP分层模型中所处的位置如表2.1所示。
数据包在TCP/IP在协议栈中流动的时候,也是由上至下或由下至上,逐层进行传输的。
在TCP/IP参考模型中,每个实体和另一个系统的同层实体按协议进行通讯,而一个系统内实体和上下层间的通讯,则通过接口进行。
表2.1协议在TCP/IP分层模型中的位置
应用层
HTTPFTPTelnetE-mailDNS等
传输层
TCP
UDP
IP层
IPICMPARP
数据链路层
介质访问控制协议MAC,以太网协议
物理层
网路接口芯片
不同系统间同层实体间的数据传输过程如图2.2所示。
图2.2数据包在TCP/IP分层模型中的传输过程
在整个协议层次结构中,通信协议使用了复用和分解的技术。
发送方在报文中加入报文的类型、选用的协议等附加信息,在接收方收到分组后,参考附加信息对收到的分组进行分解,根据其中的协议类型选择相应的协议进行处理,图2.3是IP包的去复用过程。
图2.3IP数据报的去复用过程
2.2数据链路层协议
数据链路层(DataLinkLayer)是TCP/IP协议族的最底层,它负责接受IP数据报并把数据报通过选定的网络发送出去,或者从网络上接收物理帧,抽取出IP数据报,交给IP层。
数据链路层一般可再细分为介质访问控制子层MAC和逻辑链路控制子层LLC。
MAC子层的协议实现一般是由MAC接口芯片来完成的;而LLC子层的实现一般是由网络接口芯片的驱动程序来完成的。
除此之外,数据链路层典型的协议就是地址解析协议ARP(AddressResolutionProtocol)。
以太网的网络接口层支持的是48位以太网地址,而网络层支持的是32位的IP地址。
ARP协议的功能是为32位IP地址到对应的48位以太网物理地址之间提供动态映射,将上层的仲地址与底层的物理地址进行绑定,它形成了只能使用IP地址的上层协议软件与只能使用物理地址的下层设备驱动程序软件之间的分界线。
以
太
网
首
部
位
功能描述
48
以太网目的地址
48
以太网源地址
16
以太网帧类型(ARP-0X0806IP-X0800)
以
太
网
ARP
字
段
16
硬件类型(以太网-1)
16
协议类型(ARP-0X0806IP-X0800)
8
硬件地址的长度(以字节数计算,ARP请求或应答为6)
8
协议地址的长度(以字节数计算,ARP请求或应答为4)
16
操作码(ARP请求1,ARP应答2)
6
发送端以太网地址
4
发送端的协议地址(IP地址)
6
目的端以太网地址
4
目的端的协议地址(IP地址)
图2.4ARP报文格式图
当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应以太网地址的映射。
如果查到匹配结点,则相应的以太网地址被写入以太网帧首部,数据包被加入输出队列等候发送。
如果查询失败,APR会先广播一个询问目的主机硬件地址的APR报文,等到收到回答后再将数据包发送出去。
APR包格式如图2.4所示。
2.3IP层协议
IP层主要提供传输层数据分片、封装和路由功能以及控制报文的生成与传送服务。
IP层是TCP/IP协议族的核心。
IP层的主要协议是网际协议IP(InternetProtocol)和网络控制报文协议ICMP(InternetControlMessageProtocol)。
IP协议提供了一种不可靠的、尽最大努力传送的、无连接分组传送服务。
所谓不可靠,指的是不能保证正确传送,分组可能丢失、重复、延迟或不按序传送,而且服务不检测这种情况,也不通知发送方和接收方。
所谓无连接,是指每个分组都是独立处理的,可能经过不同的路径,有的可能丢失,有的可能到达。
所谓尽最大努力传递,指的是协议栈软件尽量传送每个分组,只有当资源用尽或底层网络出现故障时,才会出现不可靠服务。
2.3.1IP首部结构
IP数据报的首部格式如图2.5所示。
普通的IP首部长为20个字节,除非含有选项字段。
0151631
4位版本
4为首部长度
8位服务类型(TOS)
16位总长度(字节数)
20
字
节
16位标识
3位标志
13位偏移
8位生存时间(TTL)
8位协议
16位首部效验和
32位源IP地址
32位目的IP地址
选项(如果有)
数据
图2.5IP数据报的首部格式
IP数据报首部各数据域的含义分析如下:
◆IP版本号:
目前的协议版本号是4,因此IP有时也称为工Pv4。
IP协议的下一个版本是Ipv6,这也是当今互联网界研究的热点。
◆首部长度:
指明IP首部中32bit字的数目,包括任何选项。
由于它是一个4比特的字段,因此IP首部最长为60个字节。
.
◆服务类型:
TOS(TypeofService)指服务是否是最小时延,最大吞吐量,最高可靠性,或最小费用之中的一种。
目前大多数TCP/IP栈的实现都不支持TOS特性。
◆总长度:
总长度字段是指整个IP数据报的长度,以字节为单位。
利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。
由于该字段长16比特,所以IP数据报最长可达65535字节。
◆标识:
标志字段唯一的标志主机发送的每一份数据报,通常每发送一份报文,它的值就会加1。
◆标志和片偏移:
这两个数据域主要用于IP数据报的分片。
◆生存时间TTL:
生存时间字段TTL(time-to-1ive)设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。
◆协议字段:
该字段表明IP数据报所采用的上层协议的类型。
IP数据报的去复用就是根据该协议字段进行的。
◆首部校验和:
首部检验和字段是根据IP首部计算的检验和码。
为了计算一份数据报的IP检验和,首先把检验和字段置为0。
然后,对首部中每个16bit进行二进制反码求和(整个首部看成是由一串16bit的字组成),结果存在检验和字段中。
它不对首部后面的数据进行计算。
当收到一份IP数据报后,同样对首部进行校验。
由于接收方在计算过程中包含了发送方存在首部中的校验和,因此,如果首部在传送过程中没有发生任何错误,那么接收方计算的结果应该为全1。
如果不是全1(即校验和错误),那么IP就丢弃收到的数据报,但是IP层并不生成差错报文,而是由上层协议去发现数据报的丢失并进行重传。
2.3.2ICMP协议简介
最初设计的ICMP仅仅为了路由器向主机报告投递出错原因,但发展到现在ICMP在两台主机上的协议软件之间能提供了通信,因此产生了多种ICMP报文。
尽管每个ICMP报文有自己的格式,但它们都以相同的三个字段开始:
比特整数的报文类型(TYPE)字段用来标识报文;一个8比特的代码(CODE)字段提供有关报文类型的进一步信息,以及一个16比特校验(CHECKSUM)字段。
各种报文类型如下图2.6所示。
类型字段
ICMP报文类型
0
回送应答
3
目的地不可达
4
源站抑制
5
重定向
8
回送请求
11
数据报超时
12
数据报参数错
13
时间戳请求
14
时间戳应答
17
地址掩码请求
18
地址掩码应答
图2.6ICMP报文类型
2.4传输层协议
传输层(TransportLayer):
传输层为其上层运行的应用层协议提供不同层次的端到端的通信服务。
TCP/IP协议模型定义了两个传输层协议:
传输控制协议TCP(TransmissionControlProtocol)和用户数据报协议UDP(UserDatagramProtocol)。
UDP提供无连接的、开销最小的、快速但不可靠的端到端通信服务。
主要应用于三个领域:
1)依赖广播方式传输的TCP/IP控制应用,例如域名解析服务DNS、引导协议BOOTP和动态主机配置协议DHCP等;
2)有规则重传信息的面向网络的服务,例如路由信息协议RIP和简单网络控制协议SNMP等;
3)对一传输实时性和效率要求高且对分组丢失不敏感的Web多媒体业务。
TCP为应用层协议提供了面向连接的、可靠的服务。
应用于数据传输量大且可靠性要求高的业务,例如远程通信网络协议Telnet、文件传输协议FTP、简单邮件传输协议SMTP和超文本传输协议HTTP等。
TCP全权负责确保所有数据段都已安全正确地到达了目的端,并且能重组成正确的序列。
TCP协议包括:
面向连接的服务、分组确认、差错检测、分组重传、分组排序和流量控制。
2.4.1UDP首部
UDP协议首部(包含UDP伪首部)的各字段如图2.7所示。
32位源IP地址
UDP
伪首部
32位目的IP地址
0
8位协议
16位UDP长度
16位源端口号
16位目的端口号
16位UDP长度
16位UDP效验和
数据
填充字节(0)
图2.7UDP首部格式
UDP首部各字段的含义:
◆源、目的端口号:
端口号是用来区分同样使用UDP协议的不同发送进程和接收进程的。
◆UDP长度:
UDP的长度字段指的是UDP首部和UDP数据的总长度。
◆UDP校验和:
UDP的校验和不同于仲校验和,它覆盖UDP首部和UDP数据,但校验算法跟IP校验是相同的。
2.4.2TCP首部
TCP数据被封装在一个IP数据包内。
首部的数据格式如下图2.8所示,如果不计任选字段,它通常是20个字节。
0151631
16位源端口号
16位目的端口号
32位序列号
32位确认序号
4位首部长度
保留(6位)
U
R
G
A
C
K
P
S
H
P
S
T
S
Y
N
F
I
N
16位窗口大小
16位效验和
16位紧急指针
选项
数据
图2.8TCP首部格式
TCP首部各字段的含义和功能:
◆端口号:
源端口号和目的端口号,用于寻找发端和收端的应用进程。
这两个端口值加上IP首部中的源端IP地址和目的端IP地址组成四元组,可以唯一确定一个TCP连接。
◆序号:
TCP序号用来标志从TCP发端向TCP收端发送的数据字节流,它表示在这个数据报文端中的第一个数据字节。
序号是32bit的无符号数,序号计满后回绕到0开始计数。
当建立一个新的TCP连接时,在发送出去的同步包中,序号字段包含由这个主机选择的该连接的初始序号ISN(InitialSequenceNumber),该主机要发送的第一个数据字节的序号为工SN加l。
◆确认序号:
确认序号包含发送确认的一端所期望收到的下一个序号,确认序号应该是上次已成功收到的数据字节序号加1。
只有ACK标志为1时,确认序号字段才有效。
◆今首部长度:
该字段给出TCP首部中32bit字的数目。
◆6个标志位:
这6个标志位用处很大。
1)URG紧急指针有效。
2)ACK确认序号有效。
3)PSH接收方应该尽快将这个报文段交给应用层。
4)RST重建连接。
5)SYN同步序号用来发起一个连接。
6)FIN发端完成发送任务。
◆窗口大小:
该字段TCP的滑动窗口协议中用到。
标志着当前可用的数据发送、接收缓冲区的大小。
◆校验和:
校验和覆盖了整个TCP报文段,是一个强制性的字段,一定由发端计算和存储,并由收端进行验证。
◆紧急指针:
紧急指针是一个正的偏移量,和序号字段的值相加表示紧急数据的最后一个字节的序号。
TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
2.5应用层协议
应用层(ApplicationLayer):
应用层功能有许多不同的形式,包含所有产生网服务请求的高层协议,为希望通信的进程提供端到端的、与网络无关的传输服务。
HTTP协议(HypertextTransferProtocol,超文本传输协议)是用于从WWW(WorldWideWeb)服务器传输超文本到本地浏览器的传送协议。
它可以使浏览器更加高效,使网络传输减少。
由于HTTP协议是基于请求/响应模式的(相当于客户机/服务器模式)。
一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:
统一资源标识符(URL)、协议版本号,后边是MIME(通用Internet邮件扩充)信息包括请求修饰符、客户机信息和其它可能的内容。
第3章网络接口芯片的驱动
在OSI网络模型中,数据链路层的逻辑链路控制子层(LLC)的部分工作是由网络接口芯片驱动程序来做的,其它部分则集成在网络接口芯片中由硬件实现。
本章首先分析了RTL8019AS的内部RAM结构,然后在此基础上分复位和初始化,数据包的接收以及数据包的发送三个部分,重点分析了RTL8019AS的驱动程序的编写过程,并给出了相应的程序编制流程图。
驱动程序封装了网络接口芯片的底层操作,为以后协议栈程序的编写带来了很大的方便。
3.1RTL8019AS的内部RAM结构
RTL8029AS和RTL8019AS的内核其实是一样的,都是NE2000兼容的寄存器结构,都有一样大小的RAM,读取和操作的方法都是一样的。
事实上对RTL8029AS的驱动跟RTL8019AS的驱动除了PCI接口配置部分不同外,其余NE2000兼容的寄存器部分的驱动都是一样的。
下面只对RTL8019AS进行讨论。
D15D0
PROM
ALIASED
PROM
8K*16
BUFFERRAM
ALIASED
PROM
ALIASED
BUFFERRAM
0000H
001FH
4000H
7FFFH
8000H
C000H
图3.1RTL8019AS的内部RAM结构图
RTL8019AS有两块RAM,一块16k字节的RAM的地址为0x4000~0x7fff,一块32字节的RAM的地址为0x0000~0x00lf。
其内部RAM的存储是分页的,每256个字节称为一页。
RTL8019AS的内部RAM分布如图3.1所示。
其16位内部RAM地址的高8位表示的是RAM的页地址,例如:
0x4000~0x40ff是一页,我们称该页为第0x40页。
整个RAM空间的利用情况如表3.1所示:
表3.1RTL8019AS内部RAM的利用情况
页码
地主范围
附注
0
0x0000---0x00ff
可以使用
0x01---0x3F
0x0100---0x3fff
空,不能使用
0x40---0x7F
0x4000---0x7fff
可以使用
0x80---0xFF
0x8000---0xffff
跟0x0000---0x7fff的内容是一样的(不要使用它)
其中,第0页的内存又叫Prom,是Ne2000兼容的网络接口芯片都有的。
Prom实际上只有32字节,地址范围为0x0000~0x00lF,其它地址0x0020~0x00FF存储的内容跟0x0000~0x00lf部分是完全重复的。
RTL8019AS内部RAM的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 以太网 通信 模块 软件设计