基于Linux内核的嵌入式串口通讯程序设计论文.docx

上传人:b****5 文档编号:14377639 上传时间:2023-06-22 格式:DOCX 页数:25 大小:269.20KB
下载 相关 举报
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第1页
第1页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第2页
第2页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第3页
第3页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第4页
第4页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第5页
第5页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第6页
第6页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第7页
第7页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第8页
第8页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第9页
第9页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第10页
第10页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第11页
第11页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第12页
第12页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第13页
第13页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第14页
第14页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第15页
第15页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第16页
第16页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第17页
第17页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第18页
第18页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第19页
第19页 / 共25页
基于Linux内核的嵌入式串口通讯程序设计论文.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Linux内核的嵌入式串口通讯程序设计论文.docx

《基于Linux内核的嵌入式串口通讯程序设计论文.docx》由会员分享,可在线阅读,更多相关《基于Linux内核的嵌入式串口通讯程序设计论文.docx(25页珍藏版)》请在冰点文库上搜索。

基于Linux内核的嵌入式串口通讯程序设计论文.docx

基于Linux内核的嵌入式串口通讯程序设计论文

毕业设计(论文)

 

设计论文题目:

基于Linux内核的嵌入式串口

通讯程序设计

学生姓名:

学生学号:

专业班级:

学院名称:

指导老师:

学院院长:

 

年6月10日

基于Linux内核的嵌入式串口通讯程序设计

摘要

本设计讨论了简易嵌入式Linux环境下的串口联网问题。

在如今的工业控制领域,嵌入式设备通讯能力的优劣已经成为了一个尤为重要的评判标准,是否能够进行网络通信将是十分重要的。

对于由于特殊要求而不能订制一些网络硬件的嵌入式设备来说,我们希望通过最为简单且经济的方式来解决网络问题,由此我们自然希望在尽力不改变设备原有资源的情况下给设备添加网络功能,并且将设备原先的功能所产生的冲突减到最小,选择具有普遍广泛应用的串口来实现串口联网将是十分具有现实意义的。

本设计通过使用虚拟一些联网必备的网络硬件,通过串口来通信的方法来完成联网的实现,具体涉及到伪网络驱动程序和串口通信程序的开发。

在不保证可靠通信和吞吐量的前提下,该设计能够实现简单的网络通信,包括Telnet等。

关键字:

Linux环境,串口通讯,网络通讯,嵌入式

DesignOfEmbeddedSerialCommunicationBasedOnLinux

Abstract

ThisdesignresearchesserialnetworkingwhichrunsunderthesimplekernelofLinux.

Nowinthefieldofindustrialcontrol,thecapacityofcommunicationshasbecomeaparticularlyimportantevaluationcriterionintheembeddedequipment.Forsomeembeddedequipmentsasaspecialrequestwhichcannotbemadeinsomeoftheembeddednetworkhardwareequipments,wehopethatthroughthemostsimpleandeconomicalwaytosolvenetworkproblems.Bythetimewenaturallyhopetomakeeveryeffortnottochangetheoriginalequipmentresourcesthatwecanaddtothenetworkfunctionundertheequipment,andtheoriginalequipmentfunctionsarisingfromtheconflictcouldbeminimized.Itisveryrealisticsignificancetoselectthewidespreadapplicationserialtoachieveserialnetworklink.

Thedesigntakestheuseofvirtualnetworkingtopretendsomeessentialnetworkhardware.Throughserialcommunicationstoapproachtotherealizationofnetworklink,itwillbespecificallyrelatedtothepseudo-networkdriverandserialcommunicationprogramdevelopment.Withoutguaranteedthroughputandreliablecommunicationsonthepremisethedesigncanbeachievedbysimplenetworkcommunications,includingTelnetandsoon.

Keywords:

Linux,serialcommunication,network,embedded

1绪论1

1.1网络通信1

1.1.1网络通信原理1

1.1.2网络通信现状及前景2

