在Window s XP 操作系统中, 运行于用户模式的应用程序访问硬件资源是通过Win32 API 调用内核模式的驱动程序实现的。这种内核模式的驱动程序就是WDM(Window s Driver Model) 驱动程序, 它是微软在Window s XP 操作系统中提出的新的驱动程序模式, 支持即插即用、电源管理和I/ O 管理等功能。图2 是Window s XP 的系统结构。
如图2 所示设备驱动程序是操作系统的一个组成部分, 它由I/ O 管理器( I/ O Manager ) 管理和调动。
I/ O管理器每收到一个来自用户应用程序的请求就创建一个I/ O 请求包( IRP) 的数据结构, 并将其作为参数传递给驱动程序。驱动程序通过识别IRP 中的物理设备对象( PDO) 来区别是发送给哪一个设备。IRP 结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。驱动程序处理完这个请求后, 在该结构中填入处理结果的有关信息, 调用IoCompleteRequest 将其返回给I/ O 管理器, 用户应用程序的请求随即返回。访问硬件时, 驱动程序通过调用硬件抽象层的函数实现。
测试时采用一个有两个通道CAN 分析仪分别连接本CAN 板的A, B 通道上, 在从A 通道连续发送数据至分析仪的过程中, 手动断开此链接, 则备用通道B开始工作, 切换成功。对冗余切换时间的测试可以通过比较发送端和接收端间数据量的差值来判断。具体方法是在发送端以10 ms 为周期不停发送数据包, 正常情况下发送端的数据包数量与接收端的数据包数量是相等的。在切换动作时, 会有一些数据包被丢弃, 这时通过计算发送端与接收端数据包的差值乘以10 ms, 即为此次切换的切换时间。在本例中, 通过多次这样的测试, 得出平均切换时间在30 ms 左右, 完全能满足对计算机系统高可靠性的要求。
4 结 论
提出一种设备冗余的系统设计方法, 为系统的故障检测和切换技术提供了一种解决方案。利用此方法设计了双冗余CAN 总线板卡以及在Window s XP 系统下的WDM 驱动。该模块工作稳定, 数据传输可靠, 冗余切换切实可行。并可依据实际使用要求在线修改定时查询时间。这种冗余实现方法在提高设备可靠性方面具有一定的实用价值。