嵌入式Linux操作系统下的串行通信.pdf

上传人:asd****56 文档编号:70343091 上传时间:2023-01-19 格式:PDF 页数:5 大小:307.20KB
返回 下载 相关 举报
嵌入式Linux操作系统下的串行通信.pdf_第1页
第1页 / 共5页
嵌入式Linux操作系统下的串行通信.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《嵌入式Linux操作系统下的串行通信.pdf》由会员分享,可在线阅读,更多相关《嵌入式Linux操作系统下的串行通信.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第2 7 卷第3 期2008 年9 月大连工业大学学报J o u r n a lo fD a l i a nP o l y t e c h n i cU n i v e r s i t yV 0 1 2 7N o 3S e p t 20 0 8文章编号:1 6 7 4 1 4 0 4(2 0 0 8)0 3 0 2 7 0-0 4嵌人式L i n u x 操作系统下的串行通信姚飞昭1,丁金华1,宋鹏2 1 大连工业大学机械工程与自动化学院,辽宁大连1 1 6 0 3 4 l2 中国石油集团工程设计有限责任公司大连分公司。辽宁大连1 1 6 0 1 1)摘要:介绍了L i n u x 操作系统串

2、I=I 的参数、串口资源和常用的程序开发工具,以及使用t e r m i o s 数据结构对串E l 进行配置的过程。给出了在该系统下串行口编程控制的方法。在R e dH a t 9 0 和S U M S U N G公司的$3 C 2 4 1 0 平台下,通过串口和通讯协议实现了数据传输。由于L i n u x 系统的稳定性更高,数据传输的准确率也有了提高。关键词:串行通信#L i r m x 系统;L i n u x 内核中图分类号:T P 3 9 3文献标志码:AR e s e a r c ho fs e r i a lc o m m u n i c a t i o no nL i n u

3、 xs y s t e mY A OF e i z h a 0 1,D I N GJ i n h u a l S O N GP e n 9 2(1 S c h o o lo fM e c h a n i c a lE n g i n e e r i n g&A u t o m a t i o n,D a l i a nP o l y t e c h n i cU n i v e r s i t y,D a l i a n1 1 6 0 3 4,C h i n a l2 C h i n aP e t r o l e u mE n g i n e e r i n gC o r p o r a t

4、i o nL i m i t e dD a l i a nC o m p a n y,D a l i a n1 1 6 0 1 1 C h i n a)A b s t r a c t:T h es e r i a lp a r a m e t e r s,r e s o u r c ea n df r e q u e n c y-u s e dd e v e l o p m e n tt o o l su n d e rL i n u xO Sw a sr e v i e w e d H o wt oc o n f i g u r ea n dc o n t r o lt h es e r i

5、 a lp o r t st h r o u g ht e r m i o sd a t as t r u c t u r ea n dp r o g r a m-r u i n gw e r ea l s os t u d i e d D a t at r a n s m i t t i n gc a m et r u ev i at h es e r i a lp o r ta n dc o m m u n i c a t i o np r o t o c o lu n d e rt h ep l a t f o r mo fR e dH a t 9 0a n d$3 C 2 4 1 0

6、T h ed a t at r a n s m i t t i n ga c c u r a c yp e r c e n tw a sh i g hd u et ot h es t a b i l i t yo fL i n u xO S K e yw o r d s:s e r i a lc o m m u n i c a t i o n;L i n u xs y s t e m;L i n u xc o r e0引言随着嵌入式应用的发展,L i n u x 操作系统的应用也越来越普及。在应用程序的开发中,常常面临与外围数据源设备通信的问题。计算机和单片机都具有串行通信口,可以设计相应的串

7、口通信程序,完成二者之间的数据通信任务。已有一些介绍串口编程的文章,但大多是在W i n d o w s 环境下实现的。L i n u x 作为一款免费且开放源代码的操作系统,与W i n d o w s 操作系统相比拥有许多明显的优势:L i n u x 可以进行内核定制,L i n u x 的系统角色灵活,L i n u x 的图形化操作界面可选,L i n u x 便于远程管理 1 。随着L i n u x 操作系统的不断发展和完善,基于L i n u x 的软件开发也越来越多;同时在工业控制领域,计算机和现场工业设备之间数据交换频繁,而两者的接口以串口居多,因此串行通信显得尤为重要。如

8、果在工控领域引入L i n u x,不可避免地会遇到L i n u x 下如何实现串行通信的课题。在嵌入式系统中实现串口通信,可延伸系统的应用范围和扩大系统的数据采集和过程控制的范围。本文作者针对L i n u x 操作系统的特点,对串行口进行了编程和操作。1L i n u x 平台下的串口通信设备1 1L i n u x 中的设备文件在L i n u x 环境下,文件是抽象的,它将所有的东西都按文件来对待,所以应用者可以像操作普通文件一样去打开、关闭、读取和写入不同的串口终端设备。文件抽象提供了一个一致的、统一的接口用来和所有设备和文件类型进行交互。这些收稿日期:2 0 0 7 1 2 1

