VxWorks是WindRiver(风河)公司开发的嵌入式实时操作系统(RTOS),由于它的高实时性,所以广泛地应用于军事、工业控制、通信等领域;分析了Vxworks下PCI总线多功能数据采集卡的实现方法;以ADLINK的PCI7396数据采集卡为例,介绍PCI总线设备的配置空间,包括它的结构及访问方法,重点介绍PCI总线设备在VxWorks下驱动程序的开发步骤及编程要点,并对开发过程中的关键部分给予代码说明;在某综合控制系统中,开发的驱动程序运行稳定、可
【基于VxWorks的PCI总线多功能数据采集卡驱动开发】是嵌入式领域中一个重要的实践主题。VxWorks,由风河公司开发的实时操作系统,因其出色的实时性能而在军事、工业控制和通信等高要求领域得到广泛应用。在VxWorks环境下,开发PCI总线多功能数据采集卡的驱动程序,能实现高效且稳定的数据采集和处理。
VxWorks的I/O系统是驱动开发的基础。它提供了一套标准接口,包括creat、delete、open、close、read、write和ioctl等函数,隐藏了硬件层的细节,使得应用程序能够方便地与设备交互。I/O系统通过文件描述符表、设备描述符表和驱动程序列表进行驱动管理。设备驱动程序按照设备类型可分为字符设备、块设备和网络设备,每种类型的驱动都有相应的接口和管理模块。字符设备驱动最简单,仅需提供基本的I/O接口;块设备驱动相对复杂,需与文件系统协作;网络设备驱动则需要处理复杂的网络协议,通常通过MUX接口与网络协议层交互。
在驱动程序的设计中,一般包含初始化、功能函数和中断服务程序(ISR)三个部分。初始化阶段主要负责硬件初始化和资源分配;功能函数实现具体功能;ISR则用于响应中断,确保系统能够快速响应外部事件。VxWorks中,应用程序通过I/O系统访问设备,对于块设备会经过文件系统,而非块设备则直接调用驱动。
以ADLINK的PCI7396为例,这是一种96位并行DIO卡,模拟了4个8255 PPI芯片,提供12个可配置的输入/输出端口。该卡支持外部触发的数据锁定和状态改变中断,便于实时监控和控制。PCI7396的寄存器包括PCI配置寄存器、本地配置寄存器和PCI-6308寄存器,分别用于不同的功能控制。
PCI总线作为广泛采用的局部总线标准,拥有配置空间、存储器空间和I/O空间。配置空间的头标区包含了设备的基本信息,如Vendor ID、Device ID等,是识别和配置PCI设备的关键。通过理解和访问这些寄存器,开发者可以编写驱动程序,实现对PCI设备的初始化、配置和数据交换。
在实际的综合控制系统中,开发的VxWorks驱动程序需要保证在各种工况下稳定运行,具备良好的兼容性和可靠性。因此,理解VxWorks的驱动模型、PCI总线的工作原理以及特定数据采集卡的硬件特性,是成功开发驱动程序的关键。通过对配置空间的深入理解,开发者可以有效地控制和管理PCI设备,从而实现高效的数据采集和处理。