VxBus设备驱动开发详解:PCI2040数据采集卡驱动案例

7 下载量 49 浏览量 更新于2024-08-29 收藏 158KB PDF 举报
"基于VxBus的设备驱动开发" VxBus是风河公司为VxWorks操作系统引入的一种创新的设备驱动程序架构,自VxWorks6.2版本开始引入。VxBus的主要目标是简化设备驱动的开发、管理和维护,提高系统的模块化程度,并增强驱动程序与硬件设备的交互能力。它特别支持minimal BSP(板级支持包),使得驱动程序能够更加灵活地适配不同的硬件平台。 VxBus架构的核心功能包括: 1. **设备匹配**:VxBus允许设备驱动程序根据硬件设备的特性自动匹配,确保正确的驱动程序能够与对应的硬件设备正确连接。 2. **硬件访问机制**:VxBus提供了驱动程序访问硬件的接口和机制,使得驱动可以高效、安全地操作硬件资源,如内存映射、中断处理等。 3. **软件访问设备功能**:通过VxBus,应用程序和其他软件组件可以透明地调用设备的功能,无需直接与硬件交互,降低了软件的复杂性。 4. **模块化设计**:VxBus支持设备驱动的模块化,每个驱动程序作为一个独立的模块,便于维护、升级和移植。 在VxBus架构下,总线控制器驱动程序服务扮演着关键角色,它们负责在系统启动时检测总线上的设备,并执行必要的初始化工作,确保设备能够正常工作。VxBus还提供了一种机制,使得设备的添加、删除和配置可以在VxWorks的Workbench工程环境中完成,降低了对BSP和驱动开发专业知识的要求,提高了开发效率。 以PCI2040数据采集卡驱动为例,开发过程中,开发者需要考虑如何利用VxBus的机制来实现驱动的注册、设备的探测、初始化以及数据传输等功能。驱动程序会根据PCI总线规范和PCI2040卡的特性进行编写,通过VxBus提供的接口与总线控制器驱动进行通信,从而实现对数据采集卡的控制。 在VxBus的管理下,硬件设备(device)和驱动程序(driver)之间的关系变得更加明确。设备在系统启动时被发现,然后驱动程序从驱动队列中查找并匹配合适的驱动实例(instance)。这种分离使得驱动的更新和管理更加简便,同时也增强了系统的稳定性和可扩展性。 VxBus是VxWorks系统中一个重要的进步,它为设备驱动开发带来了标准化和模块化的解决方案,简化了驱动程序的集成和维护,提升了整体系统的灵活性和可靠性。通过深入理解和有效利用VxBus架构,开发者可以更高效地开发和管理设备驱动,从而优化VxWorks系统的性能和用户体验。
2018-09-20 上传
目录 3 DMA驱动 1 3.1 简介 1 3.2 概要 1 3.3 VxBus驱动方法 1 3.3.1 {vxbDmaResourceGet}( ) 1 3.3.2 {vxbDmaResourceRelease}( ) 2 3.3.3 {vxbDmaResDedicatedGet}( ) 2 3.4 头文件 2 3.5 BSP配置 3 3.6 可用的工具函数 3 3.7 初始化 3 3.8 DMA系统结构和函数 3 3.8.1 (*dmaRead)( ) 3 3.8.2 (*dmaReadAndWait)( ) 4 3.8.3 (*dmaWrite)( ) 4 3.8.4 (*dmaWriteAndWait)( ) 4 3.8.5 (*dmaCancel)( ) 5 3.8.6 (*dmaPause)( ) 5 3.8.7 (*dmaResume)( ) 5 3.8.8 (*dmaStatus)( ) 5 3.9 调试 5 4 中断控制器驱动 5 4.1 介绍 6 4.2 概要 6 4.3 VxBus驱动方法 7 4.3.1 基本方法 7 4.3.2 动态向量方法 8 4.3.3 多处理器方法 9 4.4 头文件 9 4.5 BSP配置 10 4.5.1 中断输入表 10 4.5.2 动态向量表 11 4.5.3 CPU路由表 12 4.5.4 中断优先级 12 4.5.5 交差路由表 13 4.6 现有的工具函数 14 4.6.1 intCtlrHwConfGet( ) 14 4.6.2 intCtlrISRAdd( ) 14 4.6.3 intCtlrISRDisable( ) 14 4.6.4 intCtlrISREnable( ) 15 4.6.5 intCtlrISRRemove( ) 15 4.6.6 intCtlrPinFind( ) 15 4.6.7 intCtlrTableArgGet( ) 15 4.6.8 intCtlrTableFlagsGet( ) 15 4.6.9 intCtlrTableIsrGet( ) 15 4.6.10 intCtlrHwConfShow( ) 15 4.6.11 intCtlrTableCreate( ) 15 4.6.12 intCtlrTableFlagsSet( ) 15 4.1.13 intCtlrTableUserSet( ) 15 4.6.14 VXB_INTCTLR_ISR_CALL( ) 15 4.6.15 VXB_INTCTLR_PINENTRY_ENABLED( ) 16 4.6.16 VXB_INTCTLR_PINENTRY_ALLOCATED( ) 16 4.6.17 调度函数 16 4.7 初始化 16 4.8 中断控制器术语和层次 17 4.9 中断优先级 17 4.10 ISR调度 18 4.11 管理动态中断向量 20 4.12 中断输入的内部特征 22 4.13 VxWorks SMP 多处理器问题 22 4.14 调试 22 5 多功能驱动 23 5.1 介绍 23 5.2 概述 23 5.3 VxBus驱动方法 23 5.4 头文件 23 5.5 BSP配置 23 5.6 可用的工具函数 24 5.7 初始化 24 5.8 设备互联 24 5.8.1 交互寄存器 24 5.8.2 共享资源 25 5.8.3 其它交互 25 5.9 子设备的逻辑位置 25 5.10 调试 25 6 网卡驱动 25 6.1 介绍 25 6.1.1 术语 25 6.1.2 网络概述 26 6.2 网络接口驱动程序 27 6.2.1 网络接口驱动概述 27 6.2.2 网络接口驱动程序VxBus驱动方法 28 6.2.3 网络接口驱动程序头文件 33 6.2.4 网络接口驱动程序BSP配置 34 6.2.5 网络接口驱动程序可用的工具程序 34 6.2.6 网络接口驱动程序初始化 42 6.2.7 MUX:连接到网络代码 42 6.2.8 jobQueueLib:延迟中断处理 43 6.2.9 使用Ipcom_pkt包 43 6.2.10 netBufLib:用M_BLKs传输数据 46 6.2.11 协议对驱动程序的影响 48 6.2.12 其它的网络接口驱动问题 48 6.2.13 网络接口驱动程序的调试 48 6.3 PHY驱动程序 56 6.3.1 PHY驱动概述 56 6.3.2 PHY驱动程序的VxBus驱动方法 58 6.3.3 PHY驱动程序头文件 60 6.3.4 PHY驱动的BSP配置 60 6.3.5 PHY驱动程序拥有的工具程序 60 6.3.6 PHY驱动的初始化 62 6.3.7 PHY驱动的调试 62 6.4 无线以太网驱动 62 6.5 层次END驱动 62 7 Non-Volatile RAM驱动 63 7.1 介绍 63 7.2 Non-Volatile RAM 驱动 63 7.2.1 NVRAM驱动概述 63 7.2.2 针对NVRAM驱动的VxBus驱动方法 63 7.2.3 头文件 64 7.2.4 NVRAM驱动的BSP配置 64 7.2.5 NVRAM驱动的工具程序 65 7.2.6 NVRAM驱动的初始化 65 7.2.7 NVRAM块大小 65 7.2.8 栈NVRAM实例 66 7.2.9 调试NVRAM驱动 66 7.3 TureFFS Flash文件系统支持 66 7.3.1 TrueFFS概述 66 7.3.2 TrueFFS驱动开发流程 67 8 资源驱动 90 8.1 介绍 90 8.2 概要 90 8.3 VxBus驱动方法 91 8.4 头文件 91 8.5 BSP配置 91 8.6 可以的工具函数 91 8.7 初始化 91 8.8 调试 91 10 存储器驱动 92 10.1 介绍 92 10.2 概要 92 10.3 VxBus驱动方法 92 10.4 头文件 92 10.5 BSP配置 92 10.6 可用的工具程序 93 10.7 初始化 93 10.8 VxWorks文件系统关联接口 93 10.8.1 设备创建 93 10.8.2 处理 95 10.8.3 事件报告 95 10.9 写一个新的存储器驱动 96 10.10 调试 97 12 USB驱动 97 12.1 介绍 97 12.2 风河USB概要 98 12.2.1 USB主机栈驱动 98 12.2.2 USB外设栈驱动 98 12.3 主机控制器和根集线器类驱动 98 12.3.1 VxBus驱动方法 98 12.3.2 头文件 99 12.3.3 BSP配置 99 12.3.4 可用的工具函数 101 12.3.5 初始化 101 12.3.6 调试 101 13 其它驱动类 103 13.1 介绍 103 13.2 概要 103 13.3 VxBus驱动方法 103 13.4 头文件 104 13.5 BSP配置 104 13.6 可以的工具函数 104 13.7 初始化 104 13.8 调试 104