9、2 作者简介:姚飞昭(1 9 8 3 一),男,硬士研究生I 通信作者;丁金华(1 9 6 2 一),男,教授 万方数据第3 期姚飞昭等:嵌入式L i n u x 操作系统下的串行通信2 7 l设备文件(d e v i c ef i l e)也称为特殊文件(s p e c i a lf i l e),该文件提供了到大多数物理设备的接口。它们分为字符型特殊文件和块特殊文件。字符型特殊文件一次只能读出或写入一个字节或字符的数据,块特殊文件必须以一定大小的块来读出或写入数据。而串口终端设备就属于字符型特殊文件 2 ,所以可以利用文件描述符使用o p e n、c r e-a t e、c l o s e

10、、r e a d、w r i t e、f e h m o d 和s e l e c t 等调用来设置和操作串口。在L i n u x 环境下程序中对串口的操作分为规范方式和非规范方式两种情况。(1)规范方式输入。发一个读请求,当一行已经输入后,即返回。这里有很多情况可以造成返回:所要求的字节数已读到时返回,无需读一个完整的行。当读到一个行定界符时,读返回。默认情况下行界定符为C R(回车符)。如果捕捉到信号而且读函数并不自动再启动,则读返回。(2)非规范方式输入。输入的数据不会被组合成一行。系统怎样才能知道在什么时候将数据返回给操作者呢?这就需要使用t e r m i o s 结构中旺c 数组

11、的两个变量:M I N 和T I M E。0 2C 数组中这两元素的下标是:V M I N 和v T I M E。c c C(v T I M E)设定字节输入时间计时器,c c _ c(V M I N)设定满足读取功能的最低字节接收个数I s 。1 2L i n u x 串口模块L i n u x 操作系统下串口等通信资源是作为串行通信终端设备t t y S x x 实现的。包括标准P C串口(C O M l C O M 4)和可扩展的多口串行通信卡,均可方便地安装、使用。L i n u x 操作系统中的所有设备以设备文件名的方式存储在目录d e v 中,其中每一个设备由一个主设备号和一个次设

12、备号唯一确定。对于串口设备,t t y S x x 的主设备号为4,它既能用于输入也能用于输出。L i n u x 串行通信设备和W i n d o w s操作系统中的串口对应如表1 所示。表1串口设备表T a b 1S e r i a le q u i p m e n td i a g r a mL i n u x 操作系统的主要优点是稳定、内核可重新编译、提供开放的内核源代码。L i n u x 内核采用模块化的设计,即很多功能块可以独立地加上或卸下。在设计内核时,可以把这些内核模块作为可选项,在编译系统内核时指定 4 3。因此,一种较通用的做法是对L i n u x 内核重新编译,在编译

13、时仔细选择嵌入式设备所需要的功能支持模块,同时删除不需要的功能。通过对内核的重新配置,可以使系统运行所需要的内核显著减小,从而缩减资源使用量。嵌入式L i n u x 内核一般不含有串口控制模块,因此,在对其进行串口编程控制前要重新编译内核,加入串口控制模块。具体方法步骤如下:(1)配置内核#m a k ee o n f i g在配置文字处理设备中选用串口选项。(2)建造内核#m a k ed e p#m a k ec l e a n#m a k ez l m a g e(3)安装嵌入式系统新内核把建造的内核装入嵌入式系统的启动F l a s h中,重新启动嵌入式系统,新建的内核就可以支持串口

14、控制接口。1 3L i n u x 平台下的开发环境在L i n u x 环境下,有类似于D E I。P H I、V C(基于W i n d o w s 平台)这样的I D E 开发环境,如K e l-i x、K d e v e l p,但对于想要得到较小的程序代码量,产生出效率较高的执行代码,可以使用一些基于控制台模式的开发工具。(1)v i 文本编辑器v i 文本编辑器来源于U n i x 操作系统。但v i不仅仅是一个单纯的文本工具,v i 里可以调用G N Um a k e(自动生成和维护目标代码的工具),通过m a k e 可以间接调用G C C,同时捕获m a k e的出错信息,帮

15、助在源程序里定位;而且v i 还可以编辑很多其他东西,比如信件、L a T e X 文档、H T M L、配置文件。事实上,它拥有非常强大的编辑能力。(2)G C CC C+语言编译器G C C 编译器支持最新的A N S IC 标准,并且带有一个可独立执行的汇编器(a s s e m b l e r),可以在C 程序中引用内联汇编语言代码(i n l i n ea s-s e m b l yc o d e),特别是具有最优化的功能,产生出效率较高的执行代码。通过的g c c o t e s tt e s t 万方数据2 7 2大连工业大学学报第2 7 卷c 语句就可以完成t e s t c

