新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 采用WDM的精确定时器及其在冗余技术中的应用

采用WDM的精确定时器及其在冗余技术中的应用

作者: 时间:2011-01-16 来源:网络 收藏

3 软件设计

3. 1 WDM 模式驱动程序

在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 管理器, 用户应用程序的请求随即返回。访问硬件时, 驱动程序通过调用硬件抽象层的函数实现。

采用WDM的精确定时器及其在冗余技术中的应用
图2 Windows XP 系统结构

WDM 的开发可采用DDK, DriverWorks 等开发工具。以下重点描述在此WDM 驱动实例中采用定时查询实现CAN 总线冗余功能。

3. 2 驱动冗余设计

本设计中, CAN 通路采用2 路冗余, 使得当一个CAN 总线接口出现故障时, 可以很方便地切换到另一个CAN 总线接口。

故障检测在定时器中实现。在DriverWorks 中有两种定时器对象, 即附属于设备对象的1 Hz 定时器和KTimedCallback 类定义的定时器, WDM 定时方法是通过它们实现的。KT imedCal lback 是KTimer 的派生类, KTimer 封装了系统定时器, 构成分发对象定时器类, 可用于同步目的。KT imedCal lback 类包含了系统延时过程调用( DPC) 对象, 当定时器超时后系统就调用DPC。KTimedCallback 的成员函数主要是Set 和SetPeriodic, Set 用于设置一次有效定时器参数, SetPeriodie 设置周期性定时器参数, Set 和SetPeriodic 在设置定时参数时同时启动定时器并建立与回调函数的关联,定时器超时后调用回调函数。

具体的切换工作放在DPC 中完成。DPC 为推迟过程调用, 一些操作不适合在ISR 中处理需放入限制较少的DPC 中, 如通知事件置标记等等。DPC 是一个通用机制, 但通常都用在中断处理中。在最普通的情况下, ISR 决定当前请求的完成并请求一个DPC。之后,内核在DISPATCH_LEVEL 级上调用这个DPC 例程。


关键词: FPGA

评论


相关推荐

技术专区

关闭