




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- 1 -*实践教学*兰州理工大学计算机与通信学院2013年春季学期嵌入式系统开发技术课程设计题 目: 嵌入式串口通信设计 专业班级: 通信工程四班 姓 名: / 学 号: / 指导教师: / 成 绩: 1 摘 要 嵌入式是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,应用ARM体系结构、ARM9-2410开发板、串行通信接口工作原理、ARM9调试仿真工具ADS1.2和MULTI-ICE软件仿真器,用超级终端进行数据传送测试,实现连接PC机、ARM9-2410开发板、仿真器,实现串行通信,传输速率115200bps,接收
2、来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测。嵌入式系统以其小型、专用、易携带、可靠性高的特点,已经在各个领域得到了广泛的应用,如军事国防、消费电子、通信设备、工业控制等。关键字:ARM体系;ARM9-2410开发板;串行通信;数据传送;监测目 录前 言I一、串口通信概述11.1 串口通信的原理11.2 串口通信的开发工具11.2.1 2410F硬件平台简介21.2.2 ARM简介21.2.3 Linux系统简介31.3 串口通信的基本任务4二、系统分析52.1 RS-232C标准52.2 系统硬件结构原理11三、串口驱动程序设计133.1 串口操作需要的头文件133
3、.2 打开串口133.3串口设置143.4 串口读写163.5 关闭串口18四、总结19五、 致谢20参考文献21附 录22前 言 串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。 随着计算机系统的应用和微机网络的发展,通信功能越来越显得重要.这里所说的通信是指计算机与外界的信息交换.因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换.由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,
4、特别适合于远距离传输.对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍.在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各 CPU 之间的通信一般都是串行方式.所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU 与接口之间仍按并行方式工作。- 1 -一、串口通信概述 所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位进行传输,每一位数据都占据一个固定的时间长度。
5、串口传输是二进制代码序列在一条信道上以位(元码)为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采取同步措施,否则接受端将不能正确区分出所传输的数据。 串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言进行编程或者使用C 51 自己编写设备的初始化以及读写访问程序,这样的过程不仅复杂,而且不利于大规模的开发和设计。ARM 与8051 等普通单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列优势,因而
6、在汽车电子、手持设备、无线领域和航空航天等嵌入式系统中得到广泛的应用。将Linux 移植到ARM 嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,因此进行相应开发可以提高系统编程效率,而且还可以简化调试的复杂程度。1.1 串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关闭串口)。1.2 串口通信的开发
7、工具 本次开发采用的硬件平台是ARM920T处理器的2410F,开发系统平台是Lin ux系统。1.2.1 2410F硬件平台简介2410F 是基于三星(samsung)ARM9 嵌入式处理器 S3C2410 处理器的一款开发平台,“F”指基于2410 的第六代开发套件。系统运行在 202M 的主2410F 是基于三星(samsung)ARM9 嵌入式处理器 S3C2410 处理器频下发挥出色的性能。可以完成MP3,MPG,VOIP 等工作。2410 资源丰富适合 ARM 处理器的初学者学习使用。2410F 上面使用的核心模块体积小资源丰富,IO 充足还可以应用在二次开发的产品当中。这款设备主
8、要包括核心板与底板两个部分,核心板采用6 层PCB 设计、底板采用2 层PCB 板设计,核心器件是基于目前业内主流使用的SAMSUNG ARM9S3C2410 处理器,主频202MHz,配套的存储器,网卡等设备;底板主要是各类型的接口。S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,
9、IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。它是基于ARM920T 内核的16/32 位RISC 处理器, 主要应用于嵌入式系统中。S3C2410 拥有强大的数据处理能力,又有着低成本,低功耗等优点,在各种手持及移动设备上的应用越来越广泛,基于其平台的程序功能也越来越复杂。于是,在其平台上架构多线程的操作系统已成为越来越多系统设计者的诉求, 本文介绍多线程在S3C2410 上的具体实现过程。1.2.2 ARM简介ARM(Advanced RISC Machines),既可以认为是一个
10、公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统、军用系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器70以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导
11、体生产商从ARM 公司购买其ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。目前全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,更具有竞争力。ARM 微处理器一般具有如下特点: (1)体积小、低功耗、低成本、高性能; (2)支持 Thumb(16 位)/ARM(32 位)双指令集,能很好的兼容8/16 位器件; (3)大量使用寄存器,指令执行速度更快; (4)大多数数据操作都在寄存器中完成; (5)寻址方式灵
12、活简单,执行效率高; (6)指令长度固定。1.2.3 Linux系统简介Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。Linux 一般有四个主要部分:内核、Shell、文件结构和实用工具。(1)Linux 内核内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。(2)Linux ShellShell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内
13、核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell 程序与其他应用程序具有同样的效果。3(3)Linux 文件结构文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。(4)Linux 实用工具标准
14、的 Linux 系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。实用工具可分三类: 编辑器:用于编辑文件。 过滤器:用于接收数据并过滤数据。 交互程序:允许用户发送信息或接收来自其他用户的信息。1.3 串口通信的基本任务(1)实现数据格式化:因为来自CPU 的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。(2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。
15、所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串接口电路和的重要任务。(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率-波特率进行先择和控制的能力。(4)进行错误检测:在发送接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他检验码,确定是否发生传送错误。(5)进行TTL 与EIA 电平转换:CPU 和终端均采用TTL 电平及正逻辑,它们与EIA 采用的电平及负逻辑不兼容,需在接口电路中进行转换。51二、系统分析 串行端口的本质功能是作为CPU 和串行设备间的编码转换器,一般微机内都配有
16、通信适配器,使计算机能够与其他具有RS-232C 串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信, 采用的宿主机是Intel Centrino架构的Red Hat Linux 9.03 环境PC机, 而目标机是ARM 架构的开发板。本系统中目标机开发板的内核采用的是三星的S3C2410 ,该开发板采用核心板加底板的模式, 核心板接口采用DIMM200 标准连接器,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS-232C 型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口
17、通信采用EIA RS-232C标准。2.1 RS-232C标准RS-232C是1969年由电子工业协会(EIA)公布的标准。该标准的用途是定义数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equioment)的接口特性。数据终端设备就是连接通信两端设备的连线(如空MODEM)或其他设备。RS-232C标准的构架如图2.1所示。(数据终端设备DTE)(数据通信设备DCE)(数据通信设备DCE)(数据终端设备DTE)MODEM计算机A计算机BRS-232C通信线路MODEMRS-232C图2.1 RS-232C标准的
18、构架RS-232C标准的一些主要规范如下。(1) 电气特性RS-232C采用非归零、双极性编码,且使用负逻辑规定的逻辑电平:-15-5V规定为逻辑“1”。+5+15V规定为逻辑“0”。信号电平与TTL电平不兼容,所以需要电平转换电路(通常使用MAX3232转换)。电平转换电路如图2.2所示。RS-232C输出TTL输出RS-232C接口电路MAX3232RS-232C输入TTL输入图2.2 RS-232C的电平转换电路(2) 引脚定义目前广泛的DB9引脚定义如图2.3所示。信号引脚定义的说明见表2.1。9 RIGND 58 CTSDTR 47 RTSTXD 3RXD 26 DSRDCD 1图2
19、.3 DB9 引脚定义表2.1 DB9引脚说明9针串口DB9针号功能说明缩写1输入,数据载波检测DCD2输入,接收数据RXD3输出,发送数据TXD4输出,DTE准备就绪DTR5信号地GND6输入,MODEM准备就绪DSR7输出,请求发送RTS8输入,允许发送CTS9输入,振铃指示DELL(3) 字符(帧)格式RS-232C采用起止式异步通信协议,其特点是一个字符接着一个字符进行传输,并且传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其传输格式如图2.4所示,每一个字符的前面都有一位起始位(低电平,逻辑“0”),字符本身有58位数据位,接着字符后面是一位校验码(也可
20、以没有校验码),最后是停止位。停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值“1”),这样就能保证起始位开始处一定有一个下跳沿,便于接受方识别。校验位(可以没有)起始位数据停止位接收方发送方1 x 1 1 1 1 1 0 1 1 0数据流方向1 1 1 1 1 1 0 1 1 01 1 11 0 1 0数据单元之间的间隔图2.4 串行传输的工作原理示意图从图2.4 中可以看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。没有统一的时钟,没有同步字符,依靠起始位和停止位标识每一帧,传输时,数据的地位在前,高位在后。起始位实际上是作为同步信号附加进来的
21、,当它变为低电平时,告诉接受方传输开始,后面接着是数据位;而停止位则标志一个字符的结束。这样就为通信双方提供了何时开始收发、何时结束的标志。传输开始前,收发双方把所采用的字符格式(包括字符的数据位长度、停止位位数、有无校验位以及是奇校验还是偶校验等)和数据的传输速率进行统一规定。传输开始后,接收设备不断地检测线路,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿(由“1”变为“0”),说明起始位出现,起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。然后去掉停止位,对数据位进行串并转换,并且经奇偶校验无误后,才算正确地接收到一个字符。一个字符接收完
22、毕,接收设备又继续测试线路,监视“0”电平的到来和下一位字符的开始,直到全部数据传输完毕。(4)握手协议RS-232C标准除了规定的字符格式和通信波特率以外,还在数据终端设备DTE和数据通信设备DCE之间定义了一套握手协议。握手协议的过程如图2.5所示。数据终端设备DTE 本地MODEM 远程MODEM 远程DTEDTRDSRRTS呼叫载波信号DCD 载波确认CTSTXD图2.5 DTE与DCE的握手协议过程DTR:数据终端设备DTE准备就绪。DTE加电并能正确实现通信时,向DCE发出DTR信号。DSR:数据通信设备DCE准备就绪。MODEM加电并能正确执行通信功能时,DTE发出DSR信号。R
23、TS:请求发送。当DTE有数据需要向另一远程DTE传输时,DTE在检测DSR有效时向本地MODEM发出RTS信号。本地MODEM检测到RTS有效,然后根据目的电话号码向远程MODEM发出呼叫。远程MODEM收到该呼叫,发出回答载波信号。本地MODEM接受到此载波信号,然后向远程MODEM发出原载波信号进行确认,同时向DTE发出数据载波信号DCD。DCD:数据载波信号检测。由MODEM发向数据终端设备DTE,表示已检测到对方载波信号。 CTS:允许发送,当一个MODEM辨认出对方MODEM已经准备接收时,使用CTS信号通知自己的DTE,表示这个通信通路已经做好数据传输的准备,允许DTE进行数据发
24、送。至此,通信链路建立,可以通信。RI:振铃指示。如果MODEM具有自动应答能力,当对方呼叫传来时,MODEM向DTE发出该信号,指示此呼叫。在电话呼叫振铃结束后,MODEM在DTE已准备好的情况下(即DTR有效),立即向对方自动应答。(5) 双机互连方式双机可以利用RS-232C通信接口进行直接互连(数据终端设备DTE到DTE),即空MODEM连接。这种形式在嵌入式系统中应用极为广泛。由于RS-232C标准中有两对硬件握手协议的引线:DTR和DSR、RTS和CTS,根据应用握手协议的机制不同,可分为3种情况:无硬件握手、DTR和DSR握手、RTS和CTS握手。 无硬件握手情况无硬件握手的双机
25、互连如图2.6所示。DTE TXD RXD GND DTETXDRXDGND计算机B计算机A图2.6 无握手的双机互连无硬件握手的连线最简单,只需要3根线,应用比较多。但通信不可靠,接收缓冲区容易溢出。 DTR和DSR握手情况DTR和DSR握手的双机互连如图2.7所示。 DTETXDRXDGNDDTRDSRDTE TXD RXD GND DTRDSR计算机B计算机A图2.7 DTR和DSR握手的双机互连采用DTR和DSR握手进行发送和接收数据的过程如下(设计算机A接收,计算机B发送): 若计算机A已经准备就绪,则使DTR有效。计算机B通过采集DSR,得知计算机A已经做好接收数据的准备,可以发送
26、数据。若计算机A为准备好,则DTR无效,计算机B通过采集DSR,得知计算机A尚未做好接收数据的准备,停止发送数据。 RTS和CTS握手情况RTS和CTS握手的双机互连如图2.8所示。DTE TXD RXD GND RTS CTS DTETXDRXDGNDRTSCTS计算机A计算机B图2.8 RTS和CTS握手的双机互连利用RTS和CTS握手进行发送和接收数据的过程如下(设计算机A接收、计算机B发送):若计算机A已经准备就绪,则使RTS有效。计算机B通过采集CTS,得知计算机A已经做好接收数据的准备,可以发送数据。若计算机A未准备好,则RTS无效,计算机B通过采集CTS,得知计算机A尚未做好接收
27、数据的准备,停止发送数据。2.2 系统硬件结构原理在串口通信的实现过程中,要保证数据传输的可靠性和稳定性, 其硬件设计是必不可少的, 本文中选用S3C2410 芯片作为核心器件。S3C2410 芯片是SAMGSUNG公司16/ 32 位的RISC 处理器,采用ARM920 T 内核,内部具有2 个独立的UART 控制器以及分开的16 kB的指令Cache 和16 kB 数据Cache ,每个控制器支持的最高波特率可达到230. 4 kb/ s 。S3C2410 芯片的这些特点,为实现在Linux 操作系统下计算机与开发板间的串口通信提供了可靠的保证。基于S3C2410 的嵌入式串口通信的硬件结
28、构原理如图2.9所示: 宿主机(计算机系统) 目标机(开发板) JTAG接口模块电源模块计算机主机设备(带RS-232接口)显示器液晶显示模块S3C2410 ARM芯片串行接口线DIMM200连接器接口模块键盘控制模块键盘外扩存储器模块图2.9 系统硬件结构原理图宿主机即计算机系统中,在Linux 操作系统下编写好串口通信的程序,通过 网络ftp下载至目标机即开发板中,在相应的软件控制命令下,通过串行接口线即可实现宿主机与目标机间数据的发送和接收。目标机中电源模块提供了开发板系统工作所需的正常电压,各种数据信息可以通过液晶显示模块及时显示出来,还可以通过键盘控制模块来实现对目标机操作的控制,外
29、扩存储器模块可以由FLASH 或SDRAM 构成,当然作为一个完整的系统,还必须配有其他外围电路,以保证系统的正常工作。 三、串口驱动程序设计 由于嵌入式系统是一个受资源限制的系统,因此不能直接在嵌入式系统硬件上进行编程。作为一个完整的嵌入式系统,其软件设计也是一个很重要的方面。本系统软件的实现是通过串口设置和读写串口等操作来完成宿主机与目标机间的串口通信。3.1 串口操作需要的头文件在开发嵌入式Linux串口驱动程序时,需要以下头文件。#include /*标准输入输出定义*/#include /*标准函数库定义*/#include /*UNIX标准函数定义*/#include #inclu
30、de #include /*文件控制定义*/#include /*POSIX终端控制定义*/#include /*错误号定义*/3.2 打开串口在嵌入式Linux系统中,打开一个串口设备和打开普通文件一样。嵌入式Linux系统下的串口文件通常位于/dev下:串口一为/dev/ttyS0;串口二为/dev/ttyS1。打开串口时通过使用标准的文件函数open( )来进行操作的,下面假设以读写方式打开串口一。int fd;/文件描述符fd=open(“/dev/ttyS0”,O_RDWR);/以读写方式打开串口if(fd=-1)/如果不能打开串口一 perror(“提示错误!”); 3.3串口设置
31、 在Linux 系统中,设备都是以文件的形式表示的,串口参数一般包括波特率、起始位数量、停止位数量等。下面对这些串口参数进行详细说明。(1) 起始位通信线路上没有数据被传送时,处于逻辑“1”状态。当发送字符数数据是首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接收端检测到这个低电平之后,就开始准备接收数据位信号。起始位所起的作用就是使通信双方同步。(2) 数据位当接收端收到起始位后,开始接收数据位。数据位的个数可以是58位。在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次将其转换成并行数据。(3) 奇偶校验位数据位发送完后,为了保证数
32、据的可靠性,还要传送一个奇偶校验位。奇偶校验用于差错检测。如果选择偶检验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇检验,则数据位和奇偶位的逻辑“1”的个数为奇数。(4) 停止位在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是12位的低电平。接收端收到停止位后,通信线路便恢复逻辑“1”的状态,直到下一个数据的起始位到来。(5) 波特率通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。对大多数嵌入式设备来说,其波特率都设置为115200。访问串行口通过对设备文件的访问来实现,仅需打开相应的设备文件
33、。串口的设置主要是设置struct termios 结构体中的各成员值。#includestruct termiounsigned short c_iflag; /*输入模式标志*/unsigned short c_oflag; /*输出模式标志*/unsigned short c_cflag; /*控制模式标志*/unsigned short c_lflag; /*本地模式标志*/unsigned char c_line; /*线路规范*/unsigned char c_ccNCC; /*控制特征值*/波特率设置:struct termios option;tcgetattr(fd,&opt
34、ion);cfsetispeed(&option,B115200);/*设置为115200Bps*/cfsetospeed(&option,B115200);tcsetattr(fd,TCANOW,&option);检验位设置:无校验 8 位:options.c_cflag &=PARENBoptions.c_cflag &=CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS8;奇效验(Odd)7 位:options.c_cflag=PARENB;options.c_cflag &=PARODD;options.c_cflag &=CSTOPB;
35、options.c_cflag &=CSIZE;options.c_cflag=CS7;偶校验(Even)7 位:options.c_cflag &=PARENB;options.c_cflag=OARODD;options.c_cflag &= CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS7;Space 校验7 位:options.c_cflag &= PARENB;options.c_cflag &=CSTOPB;options.c_cflag &=&CSIZE;options.c_cflag=CS8;停止位设置:1位: options
36、.c_cflag &=CSTOPB;2位: options.c_cflag=CSTOPB;模式设置:需要注意的是,如果不是开发终端之类的,只是串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯。options.c_lflag &=(ICANONECHOECHOEISIG);/*Input*/options.c_oflag &=OPOST;/*Output*/3.4 串口读写在Linux 系统中,对设备和目录的操作都等同于文件的操作,这样大大简化了系统对不同设备的处理,提高了效率。在程序中,设备和文件都是使用文件描述符来进行操作的。文件描述符是一个非负的整数,是一个
37、索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存的文件或者是创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写时也需要将文件描述符作为参数传递给相应的函数。在Linux 系统中,所有的设备文件都位于“/ dev”下,其中串口对应的设备名为“/ dev/ ttyS0”,因此对串口的读写就可以像读写(“read”和“write”) 普通文件一样来读写设备文件,所不同的是需要对串口的其他参数另做配置。打开串口之后,读写串口就很容易了,把串口当作文件读写就可以了。(1)发送数据char butter1024;int Length=1024;int nByte;nByte=writ
38、e(fd,buffer,Length);(2)读取串口数据使用文件操作read 函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read 函数返回的字符数是实际串口收到的字符数。读取数据时比较需要技巧的。char buff1024;int Len=1024;int rdadByte=read(fd,buff,Len);也可以使用操作文件的函数来实现异步读取,如fcntl,或者selectt 等来操作。fd_set rfds;struct timeval tv;int retval;/*下面几行设置要监视进行读写操作的文件集*/FD-ZERO(&rfds); /文件集清零FD_SE
39、T(portsportNo.handle,&rfds); /向集合中添加一个文件句柄tv.tv_sec=Timeout/1000; /设置等待的时间tv.tv_usec=(Timeeout%1000)*1000;retval=select(16,&rfds,NULL,NULL,&tv;) /文件所监视的文件集准备好.if(rdtvel) /文件集中有文件在等待时间内准备好了.actuaIRead=read(portsportNo.handle,buf,maxCnt); /读取数据下面两个实例给出了串口读和写两个程序部分代码。写串口的程序将在宿主机上运行,读串口程序将在目标板上运行。写串口部分程
40、序:doprintf(“Input some words(enter quit to exit):”);memset(buff, 0,BUFFER_SIZE);if(fgets(buff,BUFFER_SIZE,stdin)=NULL)perror(“fgets”);break;write(fd,buff,strlen(buff);whie(strncmp(buff,”quit”,4);读串口部分程序:domemset(buff,0,BUFFER_SIZE);if(read(fd,buff,BUFFER_SIZE)0)printf(“The received words are:%s”,buf
41、f);while(strncmp(buff,”quit”,4);3.5 关闭串口在Linux 系统中,对设备和目录的操作都等同于文件的操作, 关闭串口就是关闭文件,而设备和文件都是使用文件描述符来进行操作的。文件描述符是一个索引值,指向内核中每个进程打开文件的记录表,因此关闭文件就只要关闭文件描述符就可以了。close(fd);四、总结 本文介绍了一种基于嵌入式的串口通信系统,采用S3C2410 芯片作为串口通信的控制核心器件,实现了在Linux 操作系统下宿主机与目标机间串口通信的基本功能。在系统的结构实现上,给出了系统的硬件实现原理,并详细介绍了其软件实现过程,比如设置串口、读写串口等。该
42、系统操作方便,实现容易,在此基础上进一步改进,可以在基于Linux 操作系统的ARM 平台上实现更多的嵌入式功能。这是我第一次独立在Linux系统下进行设计开发,通过一次次的实验慢慢进步,但是由于设计时间有限,本次设计难免有很多不足,需要进一步改进,主要是以下几个方面:(1)本次设计可以进一步完善,可以从其他方面进行考虑。(2)本次设计只考虑到了单个串口时的通信,当多个串口的情况下,这种方法就行不通了。(3)本次设计的系统结构简单,但是不够严谨,容易造成数据通信出错。总之,通过这两个周的学习,还是学到了不少的知识!不仅纠正了课程学习过程中出现的许多错误,还在试验中验证了自己的一些猜想。在学习的
43、过程中有失败,当然也有困惑,有成功,当然就有喜悦。虽然只是课程设计,但我拿出了自己的全部精力去对待,能学到知识固然值得骄傲,能认识到自己的过错和不足不也是一件幸事吗!做学问也是做人,再作学问的过程中体味做人的道理不也是一种收获吗?记得古语中说:“学,然后知不足”!希望这次学习只是我学习PLC的开始,也算是启蒙吧!我必将更加努力的学习它完善自己。我想这就是我学习这门课的最大感受吧!275、 致谢 在学习中,老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及侮人不倦的师者风范是我终生学习的楷模,老师们的高深精湛的造诣与严谨求实的治学精神,将永远激励着我。这次课设中还得到众多
44、老师的关心支持和帮助。在此,谨向老师们致以衷心的感谢和崇高的敬意!另外,感谢校方给予我这样一次机会,能够独立地完成一个课程设计,并在这个过程当中,给予我们各种方便,使我们在这学期快要结课的时候,能够将学到的只是应用到实践中,增强了我们实践操作和动手应用能力,提高了独立思考的能力。 感谢所有任课老师和所有同学在这次课设中给自己的指导和帮助,是他们教会了我专业知识,教会了我如何学习,教会了我如何做人。正是由于他们,我才能在各方面取得显著的进步,在此向他们表示我由衷的谢意。感谢我们一组几位同学的共同努力,积极配合。在制作过程中遇到困难,积极解决。团队意识得到提升。 最后,我要向百忙之中抽时间对本文进
45、行审阅,评议和参与本人论文答辩的马维俊和张玺君老师表示真心的感谢。参考文献1张思民编著.嵌入式系统设计与应用M. 北京:清华大学出版社, 2008.2ARM Limited. ARM Developer Suiter (Version 1.2) , Assemble Guide, ARM DUI 0068A, 2000.3熊茂华、杨震伦主编. ARM9嵌入式系统设计与开发应用M.北京:清华大学出版社,2008.4刘彦文主编.基于ARM TDMI的S3C44BOX嵌入式微处理器技术M.北京:清华大学出版社,2009.5徐磊编著.Linux系统下C程序开发详解M. 北京:电子工业出版社,2008.
46、6华清远见嵌入式培训中心编著. 嵌入式Linux系统开发标准教程(第2版)M. 北京:人民邮电出版社,2009.7罗苑棠编著.嵌入式Linux驱动程序和系统开发实例精讲M.北京:电子工业出版社,2009.8罗蕾主编. 嵌入式实时操作系统及应用开发(第2版)M. 北京:北京航空航天大学出版社,2007.9华清远见嵌入式培训中心编著. Linux设备开发详解(第2版)M. 北京:人民邮电出版社,2010.10 Advanced Programming in the UNIX EnvironmentMW.Richard Stevens,2000. 附 录串口通信程序serial_com.c源代码:/*serial_com.c*/#include #include #include #include #include #include #include #include #define MODEMDEVICE /dev/ttyS0#define _POSIX_SOURCE 1#define FALSE 0#define TRUE 1volatile int STOP=FALSE;main() int fd,n=0,c,BAUDRATE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年绿色生态稻谷产销合作协议书
- 二零二五年度新型城镇化项目房屋买卖定金协议书
- 2025版夫妻共同房产租赁及婚后财产管理协议书范本
- 2025年智能铁路信号设备研发与采购合作协议
- 2025年度一致行动人网络安全风险评估与管理服务协议
- 2025年绿色农产品养殖技术与品牌战略实施协议
- 2025年专项科技研发成果转化项目资金借款协议
- 2025年绿色石渣运输与土地复垦一体化服务合作协议
- 2025中小企业金融产品定制化服务与风险控制合作协议
- 2025年自媒体矩阵运营及内容营销合作协议
- 2025-2030中国电子商务代运营行业营销推广及未来前景展望报告
- 2025年陕西、山西、青海、宁夏高考政治试卷真题(含答案解析)
- 2025年 中国南水北调集团新能源投资公司第一批中层及考试笔试试卷附答案
- 2025年河南省高考化学试卷真题(含答案及解析)
- 团餐公司运营管理制度
- 核电厂气载流出物中氪85分析方法 编制说明
- 超声科考核管理制度
- T/CCS 031-2023矿用隔爆兼本质安全型变频调速一体机
- 三方股份合作协议书模板
- 2024-2025 学年七年级英语下学期期末模拟卷 (深圳专用)原卷
- 新员工入职廉洁从业教育
评论
0/150
提交评论