16、的编译,生成一个可执行的文件。(3)G D B 调试器G D B 能够在程序运行过程中观察程序的内部结构和内存的使用情况,监视程序中变量的值,设置断点,单步执行代码,使用灵活而不失强大的功能。(4)串口调试工具S C TL i n u x 系统有一个专门的串行通信调试工具S C T(S e r i a lC o m m u n i c a t i o nT r a c e r)。它是一个很有用的L i n u x U n i x 串行通信调试工具,软件内置了S h e l l 命令解释器,可以通过直接输入简短的命令和参数来控制串口的打开关闭和进行各种发送接收活动。2 串行口的编程2 1 串口的

17、控锶L i n u x 系统对串口控制由1 个终端控制数据结构t e r m i o s 和1 2 个控制函数组成,它们定义在头文件 中。t e r m i o s 数据结构定义如下:#i n c l u d e s t r u c tt e r m i o s t c f l a g _ tc _ i f l a g;*指明输入方式的标志位*t c f l 啦tc _ o f l a g;*指明输出方式的标志位*t c f l a g _ tc _ o q a g g-指明控制方式的标志位*t c f l 啦tc _ l f l a g;*指明局部方式的标志位*c otc _ c c N C

18、 C s ;g-指明用于控制的特殊字符*t e r m i o s 结构的这5 个成员分别对应终端的输入方式、输出方式、控制方式、局部方式以及特殊字符。在L i n u x 下对串口的设置主要是通过t e r m i-o s 这个结构体实现的,但是这个结构体却没有提供控制R T S 或获得C T S 等串口引脚状态的接口,可以通过i o c t l 系统调用来获得控制。i o e t l(f d,T I O C M G E T,&c o n t r o l b i t s)Ii f(c o n t r o l b i t s T I O C M C T S)p r i n t f(“有信号n”

19、);e l s ep r i n t f(“无信号n”)I设置:i o c t l(f d,T 1 0 C M G E T,&c t r l b i t s);i f(f l a g)c t r l b i t sJ=T l O C M _ R T S;e l s ec t r l b i t s=T l o C M R T S;。i o c t l(f d,T l O C M S E T,&c t r l b i t s);T I O C M R T S 有效后是把串口的R T S 设置为有信号,但串口的电平为低时是有信号,为高时为无信号,和用T I()C M G E T 获得的状态正好相反

20、,也就是说T I O C M G E T T 1 0 C M S E T 只是获得控制串口的相应引脚是否有信号,并不反应当前串口的真实电平高低。对c _ i f l a g(t e r m i o s 成员变量)这个变量进行有效的设置后,传送A S C I I码时没什么问题,但传送二进制数据时遇到O x O d,O x l l 和0 x 1 3 却会被丢掉。因为这几个是特殊字符,被用作特殊控制了,关掉I C R N L 和I X O N 选项即可解决c 5 。2 2A R M 9 嵌人式平台与P C 通信的实现A R M 9 微处理器是3 2 位R I S C 芯片,在高性能和低功耗特性方面提

21、供最佳的性能。主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数码照相机和摄像机。在笔者开发使用韩国S A M S U N G 公司的基于A R M 9 的嵌入式系统平台过程中,经常使用串行接口与P C 主机进行通信。在此平台上,可以运行嵌入式L i n u x 操作系统,并用在线仿真器M u l t i I C E 进行调试。I C E 是集成开发环境,使用它开发基于A R M 的应用软件,包括编辑、编译、汇编、链接等工作全部在P C 机上即可完成;调试工作则需要配合目标的模块或产品方可完成。以下是与P C 机的通信程序。串口打开程序:I t-o p e n 串口1,成功返回设备

22、文件描述符,出错返回一l*i n to p e n _ p o r t(v o i d)i n tf d;*串口文件描述符*f d o p e n(“d e v t t y S O”,0 一R D W RlO N O C T T Y)li f(f d=一1)*不能打开串口文件*p r i n t f(“o p e n p o r t:u n a b l et oo p e n d e v t t y S l n”);r e t u r n(一1)I)r e t u r n(f d);)万方数据第3 期姚飞昭等:嵌入式L i n u x 操作系统下的串行通信2 7 3串口配置程序:hs e t

