Linux操作系统下的四个串口

   最有有个项目,用到了PC104的板子(PCM-3341),Linux的系统。

  但是在项目中至少要用到3个RS232,看datasheet,够用。板子有3个独立的RS232和一个RS232/485复用口。但是在实际测试用,遇到个问题。1口和2口都能正常工作(后来发现也是有问题的,读传感器数据的时候,读不完全),但是3口和4口却出现了很奇怪的现象。

  主要表现为:

  1.可以输入输出

  2.输入输出速率很慢

  3.发现数据在缓存里头,每次大概只能输出12个字符左右(不确定的长度)。

  开始一直没有找到原来,后来咨询别的技术人员,估计是中断问题。

  以google发现了下面的文章:原始出处,问题解决了,很感谢高手的指点。可惜还没来得及去深入。

  LINUX默认支持四个串口:COM1(ttyS0),COM2(ttyS1),COM3(ttyS2),COM4(ttyS3)(较新的linux中已不使用cuaX来区分拨入拨出),通常情况下,COM1和COM3共同使用IRQ4,COM2和COM4共同使用IRQ3。

  虽然LINUX支持共享中断技术,但它无法发现实际的物理中断冲突。在上述情况下,COM3和COM4因为中断冲突而无法正常使用。本文介绍了如何在Red Hat 8.0环境下使用COM3和COM4。

  由于当前开发项目需要同时使用四个串口,而所用的开发用工控机恰好有四个,省去了买多口卡的麻烦,直接编程使用了COM3和COM4。当进行测试时,问题出现了:COM3和COM4收发数据非常的慢,几个BYTES的数据在115.2K的通讯速率下要一二十秒才能发出或收到,完全不能满足对应用的要求。

  通过查检资料,确认这是一种典型的中断冲突故障,使用方法如下:

  setserial /dev/ttyS2 irq 0

  再使用通讯程序,现在数据传输就看不到有明显的延迟了。这是由于将COM3设置为irq0中断时,设备实际上并未使用中断,而是使用了polling技术,从而证明了故障是由于中断机制造成的,有冲突发生。

  主板上COM3和COM4的跳线表明可使用IRQ5和IRQ7,于是设置好跳线并运行

  setserial /dev/ttyS2 irq 5

  setserial /dev/ttyS2 irq 7

  使用通讯程序,发现故障依然,怀疑仍有冲突。查阅资料知,IRQ5和IRQ7通常为并口使用,但当前系统未使用并口啊。进入BIOS发现里面设置了并口并占用IRQ7,将该项DISABLE掉。似乎和IRQ5没多大关系,发现设置中IRQ5和7为"PCI/ISA PnP",改为"Legacy ISA"方式后,重启,COM1--COM4均可正常使用。

时间: 2024-10-10 21:44:18

Linux操作系统下的四个串口的相关文章

Linux操作系统基础(四)保护模式内存管理(2)【转】

转自:http://blog.csdn.net/rosetta/article/details/8570681 Linux操作系统基础(四)保护模式内存管理(2) 转载请注明出处:http://blog.csdn.net/rosetta           本节主要讲:保护模式内存管理相关的物理地址空间,逻辑和线性地址空间,段选择符,段寄存器,段描述符. 物理地址空间          保护模式下,IA-32架构提供了一个4GBytes(2^32bytes)正常大小的物理寻址空间.处理器可以使用

《Java程序员面试秘笈》—— 面试题3 Linux操作系统下如何安装Java SE开发环境

面试题3 Linux操作系统下如何安装Java SE开发环境 考点:由于大部分的计算机用户都使用Windows作为操作系统,而Java语言是具有跨平台优势的,不同企业有不同的开发环境,本试题考察求职者是否有在Linux下开发Java的经验.Linux环境下的Java安装是一个基础问题. 出现频率: [面试题解析]该问题有两个关键点,一个是Linux版本Java SDK的文件类型,另外一个是Linux环境变量的配置. 参考答案: Oracle发布的Linux操作系统Java包有JDK和JRE两种版

详解Linux 操作系统下安装rpm包的方法步骤_linux shell

第2代Linux操作系统在安装软件方面相当简单:第一步,搜索你要的软件,比如你要找一个游戏软件,它的名称叫myward,这个游戏软件的说明是:myown war game.Linux操作系统搜索这个软件包就只需要输入命令apt-cache searchmyward,或者输入软件名称的一部分apt-cache searchwar,或者你不知道软件名称. 下面有一张图可以清晰地表示linux软件应用的架构关系: 在Linux启动的时候.首先会启动内核(kernel),内核是一段计算机程序,这个程序直

Linux操作系统下C++编程初探

Linux下C++编程和在Windows下的没有什么两样,它同样需要编译.链接.调度.运行等步骤,只不过执行这些步骤在两种操作系统下所做的不是同样的事情. 在Windows下有TC, BC, VC等编译器,它们极大地方便了程序的编辑编译等,在Windows下你只需要看明白菜单就可以了.而在Linux下是Gcc, G++, Gdb等工具,刚开始时你可能甚至不知道如何下手去调试程序,你也可能甚至不知道程序在哪里编辑.不过这些都不是问题,慢慢来我们都能行! 下面我们以一个最简单也是最经典的Hello

如何配置Linux操作系统下的FTP服务器

为了实现Linux环境下的FTP服务器配置,绝大多数的Linux发行套装中都选用的是Washington University FTP(Wu-Ftpd),这是一个性能优秀的服务器软件,由于它具有众多强大功能和超大的吞吐量,Internet上的FTP服务器有60%以上采用了它. 安装与运行 以下我们以RedHat Linux为例. 1.安装 根据服务对象的不同,FTP服务可以分为两类:一类是系统FTP服务器,它只允许系统上的合法用户使用:另一类是匿名FTP服务器,它允许任何人登录到FTP服务器,和

在Linux操作系统下用软件实现RAID功能

数据安全性是人们在使用计算机中最重要的问题之一.通常情况下,人们会在服务器环境中采用硬盘镜像技术,以达到数据的双重备份.同样,在Linux环境下,我们也可以采用这种技术. 在Linux环境下,采用Raidtools工具,不仅可以将两个硬盘进行镜像,还可以制作软RAID0.RAID1.RAID5.说是软RAID,是因为通常情况下,RAID盘是通过专用的RAID卡进行的,而在Linux环境下,可以利用Raidtools软件实现RAID功能,所以称为软RAID.本文介绍根据不同的Linux版本,建立并

介绍Linux操作系统下修改系统时间的方法

我们一般使用"date -s"命令来修改系统时间.比如将系统时间设定成2007年8月19日的命令如下. #date -s 08/19/2007 将系统时间设定成下午11点20分0秒的命令如下. #date -s 11:20:00 注意,这里说的是系统时间,是linux由操作系统维护的. 在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现.为了保持系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS.由于该同步

在Linux操作系统下设置NFS共享技巧

网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作. 在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试.因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌

linux操作系统下从其他服务器获取的xml字符串中文为乱码,在本地无法解析

问题描述 一个javaweb项目部署在一台服务器上,服务器采用的是linux操作系统,调用其他公司提供的webservice接口获取到一个xml的字符串,然后使用dom在本地解析,得到的字符串是乱码,请问高手们这个问题怎么解决.publicstaticList<Product>readProductDomXml(Stringstr)throwsException{List<Product>products=newArrayList<Product>();Document