1.2串口通讯4

1.2.1串口通信原理4

1.2.2串口通信现状及前景5

1.3测试架构6

2设计平台及环境简介7

2.1硬件平台7

2.1.1设计平台7

2.1.2通信平台7

2.2软件平台7

2.2.1嵌入式Linux7

2.3虚拟机简介8

3串口网络通讯原理设计10

3.1简单串口上网的实现原理10

3.2串口上网设备加载和注销形式11

4串口网络通讯具体开发与实现13

4.1字符设备驱动程序13

4.2伪网络驱动设备程序16

4.3用户空间串口通信程序19

总结22

致谢23

参考文献24

1.绪论

1.1网络通信

1.1.1网络通信原理

Internet的工作原理是由一些通讯介质,如光纤、微波、电缆、普通电话线等,将各种类型的计算机联系在一起,并统一采用TCP/IP协议(传输控制协议/网际互联协议)标准,而互相联通、共享信息资源的计算机体系。

Internet是一个跨越不同国家、地区和区域的计算机网相互联结,彼此通讯的集合。

对于Internet用户来说,这些网好像就是一个天衣无缝的整体。

下面谈谈Internet是如何工作,并维护这种整体性的。

Internet采用了一种标准的计算机网络语言(技术上称为协议),以保证数据安全、可靠地到达指定的目的地,Internet协议分为两个部分:

TCP(传输控制协议)和(网络层协议)。

用TCP/IP表示,它是一种对计算机数据(电信号)打包和寻址的标准方法,几乎可以没有任何损失而迅速地将计算机数据经路由器传输到全世界的任何地方[1]。

当一个Internet用户通过网络向其它机器发送数据时,TCP协议把数据分成若干个小数据包,并给每个数据包加上特定的标志,当数据包到达目的地后,计算机去掉其中的IP地址信息,并利用TCP的装箱单检验数据是否有损失,然后将各数据包重新组合还原成原来的数据文件。

由于传输路径的不同,加上其它各种原因,接收方计算机得到的可能是损坏的数据包,TCP协议将负责检查和处理错误,必要时要求发送端重新发送[2]。

计算机网是由许多计算机组成的,要在两个网上的计算机之间传输数据,必须做两件事情:

保证数据传输到目的地的正确地址和保证数据迅速可靠地传输的措施,强调这两点是因为数据在传输过程中很容易传错或丢失[3]。

Internet使用一种专门的计算机语言(协议)以保证数据能够安全可靠地到达指定的目的地。

这种语言分为两部分,即TCP(TransferControlProtocol,传输控制协议)和IP(InternetProtocol,网络连接协议),通常将他们放在一起,用TCP/IP表示[4]。

当一个Internet用户给其他机器发送一个文本时,TCP将该文本分解成若干个小数据包,再加上一些特定的信息(可以类比为运输货物的装箱单),以便接收方的机器可以判断传输是正确无误的,由IP在数据包上标上有关地址信息。

连续不断的TCP/IP数据包可以经由不同的路由到达同一个地点。

有个专门的机器,即路由器,位于网络的交叉点上,它决定数据包的最佳传输途径,以便有效的分散Internet的各种业务量载荷,避免系统某一部分过于繁忙而发生“堵塞”。

当TCP/IP数据包到达目的地后,计算机将去掉IP包的地址标志,利用TCP的“装箱单”检查数据在传输过程中是否有损失,在此基础上并将各数据包重新组合成原文本文件。

如果接收方发现有损坏的数据包,则要求发送端重新发送被损坏的数据包。

一种叫做网关(Gateway)的专用机器使得各种不同类型的网可以使用TCP/IP语言同Internet打交道。

网关将计算机网的本地语言(协议)转化成TCP/IP语言,或者将TCP/IP语言转化成计算机网的本地语言。

采用网关技术可以实现采用不同协议的计算机网络之间的联接和共享。

