The invention discloses a Windows operating system environment implementation method, including: speed timer can choose APIC timer, provide the user interface state; user interface package: speed control function and time correlation function interface encapsulation to dynamic link library for application in Windows operating system; the application loaded dynamic link library the user interface, call; call user interface, the adjusted APIC timer cycle into the kernel; APIC cycle timer assignment after adjustment to the initial count register, realize the adjustment cycle timer APIC. The invention realizes dynamic adjustment of the timer interval timer, change between time interval and real system time span ratio, the timer can control function, solves the problems of the existing single rate timer, meet the application requirements of Windows program in different environments.
【技术实现步骤摘要】
本专利技术涉及Windows操作系统的中断处理、高精度定时以及系统软件开发
更具体地说,本专利技术涉及一种利用APIC(AdvancedProgrammableInterruptController)定时器在Windows操作系统环境下实现高精度可调速的定时器的方法。
技术介绍
Windows操作系统为用户提供了三类定时器:WM_TIMER消息定时器、多媒体时钟定时器和高精度时钟定时器。1)WM_TIMER定时器:WM_TIMER定时器是Windows最基础的定时器,通过SetTimer()进行创建和设定间隔,进而采用KillTimer()进行销毁。WM_TIMER创建后将定时为指定线程发送WM_TIMER消息,并加入消息队列等待处理。WM_TIMER定时器消息是一种低优先级消息,只有当没有更高优先级的消息在线程消息队列中时,WM_TIMER消息才会被投递。同时WM_TIMER定时器精度很低,平均值大约在15ms左右,不具有高精度特性。2)多媒体时钟定时器:多媒体时钟定时器可以为应用程序提供精度为毫秒的定时事件。使用timeSetEvent()函数注册用回调函数,并可以通过调用timeKillEvent()函数关闭定时器。多媒体时钟定时器最高能够实现最高1ms精度定时,多媒体时钟无法满足高于1ms的定时需求.3)高精度时钟定时器:当系统中存在高精度性能计数器(High-ResolutionPerformanceCounter)时,应用程序能够采用QueryPerformanceCounter函数实现纳秒级精度的定时。QueryPerformanc ...
【技术保护点】
一种Windows操作系统环境下可调速定时器的实现方法,包括以下步骤:步骤一、用户态接口提供:选用APIC定时器,提供一组用户态接口;步骤二、用户态接口封装:将调速功能和时间相关函数接口封装为动态链接库,供Windows操作系统中的应用程序使用;步骤三、动态链接库加载:应用程序加载所述动态链接库,实现所述用户态接口的调用;步骤四、新周期值传入内核:应用程序通过调用所述动态链接库中的用户态接口,将调整后的APIC定时器周期以DeviceIoControl或者共享内存的方式传入内核;步骤五、APIC定时器周期更改:将所述步骤四调整后的APIC定时器周期赋值给初始计数寄存器,实现APIC定时器的周期调整,其中,初始计数寄存器进行了设置,具体设置包括:初始计数寄存器设定公式:计数值=APIC定时器周期×CPU外频×时间单位/1000,往地址0xFEE00380写入计数值,设置初始计数寄存器。
【技术特征摘要】
1.一种Windows操作系统环境下可调速定时器的实现方法,包括以下步骤:步骤一、用户态接口提供:选用APIC定时器,提供一组用户态接口;步骤二、用户态接口封装:将调速功能和时间相关函数接口封装为动态链接库,供Windows操作系统中的应用程序使用;步骤三、动态链接库加载:应用程序加载所述动态链接库,实现所述用户态接口的调用;步骤四、新周期值传入内核:应用程序通过调用所述动态链接库中的用户态接口,将调整后的APIC定时器周期以DeviceIoControl或者共享内存的方式传入内核;步骤五、APIC定时器周期更改:将所述步骤四调整后的APIC定时器周期赋值给初始计数寄存器,实现APIC定时器的周期调整,其中,初始计数寄存器进行了设置,具体设置包括:初始计数寄存器设定公式:计数值=APIC定时器周期×CPU外频×时间单位/1000,往地址0xFEE00380写入计数值,设置初始计数寄存器。2.如权利要求1所述的Windows操作系统环境下可调速定时器的实现方法,其中,调速功能包括:时间速率控制、定时器时间冻结和解冻功能,时间速率控制实现步骤包括:往地址0xFEE00380中写入利用初始计数寄存器设定公式计算所得计数值即可实现1倍速;往0xFEE00380中写入0.1×计数值即可实现10倍速,往0xFEE00380中写入10×计数值即可实现0.1倍速;定时器时间冻结实现步骤包括:保存地址0xFEE00380中数据并往地址0xFEE00380写入0,设置初始计数寄存器为0;解冻功能实现步骤包括:往地址0xFEE00380写入冻结时保存的数值。3.如权利要求1所述的Windows操作系统环境下可调速定时器的实现方法,其中,所述步骤二中,时间相关函数实现授时功能和任务睡眠功能,授时功能实现步骤包括:通过CreateFile函数加载驱动,通过DeviceIoControl函数或者共享内存获取调度器中的系统时间,返回获取的系统时间;任务睡眠功能实现步骤包括:获取当前线程ThreadId作为后续挂起、唤醒操作的操作对象,计算任务释放时间,将当前任务线程控制块TCB插入让渡队列Yield_List中,其中,任务释放时间=定时器系统时间+睡眠时间。4.如权利要求1所述的Windows操作系统环境下可调速定时器的实现方法,其中,APIC定时器进行了相关设置,具体设置包括:LocalAPIC含有4个用于产生时钟中断的寄存器:分频寄存器、初始计数寄存器、当前计数寄存器与本地向量表寄存器,分频寄存...
【专利技术属性】
技术研发人员:杜承烈,王延钊,陈进朝,蒋泽军,彭寒,
申请(专利权)人:西北工业大学,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。