欢迎访问有用文档网!

当前位置: 有用文档网 > 作文大全 >

VxWorks下多串口卡驱动程序设计初探

| 浏览次数:

摘 要 本文以OX16PCI958串口芯片的多串口卡驱动为例,研究和分析了VxWork串口驱动的工作原理,并在此基础上对SCC驱动和tty驱动工作原理进行简单阐述,同时介绍了PPC体系结构微处理器的串口驱动程序设计的方法和步骤,以期为VxWorks下多串口卡驱动程序设计提供有价值的参考。

关键词 VxWorks;多串口驱动程序设计

中图分类号:TP368 文献标识码:A 文章编号:1671-7597(2013)13-0156-01

嵌入式安全平台研制项目中,尤其应重视对多通路并发串行数据的传送和安全问题的处理。从当前市场发展状况看,传统的通用串口芯片在数据的接受和传送上已很难满足大数据传送的要求,所以,应考虑使用传送速度更高的串口芯片。同时针对标准的VxWorks驱动程序不能满足高速串口芯片的运行要求,本文重点对多通道高速串口驱动程序的设计进行简单的介绍。

1 VxWorks程序架构介绍

1.1 基本框架

VxWorks系统中I/O系统并不包含串行设备的驱动程序,其功能的实现主要凭借ttyDrv。串行设备的正常使用,一方面应保证其能够支持目标代理接口和I/O系统,另一方面其应在轮训两种方式或中断方式下正常工作。

对串行设备驱动程序而言,一般与设备无关的部分在虚拟设备ttyDrv实现,而主要程序需要程序员进行编写,然后利用系统提供的接口将其安装到ttyDrv中。虚拟设备ttyDrv重点负责I/O系统和驱动程序间的信息通讯。当系统中有对I/O操作的请求时,虚拟设备ttyDrv首先对请求进行处理,同时将请求涉及的命令交给设备驱动程序,在该驱动程序的操控下,实现对I/O系统的实际操作,同时在ttyDrv操作控制下将入口函数挂接在I/O系统中,然后对设备的相关描述进行初始化操作,处理完毕后系统会自动将其添加到设备列表中。一旦I/O系统发现有请求的命令时,就会触发挂接在I/O系统入口函数,从而响应有关请求。虚拟设备ttyDrv挂接函数时首先会利用ttyDrv()函数调用iosDrvinstall()函数,然后将ttyIoctl()、ttyOpen()、tyWtite()、tyRead()等一些函数挂接在驱动程序中供响应请求用。

1.2 创建专用串口设备

专用串口设备创建时系统会进行初始化处理。首先,初始化设备的描述符,并通过函数tyDevInit()初始化tyLib以及select的功能。其次,创建信号量以及用于输入、输出的缓冲区。最后,通过调用iosDevAdd()函数完成两项工作:1)将设备添加到设备的列表中;2)设置设备的工作模式为中断。

1.3 设备的读、写操作

应用程序为了响应读写操作会首先调用write()函数,接着I/O系统将数据请求传递ttyDrv执行函数tyWtite(),并通过复制的方式将存在于用户缓冲区的内容加载到环形缓冲区中,并初始化处理发送的循环,这里调用的函数是xxTxStartUp,将原来设置为中断的工作模式打开为发送工作做好准备,系统通过调用xxIntTx中断服务程序完成字符的发送工作,最后将中断清除。

当串口发现相关数据后,会立刻调用xxRcvInt中断服务程序在制定的缓冲区位置进行写操作,与此同时还需要将数据传送给高层协议,该传送过程需要使用tyIRd()进行操作。用户利用函数read()进行读操作的同时,I/O系统会使用函数tyRead(),将环形队列的内容读入到用户缓冲区中。

2 VxWorks下多通道串口驱动程序设计

2.1 基本设计要求

多通道串口驱动程序设计时应满足以下几点要求:首先,设计工作的开展应以OX16PCI958串口芯片为基础,同时还应保证每路串口通道满足多任务并发访问的要求,并且能够对中断是否有效进行准确的判断,以此进一步提高CPU的利用率。其次,在实现端口设置的同时,能够保证芯片和应用程序之间进行正确的通讯。

2.2 设计应注意的问题

2.2.1 多任务并发设计