对于用户来说,Internet就像是一个巨大的无缝隙的全球网,对请求可以立即做出响应,这是由计算机、网关、路由器以及协议来共同保证的。

1.1.2网络通信现状及前景

Internet发展经历了研究网、运行网和商业网3个阶段。

至今,全世界没有人能够知道Internet的确切规模。

Internet正以当初人们始料不及的惊人速度向前发展,今天的Internet已经从各个方面逐渐改变人们的工作和生活方式。

人们可以随时从网上了解当天最新的天气信息、新闻动态和旅游信息,可看到当天的报纸和最新杂志,可以足不出户在家里炒股、网上购物、收发电子邮件,享受远程医疗和远程教育等等。

Internet的意义并不在于它的规模,而在于它提供了一种全新的全球性的信息基础设施。

当今世界正向知识经济时代迈进,信息产业已经发展成为世界发达国家的新的支柱产业,成为推动世界经济高速发展的新的源动力,并且广泛渗透到各个领域,特别是近几年来国际互联网络及其应用的发展,从根本上改变了人们的思想观念和生产生活方式,推动了各行各业的发展,并且成为知识经济时代的一个重要标志之一[5]。

Internet已经构成全球信息高速公路的雏形和未来信息社会的蓝图。

纵观Internet的发展史,可以看出Internet的发展趋势主要表现在如下几个方面:

1.运营产业化

以Internet运营为产业的企业迅速崛起,从1995年5月开始,多年资助Internet研究开发的美国科学基金会(NSF)退出Internet,把NFSnet的经营权转交给美国3家最大的私营电信公司(即Sprint、MCI和ANS),这是Internet发展史上的重大转折。

2.应用商业化

随着Internet对商业应用的开放,它已成为一种十分出色的电子化商业媒介。

众多公司、企业不仅把它作为市场销售和客户支持的重要手段,而且把它作为传真、快递及其他通信手段的廉价替代品,借以形成与全球客户保持联系和降低日常的运营成本。

如:

电子邮件、IP电话、网络传真、VPN和电子商务等等的日渐受到人们的重视便是最好例证。

3.互联全球化

Internet虽然已有三十来年的发展历史,但早期主要是限于美国国内的科研机构、政府机构和它的盟国范围内使用。

现在不一样了,随着各国纷纷提出适合本国国情的信息高速公路计划,已迅速形成了世界性的信息高速公路建设热潮,各个国家都在以最快的速度接入Internet。

4.互联宽带化

随着网络基础的改善、用户接入方面新技术的采用、接入方式的多样化和运营商服务能力的提高,接入网速率慢形成的瓶颈问题将会得到进一步改善,上网速度将会更快,带宽瓶颈约束将会消除,互联必然宽带化,从而促进更多的应用在网上实现,并能满足用户多方面的网络需求。

5.多业务综合平台化、智能化

随着信息技术的发展,互联网将成为图像、话音和数据“三网合一”的多媒体业务综合平台,并与电子商务、电子政务、电子公务、电子医务、电子教学等交叉融合。

十到二十年内,互联网将超过报刊、广播和电视的影响力,逐渐形成“第四媒体”。

综上所述,随着电信、电视、计算机“三网融合”趋势的加强,未来的互联网将是一个真正的多网合一、多业务综合平台和智能化的平台,未来的互联网是移动加上IP以及广播多媒体的网络世界,它能融合现今所有的通信业务,并能推动新业务的迅猛发展,给整个信息技术产业带来一场革命。

1.2串口通讯

1.2.1串口通信原理

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。

常用的串口是RS-232-C接口(又称EIARS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。

它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。

传输距离在码元畸变小于4%的情况下,传输电缆长度应为50英尺[6]。

串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线UniversalSerialBus或者USB混淆)。

大多数计算机包含两个基于RS232的串口。

串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口,同时串口通信协议也可以用于获取远程采集设备的数据。

串口通信的概念非常简单,串口按位(bit)发送和接收字节。

尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

它很简单并且能够实现远距离通信。

