RTX环境下PCI设备实时驱动的开发
时间:2026-01-16
时间:2026-01-16
计 算 机 工 程 第 36 卷 第20期
Vol.36 No.20 Computer Engineering · · 工程应用技术与实现
文章编号:1000—3428(2010)20—0211—03
文献标识码:A
2010年10月
October2010
中图分类号:TP316
RTX环境下PCI设备实时驱动的开发
黄 键,庞亚华,薛顺虎
(中航工业西安飞行自动控制研究所,西安 710065)
摘 要:掌握实时驱动的设计方法,能够从一定程度上解决由于设备实时驱动问题给实时应用在产品选型和功能实现等方面带来的不便。为此,介绍RTX实时环境下PCI总线设备的实时驱动的开发流程,以某PCI设备为例,给出实时驱动设计中包括设备定位、总线信息获取、地址映射、初始化配置以及伺服中断等功能的具体实现,将该驱动应用到某RTX实时系统中,经过实验验证取得了较好的应用效果。关键词:RTX实时系统;实时驱动;PCI总线;地址映射
Development of Real-time Drive of PCI Device
Under RTX Environment
HUANG Jian, PANG Ya-hua, XUE Shun-hu
(AVIC Xi’an Flight Automatic Control Research Institute, Xi’an 710065, China)
【Abstract】The inconvenience of product selection and function realization can be solved at a certain extern when the method of designing real-time drive is mastered. It introduces the developing flow of PCI bus drive in RTX real-time environment. The following functions of real-time drive design are explained including finding device, getting bus message, mapping address, initial configuration, serving interrupt and so on. The real-time drive application in a certain RTX real-time system proves its advantage. 【Key words】RTX real-time system; real-time drive; PCI bus; address mapping
1 概述
有些工业控制、航空航天等领域对实时性都有一定的要求,系统的事件响应如果不确定或超时,就可能会导致系统出错,甚至崩溃。RTX作为Windows的实时扩展子系统,不仅解决了Windows较差的实时性问题,而且也继承了Windows的所有优势,能为用户提供良好的实时控制性能、高效的扩展性和可靠的稳定性。作为实时平台,RTX只提供了部分外围硬件的驱动支持,如部分网卡、USB、串并口等,而大部分的第三方硬件也只是提供了Windows、Linux或VxWorks等操作系统的支持,对RTX的支持并不理想。因此,在构建基于RTX的实时应用系统时,需要考虑数据采集或总线通信等外围设备的RTX驱动问题。
对于硬件驱动支持,一般有2种选择:(1)从RTX代理商购买或委托其开发,这种选择成本较高。(2)选择开放性较好的硬件厂商进行自主开发,这种选择必须要求硬件厂商提供完整的硬件资料和技术方案书。
本文以某PCI数据采集设备为例,对其RTX实时环境下的驱动程序进行了设计开发,完成了对这些设备的初始化配置、启动以及中断挂接等操作。测试表明,驱动程序工作稳定,能够满足实时性要求,输出结果正确。将该设备驱动应用在某课题的RTX实时系统中,经过实验验证,达到了预期效果。
RTX作为一个完全的Windows扩展系统,并不对原有Windows系统架构作任何修改与封装,而是对Windows硬件抽象层的扩展。精确的时间执行机制对系统相当重要,RTX提供的定时器周期最低可以做到100 µs。通过应用高速的IPC信息和同步机制,RTX可以实现与Windows之间的数据通信以及进程间同步。RTX提供了对I/O以及内存的精确控制,为实时任务的执行提供了100%的可靠性。
RTX提供了对微软Visual Studio系列开发平台的全面支持,支持Win32 API标准函数的调用。开发人员可以最大程度地减少开发周期和成本,同时支持对IRQ、I/O、内存等硬件资源的直接访问,使得开发人员能够较为自主地进行应用系统的定制,便于系统的移植和扩展。
3 实时驱动设计[3-4]
所谓驱动程序,其实就是直接控制设备进行工作的那部分软件程序。如果要使用PCI总线设备上的某个功能,就需要CPU能通过某段范围的地址访问或内存访问的方式与该功能交互,当然也需要获知该功能的一些配置参数并可以修改。图1是PCI总线的配置空间结构示意图。对CPU而言,一般是通过操作PCI桥接芯片里面的定位寄存器和数据偏移寄存器,由桥接芯片通过PCI总线操作来完成配置。数据偏移寄存器则用来实现与位于设备上的内部配置寄存器进行数据交互,也就是图1中的Base Address Register。对于PCI总线设备来说,共有6个Base Address Register。
作者简介:黄 键(1980-),男,工程师、硕士,主研方向:计算机仿真技术,实时操作系统应用;庞亚华,工程师、硕士;薛顺虎,研究员
收稿日期:2010-05-10 E-mail:beyond_huangjian@http://www.77cn.com.cn
2 RTX简介[1-2]
RTX是美国Ardence公司开发的基于Windows操作系统的硬实时解决方案,可以为用户提供良好的实时控制性能、高效的扩展性以及稳定性。严格意义上来说,RTX并不是一个独立的操作系统,它是Windows上的一个实时扩展子系统。
—211—
图1 PCI总线空间结构
一般情况下,PCI定位寄存器配置由BIOS自动完成初始
化,如分配总线号、中断向量、地址空间等,那么驱动程序只需要对数据偏移寄存器,也就是与之交互的设备内部寄存器进行配置。要访问内部寄存器,就必须获得PCI设备在BIOS上的映射基地址(存储于Base Address Register中),然后根据设备的技术方案书里 …… 此处隐藏:6027字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:期中考试失利后的总结与反思