WINCE系统里面,从驱动发消息给AP到AP接收到这个消息的时间间隔是多少?有没什么好的方法测量这个时间间隔?
在驱动程序里面GetSystemTick,在应用程序里面也GetSysTick 计算一下就知道了。
不知道这个时间间隔一般是那个级别的。毫秒?us秒?
还有个方法是根据你WinCE时钟节拍来的,通常是ms
引用: 引用 1 楼 xajhuang 的回复:
在驱动程序里面GetSystemTick,在应用程序里面也GetSysTick 计算一下就知道了。
我的VS2005环境里面没这个函数啊!在那个头文件里面?
一段C#的代码,你改成VC就行了。主要是调用的那个函数。
- long count = 0;
- long count1 = 0;
- long freq = 0;
- double result = 0;
-
- QueryPerformanceFrequency(ref freq);
- QueryPerformanceCounter(ref count);
- //开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均
- for (int i=0; i<500; i++)
- {
- //需要测试的模块
- }
-
- QueryPerformanceCounter(ref count1);
- count = count1-count;
- result = (double)(count)/(double)freq;
- Console.WriteLine("耗时: {0} 秒", result);
- Console.ReadLine();
1. Remote Tools 中的 Kernel Tracker 應可以, 但建議 Enable Profiling.
2. Windows CE 基本上是 ms 等級的作業系統, 這跟你 BSP 中的 Scheduler Timer 有關, 絕大多數都是用 1ms 做單位.
3. 你要量測的目標, 影響變數太多了, 像 thread priority 及 系統 loading 等, 你希望做到多少?
Paul, Chao @ Techware
引用: 引用 3 楼 xajhuang 的回复:
还有个方法是根据你WinCE时钟节拍来的,通常是ms
通常是多少MS?1000MS(1S)?100MS?10MS?1MS?
驱动发个时间戳给ap,ap获取后取时间比较就知道了
PB自带一个叫OSBench的工具,就是用来测试BSP的这些性能的,精度是us级的。有源代码的,原理也是用QueryPerformanceFrequency和QueryPerformanceCounter。
这个时间间隔是不定的,受中断、线程优先级等等因素的影响。非要给个数值,平均情况下可能在100ms左右吧,因为线程的时间片是100ms。
引用: 引用楼主 xqhrs232 的帖子:
WINCE系统里面,从驱动发消息给AP到AP接收到这个消息的时间间隔是多少?有没什么好的方法测量这个时间间隔?
我只知道驱动封装了一些API函数给应用调用,不清楚驱动还能主动发消息给应用,楼主给介绍一下?