比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米,而对于串口而言,长度可达1200米[7]。

典型地,串口用于ASCII码字符的传输。

通信使用3根线完成:

地线、发送、接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但是不是必须的。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

对于两个进行通行的端口,如下参数必须匹配。

1.波特率

这是一个衡量通信速度的参数。

它表示每秒钟传送的bit的个数。

例如300波特表示每秒钟发送300个bit。

当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。

这意味着串口通信在数据线上的采样率为4800Hz。

通常电话线的波特率为14400、28800和36600。

波特率可以远远大于这些值,但是波特率和距离成反比。

高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

2.数据位

这是衡量通信中实际数据位的参数。

当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。

如何设置取决于你想传送的信息。

比如:

标准的ASCII码是0~127(7位)。

扩展的ASCII码是0~255(8位)。

如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。

每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。

由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

3.停止位

用于表示单个包的最后一位。

典型的值为1、1.5和2位。

由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。

因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。

适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

4.奇偶校验位

在串口通信中一种简单的检错方式。

有四种检错方式:

偶、奇、高和低。

当然没有校验位也是可以的。

对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。

如果是奇校验,校验位为1,这样就有3个逻辑高位。

高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。

这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

1.2.2串口通信现状及前景

由于信息技术的进步,串口通讯也朝高速化方向发展,近年来在个人计算机的快速发展下,使用串口通讯发展USB(UniversalSerialBus,通用串行总线),其信号传输方式也是串行通讯(一次只传送一位)。

其通讯速率达12Mbps,在1999年所发表的USB2.0的版本已经将其速度提升到480Mbps[8]。

实验室数据通讯中的应用主要有两种情况。

一种是仪器提供USB接口,则可以直接利用USB口进行大批量数据传输(可以传输图片)。

另一种,仪器本身没有USB接口,只提供RS-232接口,我们可以将工作站中的USB口转换为RS-232,通过RS-232同仪器进行通讯,这种方式可以利用USB传输速率快,不占用系统资源的优点,将一个USB口转换成多个RS-232口,实现一个工作站连接多台仪器。

可见串口通讯显然是一种非常重要并且普遍的通讯方式。

1.3测试架构

本实验在一台PC上进行,所以实验中部署了2台Linux9.0的虚拟机来进行本次实验。

测试方式为C/S模式,所以设置其中一台虚拟机作为服务器,另外一台作为客户机。

两者间的串口链接通过将串口通信进程绑定到同一管道命令中来实现。

测试时通过Telnet命令以客户机访问服务器来体现网络链接成功与否。

在搭建实验环境时,有一些值得我们注意的地方:

为了保证实验的真实性,在搭建系统时应选择无网络环境,这样可以避免之后的实验产生歧义。

需要格外注意的是现在的虚拟机在安装时一般都不分配串口硬件接口,这里就需要我们自己通过“添加硬件”来给我们的虚拟环境添加串口接口,并且在添加时注意使一台实验机为服务器,另外一台为客户机,这样可以方便今后在两台虚拟机上的代码部署,减少工作量。

在选择打开需要的串口接口时请选择COM_1如此可以完全切合下面将要讲述的程序设计方法。

安装完系统和虚拟硬件之后,进入Linux的第一件事情应该是查找一些我们今后设计时所要具备的实验条件,比如串口字符设备的实际位置,与原系统之间的共享文件夹等等。

2.设计平台及环境简介

2.1硬件平台

2.1.1设计平台

本设计建立在一台PC上进行,主系统为WIN_XP,内存2G,硬盘80G,在设计机和主机之间共享了share文件夹进行资源的共享。

2.1.2通信平台

通信平台建立在两台虚拟机上(共存于一台PC上),操作系统RED_HAT9.0,虚拟机未建立网卡设备,自己创建了一个COM_1的串口,两台虚拟机的串口通信进程通过绑定在一个命令管道内实现虚拟的串口通信实现,其中一台为服务器,另一台为客户机。

