vxworks下多串口卡驱动程序设计探析

vxworks下多串口卡驱动程序设计探析

ID:8252761

大小:27.00 KB

页数:5页

时间:2018-03-13

vxworks下多串口卡驱动程序设计探析_第1页
vxworks下多串口卡驱动程序设计探析_第2页
vxworks下多串口卡驱动程序设计探析_第3页
vxworks下多串口卡驱动程序设计探析_第4页
vxworks下多串口卡驱动程序设计探析_第5页
资源描述:

《vxworks下多串口卡驱动程序设计探析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VxWorks下多串口卡驱动程序设计探析  摘要本文以OX16PCI958串口芯片的多串口卡驱动为例,研究和分析了VxWork串口驱动的工作原理,并在此基础上对SCC驱动和tty驱动工作原理进行简单阐述,同时介绍了PPC体系结构微处理器的串口驱动程序设计的方法和步骤,以期为VxWorks下多串口卡驱动程序设计提供有价值的参考。关键词VxWorks;多串口驱动程序设计中图分类号:TP368文献标识码:A文章编号:1671-7597(2013)13-0156-01嵌入式安全平台研制项目中,尤其应重视对多通路并发串行数据的传送和安全问题的处理。从当前市场发

2、展状况看,传统的通用串口芯片在数据的接受和传送上已很难满足大数据传送的要求,所以,应考虑使用传送速度更高的串口芯片。同时针对标准的VxWorks驱动程序不能满足高速串口芯片的运行要求,本文重点对多通道高速串口驱动程序的设计进行简单的介绍。1VxWorks程序架构介绍1.1基本框架5VxWorks系统中I/O系统并不包含串行设备的驱动程序,其功能的实现主要凭借ttyDrv。串行设备的正常使用,一方面应保证其能够支持目标代理接口和I/O系统,另一方面其应在轮训两种方式或中断方式下正常工作。对串行设备驱动程序而言,一般与设备无关的部分在虚拟设备ttyDrv

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

4、时首先会利用ttyDrv()函数调用iosDrvinstall()函数,然后将ttyIoctl()、ttyOpen()、tyWtite()、tyRead()等一些函数挂接在驱动程序中供响应请求用。1.2创建专用串口设备5专用串口设备创建时系统会进行初始化处理。首先,初始化设备的描述符,并通过函数tyDevInit()初始化tyLib以及select的功能。其次,创建信号量以及用于输入、输出的缓冲区。最后,通过调用iosDevAdd()函数完成两项工作:1)将设备添加到设备的列表中;2)设置设备的工作模式为中断。1.3设备的读、写操作应用程序为了响应读

5、写操作会首先调用write()函数,接着I/O系统将数据请求传递ttyDrv执行函数tyWtite(),并通过复制的方式将存在于用户缓冲区的内容加载到环形缓冲区中,并初始化处理发送的循环,这里调用的函数是xxTxStartUp,将原来设置为中断的工作模式打开为发送工作做好准备,系统通过调用xxIntTx中断服务程序完成字符的发送工作,最后将中断清除。当串口发现相关数据后,会立刻调用xxRcvInt中断服务程序在制定的缓冲区位置进行写操作,与此同时还需要将数据传送给高层协议,该传送过程需要使用tyIRd()进行操作。用户利用函数read()进行读操作的

6、同时,I/O系统会使用函数tyRead(),将环形队列的内容读入到用户缓冲区中。2VxWorks下多通道串口驱动程序设计2.1基本设计要求5多通道串口驱动程序设计时应满足以下几点要求:首先,设计工作的开展应以OX16PCI958串口芯片为基础,同时还应保证每路串口通道满足多任务并发访问的要求,并且能够对中断是否有效进行准确的判断,以此进一步提高CPU的利用率。其次,在实现端口设置的同时,能够保证芯片和应用程序之间进行正确的通讯。2.2设计应注意的问题2.2.1多任务并发设计为了满足驱动程序能够正确处理并发需求的要求,驱动程序内部采用中断所和任务锁界定

7、对临界资源的修改权限,并保证了连续寄存器操作指令能够不断被打断。驱动程序实际的设计时每个通道会对应一个独立的ST16C_CHAN,从而当访问某个通道时不会对其他通道造成影响,以此实现并发访问。2.2.2中断共享设置为了提高CPU的工作效率,外部设备与CPU之间的通讯机制为中断,以此防止频繁查看外部设备,增加CPU的运算时间。中断运行的原理是:系统会利用存在于sysSerial.c文件中的函数sysSerSerialHwInit()实现对pciConfigInByte()函数的调用,同时将参数设置为PCI_CFG_DEV_INT_LINE,并从寄存器中

8、获得中断线,并使用pciIntConnect()函数将函数ST16C958Int()进行挂接,最后为了对中断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。