《现代电子技术》2006年第20期摘录:2006年第20翼目总第235
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
2006年第20翼目总第235551118以下的时间精度便无能为力,且其实时性非常差,利用window.~;下的定时器不能满足定时精度,也不能保证中断次数。利用window~;环境下的多媒体定时器,虽然定时精度可以像一些资料上说的达到1ms,但笔者在实践中测试所达到的最高精度只有十几个毫秒,且输出不稳定,当鼠标键盘操作时,其定时中断的次数根本无法保证。如何通过编写驱动程序解决高精度的定时、输出稳定且中断次数不丢失成为wind()WS2000环境下一个急需解决的问题,尤其对windows开发者也是一个很有趣的挑战。3基于Windows2000驱动开发工具的选定在windows.2000下开发设备驱动程序需要专门的开发工具,目前主要工具有3类。(1)Mira‘()solt公司提供的win&)WS2000DDK,要求驱动程序开发人员深入了解操作系统的内核模式和驱动程序的内部结构,开发过程中要考虑很多方面,类似于用汇编编写应用程序。(2)NuMega公司提供的DriverWol‘ks,通过Driver—Works程序向导呵以生成Cjc’。框架代码,编写设备驱动程序对开发人员来说相对简单些,但是其调试过程相对复杂,类似于用C语言编写应用程序。(3)Jungo公司提供的winDriveI在编码和调试的过程中可以在用户模式下轻松实现。利用winDriver所特有的Ker:nelPl。lgln技术使关键代码在内核模式下运行,可以获得更高的性能。其编程过程类似于VcjVB。不管采用任何工具,windows2000DDK是编写驱动程序的根本.为丫充分发挥各自的优点,最后选定win—DriverKerllelPhagIn+Windows2000DDK来完成实时中断的处理。4获得高精度定时的办法在IBMPC系列微机上有一个8253(或8254)定时j卷片.该j卷片提供了3个可编程的定时/计数器(T/CO~T/lC2),可以通过修改T/CO(系统时钟定时器)的控制字和计数器初始值来改变系统的时钟频率。系统默认每秒钟发生18.2次中断,中断周期约为55ms。8253(或8254)的系统时钟定时器的控制字和计数器初值的端口地址分别为16进制43H和40H,系统定时器工作方式下的控制字对应的数值为16进制36H,住计数器写初始计数值时要先写低8位。后写高8位。系统定时器的输入频率为1.193180MHz,米白于系统品体振荡器。经过65535分频后产生一个18.2Hz的时钟。因而可以通过修改系统定时器的数值(即分频数值)可以获得更高频率的定时中断。其计算方法如下:垒篡盛电堕鱼设系统定时器输入的频率_/、一1.19318MHz,计数器的分频值为N,中断周期为丁,可得公式:中断周期一分频值/(时钟频率×l000000)即:,厂一N/(1.19318×1000000)经汁算可得到中断周期和分频值的对应关系如表1所示:表l中断周期和分频值的对应关系表在有些资料上谈及修改系统定时器的预置计数器值,会影响到Winctows.本身的时钟及其部分功能(如鼠标的双击功能)会导致有记录日期的应用系统计时错误。实际试验表明,通过winDriver软件修改系统定时器的预置计数器值不会影响到windows本身的时钟及其部分功能。在windc)W5;20()0下通过“开始一程序一附件一系统工具一系统信息”应用程序的“硬件资源”可以看到我们修改的是端口地址为OX0040—OX0043的Systemtirnet(即系统定时器),而真正影响windows本身的时钟及其部分功能的是端口地址为OX0070—OX0071的SystemCM()SjrealtimeClock(即系统CM()s实时时钟),该时钟来自于PC内包含的摩托罗拉公司的MCl461818实时时钟芯片,其工作频率为32.768kHz,将该时钟频率分成32768份,提供给内部时钟(如windc,ws本身的时钟)每秒作用一次。5KernelPlugln+DDK的工作机制在用户模式下利用winDriver本身自带的程序向导可以实现一个具有几乎所有功能的设备驱动程序,但其利用的是winDriver工具提供的驱动程序winDriver6.sys来完成代理功能的,其本身并不是一个真正的设备驱动程序。为r获得更高性能的中断处理和内存映射操作,win—Driver提供了内核执行性能的支撑技术KernelPlugIn。其目标就是对已经开发的用户模式的驱动程序,将其中的关键性代码移植到内核模式中去,从而使执行性能大大提高。据lJLmgc)公司的官方资料显示,在用户模式下每秒可以处理500()~100—0“()个中断,但由于windows系统本身并不是一个实时操作系统,采用月{户模式下的中断处理方式会丢掉一些中断。而采用KernelPl。lgIn技术每秒可以143
阅读此文(图):
点击此处在线翻阅