2.2软件平台

2.2.1嵌入式Linux

随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。

尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、pSOS、Neculeus和WindowsCE。

但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。

另外,结合国内实情,当前国家对自主操作系统的大力支持,也为源码开放的Linux的推广提供的广阔的发展前景。

还有,对上层应用开发者而言,嵌入式系统需要的是一套高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。

在不久的将来,从冰箱到收音机都会内置处理器。

因为Linux的开放性,许多人认为Linux非常适合多数Internet设备。

他们认为Linux可以支持不同的设备,支持不同的配置[9]。

Linux对厂商不偏不倚而且成本极低,能够很快成为用于各种设备的操作系统。

如今,业界已经达成共识:

即嵌入式Linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。

嵌入式操作系统主要有PalmOS、WindowsCE、EPOC、LinuxCE、QNX,高端嵌入式系统要求许多高级的功能,如图形用户界面和网络支持。

很多高端RTOS供应商已经提供了这些功能,但其价格也很高端,一般人难以接受。

微软的WindowsCE也有此类功能,却不具备大多数嵌入式系统要求的实时性能,而且难以移植,也曾经有人想以DOS为基础用单独的第三方工具拼凑一个系统,但这种努力将是白费。

现在需要的是一个便宜,成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,所以众多商家纷纷转向了嵌入式Linux[10]。

Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统[11]。

支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA等现有的大部分蕊片。

程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNUGeneralPublicLicense)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心像MSWindows操作系统中“后门”的威胁。

同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。

Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。

Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。

Linux还提供了强大的网络功能,有多种可选择窗口管理器(Xwindows)[12]。

其强大的语言编译器gcc、g++等也可以很容易得到。

2.3虚拟机简介

VMwareWorkstation允许操作系统和应用程序在一台虚拟机内部运行。

虚拟机是独立运行主机操作系统的离散环境。

在VMwareWorkstation中,你可以在一个窗口中加载一台虚拟机,它可以运行自己的操作系统和应用程序。

你可以在运行于桌面上的多台虚拟机之间切换,通过一个网络共享虚拟机(例如一个公司局域网),挂起和恢复虚拟机以及退出虚拟机,这一切不会影响你的主机操作和任何操作系统或者它正在运行的应用程序。

例如,假如你是一个需要在WindowsNT,外加Windows3.1,Windows98,Windows2000和Linux中进行测试的开发人员你可以使用VMwareWorkstation做这件事。

你可以创建一整套虚拟计算机,并且从单台机器中同时运行它们,不需要重新启动。

VMwareWorkstation用于许多不同的目的。

它可以用于测试新的操作系统或者应用程序环境,向用户推介新的操作系统,在教育研讨期间共享已经配置的环境等等。

VMware产品基于我们正在申请的专利构建,其位于Intel架构的计算机硬件和操作系统之间的一个小的软件层,虚拟硬件并且管理所有硬件资源。

VMware技术取用传统虚拟机技术的原理,并且将它们与高级的虚拟网络和系统以及系统资源管理技术结合在一起。

在其中安装VMwareWorkstation软件的物理计算机称作主机,它的操作系统称作主机操作系统。

在一台虚拟机内部运行的操作系统称作一个客户操作系统[13]。

3.串口网络通讯原理设计

3.1简单串口上网的实现原理

如图3.1所示

图3.1简单串口上网的实现原理图

LinuxBoxA和LinuxBoxB是两个安装有Linux操作系统的终端(可以是PC,也可以是嵌入式设备),它们通过一条串口通信线(nullmodemcableline)连接,本设计通过了绑定同一命令管道的方法。

控制串口通信的服务进程server读和写两个字符设备:

发送字符设备sendingdevice和接收字符设备receivingdevice。

在内核空间,伪网络设备驱动程序pseudonetworkdriver可以直接读写发送字符设备和接收字符设备,事实上在内核空间它们之间的通信只是对共享缓存区的读写而已

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2