为了满足驱动程序能够正确处理并发需求的要求,驱动程序内部采用中断所和任务锁界定对临界资源的修改权限,并保证了连续寄存器操作指令能够不断被打断。驱动程序实际的设计时每个通道会对应一个独立的ST16C_CHAN,从而当访问某个通道时不会对其他通道造成影响,以此实现并发访问。

2.2.2 中断共享设置

为了提高CPU的工作效率,外部设备与CPU之间的通讯机制为中断,以此防止频繁查看外部设备,增加CPU的运算时间。中断运行的原理是:系统会利用存在于sysSerial.c文件中的函数sysSerSerialHwInit()实现对pciConfigInByte()函数的调用,同时将参数设置为PCI_CFG_DEV_INT_LINE,并从寄存器中获得中断线,并使用pciIntConnect()函数将函数ST16C958Int()进行挂接,最后为了对中断进行共享还需要调用sysIntEnablePIC()函数。另外,在处理中断时还应注意其他共享同一信号设备的中断。

2.2.3 端口设置

用户访问虚拟设备ttyDrv时会首先调用ioctl()函数,与此同时I/O系统也会调用ttyIoctl()函数,该函数会访问ST16C958Ioctl()函数然后实现查询、设置工作模式、设置波特率等功能。另外,驱动程序设计时还应注重把握应用程序和串口访问数据之间的交互设计。

3 总结

在VxWorks下以OX16PCI958芯片为基础进行多串口驱动程序设计,综合数据结构等方面的知识,实现了多通道串口通信驱动的要求,同时对今后VxWorks下多串口卡驱动程序的设计具有较高的借鉴价值。

参考文献

[1]欧峰,吴成富,段晓军,陈怀民.基于VxWorks的多串口卡驱动程序设计[J].测控技术,2008(10).

[2]李洪,吴宁.基于VxWorks的虚拟机串口通信的实现[J].信息系统工程,2009(05).

推荐访问:初探 程序设计 驱动 串口卡 VxWorks

热门排行Top Ranking

支部组织生活方面存在问题清单和整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的支部组织生活方面存在问题清单和整改措施党组织生活个人问题整改清单文章,供大家阅读参考

2021年党员个人问题清单及整改措施 党组织生活个人问题整改清单

下面是小编为大家精心整理的2021年党员个人问题清单及整改措施党组织生活个人问题整改清单文章,供大家阅读参考。

浅析军队战斗力损耗的新变化

关键词:军队;战斗力损耗;新变化军队战斗力的结构,是战斗力各要素间的结合方式和相互关系。军队战斗力的

小学六年级毕业演讲稿100字左右9篇

小学六年级毕业演讲稿100字左右9篇小学六年级毕业演讲稿100字左右篇1敬爱的老师,亲爱的同学们:大

问题及整改措施 (2) 药房个人存在问题及整改措施

下面是小编为大家精心整理的问题及整改措施(2)药房个人存在问题及整改措施文章,供大家阅读参考。精品文章《问题及

个人问题清单及整改措施(最新) 能力作风建设个人问题清单及整改措施

下面是小编为大家精心整理的个人问题清单及整改措施(最新)能力作风建设个人问题清单及整改措施文章,供大家阅读参考。在认真

疫情防控赞美警察诗朗诵 关于警察的诗朗诵

下面是小编为大家精心整理的疫情防控赞美警察诗朗诵关于警察的诗朗诵文章,供大家阅读参考。疫情防控赞美警

纳税人满意度调查存在不足及对策探讨 提升纳税人满意度的方式方法有哪些

下面是小编为大家精心整理的纳税人满意度调查存在不足及对策探讨提升纳税人满意度的方式方法有哪些文章,供大家阅读参考。纳

小学思想品德教育面临的问题及对策

摘要:小学思想品德课程是小学教育教学过程中不可或缺的一门综合性课程,它对学生良好品德的形成具有重要影

2020党支部班子查摆问题清单及整改措施 农村党支部问题清单

下面是小编为大家精心整理的2020党支部班子查摆问题清单及整改措施农村党支部问题清单文章,供大家阅读参

消防安全检查简报 派出所校园消防安全检查简报

下面是小编为大家精心整理的消防安全检查简报派出所校园消防安全检查简报文章,供大家阅读参考。简报第2期申扎县中学

2021教师党员年度个人总结8篇

2021教师党员年度个人总结8篇2021教师党员年度个人总结篇1敬爱的党组织:我是一个普通年轻的人民