23、u p c o m(i n tf d)*f d 串口文件描述符 R-s t r u c tt e r m i o so p t i o n s;i n tr e s u l t;r e s u l t=t c g e t a t t r(f d,&o p t i o n s);*取得源文件描述符*i f(r e s u l t O)p r i n t f(“e r r o ri nt c g e t a t t r n”);r e t u r n(一1);)*设置奇偶校验一无奇偶校验(8 N 1)*o p t i o n s c _ c f l a g=P A R E N B;o p t i

24、o n s c _ c f l a g&一C S T O P B;o p t i o n s c _ c f l a g&=C S I Z E;o p t i o n s c _ c f l a gl=C S 8;*设置非加工方式输入*o p t i o n s ci n a g&=(I C A N O N lE C H O II S I G);*设置非流控制*o p t i o n s c _ i f l a g&=(I X O N II X O F F II X A N Y);o p t i o n s c _ i f l a g&一I C R N L)o p t i o n s c _

25、o f l a g 一O P O S T;*输入输出字节控制、读写返回控制*o p t i o n s c _ c c V M I N =5:o p t i o n s c _ c c V T I M E =1;*设置通信波特率*c f s e t o s p e e d(&o p t i o n s,B 1 2 0 0)Ic f s e t i s p e e d(&o p t i o n s,B 12 0 0);t e s e t a t t r(f d,T C S A N O W,&o p t i o n s);r e t u r n(1);经过设置后,就可用标准的文件读写命令r e a

26、 d()和w r i t e()操作串口了。最后在退出前,用c l o s e()函数关闭串口。3 结束语串行通信作为计算机之间以及计算机与单片机等数字化仪器通信的一种重要手段,在L i n u x平台下实现显得很有意义。本文作者针对L i n u x操作系统的特点,对串行口进行了编程和操作。基于L i n u x 的应用程序能更好地满足工业控制稳定性和高效性的要求。通过在L i n u x 下对串口的操作和编程实现了上位机P C 与A R M 9 开发板的通信,较之W i n d o w s 下的数据采集和传输更为稳定。在研究过程中,传输数据的类型和文侔大小还有限制,尚需进一步开发。参考文献

27、:1 邹思轶嵌入式L i n u x 设计与应用 M 北京:清华大学出版社,2 0 0 2 2 3 陈磊松,许华荣串口通信在L i n u x 操作系统中的应用 J 漳,竹!币范学院学报:自然科学版,2 0 0 5,1 8(2):3 7-4 1 3 马文辉,李友兰L i n u x 环境下的串口通信 J 仪器仪表用户,2 0 0 5,1 2(1):3 9-4 1 4 J O H N S O NMK L i n u x 编程权威指南 M 龙华乔,译北京:中国电力出版社,2 0 0 1 5 怀石工作室L i n u x 上的C 编程 M 北京:中国电力出版社,2 0 0 0:3 8 9-3 9 1

28、 科技论文的规范表达引言论文的引言又叫绪论。写引言的目的是向读者交代本项研究的来龙去脉;其作用在于唤起读者的注意,使读者对论文先有一个总体的了解。引言中要写的内容大致有如下几项:1)研究的理由、目的和背景。包括问题的提出,研究对象及其基本特征,前人对这一问题做了哪些工作,存在哪些不足;希望解决什么问题,该问题的解决有什么作用和意义;研究工作的背景是什么。如果要回答的问题比较多,则只能采取简述的方式,通常用一两句话即把某一个问题交代清楚。2)理论依据、实验基础和研究方法。如果是沿用已知的理论、原理和方法,只需提及一笔,或注出有关的文献。如果要引出新的概念或术语,则应加以定义或阐明。3)预期的结果

29、及其地位、作用和意义,要写得自然、概括、简洁和确切。万方数据嵌入式Linux操作系统下的串行通信嵌入式Linux操作系统下的串行通信作者:姚飞昭,丁金华,宋鹏,YAO Fei-zhao,DING Jin-hua,SONG Peng作者单位:姚飞昭,丁金华,YAO Fei-zhao,DING Jin-hua(大连工业大学,机械工程与自动化学院,辽宁,大连,116034),宋鹏,SONG Peng(中国石油集团工程设计有限责任公司大连分公司,辽宁,大连,116011)刊名:大连工业大学学报英文刊名:JOURNAL OF DALIAN DALIAN POLYTECHNIC UNIVERSITY年,卷(期):2008,27(3)参考文献(5条)参考文献(5条)1.怀石工作室 Linux上的C编程 20002.JOHNSON M K;龙华乔 Linux编程权威指南 20013.马文辉;李友兰 Linux环境下的串口通信期刊论文-仪器仪表用户 2005(01)4.陈磊松;许华荣 串口通信在Linux操作系统中的应用期刊论文-漳州师范学院学报(自然科学版)2005(02)5.邹思轶 嵌入式Linux设计与应用 2002 本文链接:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