当前位置: 代码迷 >> WinCE >> WINCE 能实现每秒5000次中断吗?有没有高手做过,请赐教。该怎么解决
  详细解决方案

WINCE 能实现每秒5000次中断吗?有没有高手做过,请赐教。该怎么解决

热度:360   发布时间:2016-04-28 13:48:51.0
WINCE 能实现每秒5000次中断吗?有没有高手做过,请赐教。
Wince5.0 硬件每秒钟5000个脉冲触发X86CUP的7号中断,Wince能完全捕获到每一个中断吗,保证不丢,请做过的兄弟姐妹帮帮忙,提提思路,或者给
一段代码,不胜感激

------解决方案--------------------
中断计时分析(ILTIMING) 

中断计时分析可以测量系统中的中断延迟。该工具使用诸多OAL(OEM适配层)支持功能测量ISR和IST的中断响应时间。这些数字对于了解系统的限制至关重要。 

我们来看一看基于AMD K6 500Mhz的CEPC系统的数字。 

dwOEMTPoolSize = 16 (CEPC的出厂默认值) 



Windows CE和硬实时操作系统的OMAC定义吻合,它安装了构建、测试和部署实时设备所需的工具及资源。


微软鼓励Windows CE的开发人员,尽可能在中断服务线程(IST)中置入更多的应用代码。这使OMAC抖动定义变为针对不超过100 µs的IST延迟的时间限制。其余被评估的应用使用计时器创建其周期。这就需要一台延迟或抖动不超过100 µs的1毫秒计时器。总之,OMAC定义提出以下设计和测试要求: 

·Interrupt Service Thread (IST) latencies of no more than 100 µs latency. 

·1 millisecond timers with maximum of 100 µs latency. 

·中断服务线程(IST)延迟不超过100 µs。 

·1毫秒计时器的延迟最长为100 µs。 

------解决方案--------------------
你需要的是RTOS,操作系统不同的,你就是把CPU加到5G,CE也实现不了你的功能。
典型的RTOS有VxWork,ucLinux(不是Linux哦),ucOS-II等。
------解决方案--------------------
个人觉得这不可能,5000hz,除非你的wince啥别的都不干恐怕才能赶得上,更何况你还需要在中断响应函数内处理
我觉得这种中断处理还是固化比较好,WinCE恐怕不是做这个的料,用一个DSP做前端先把中断处理完了,再把综合信息发送给wince
------解决方案--------------------
在我的工控机下测试的结果:
中断到isr响应时间:3.2~3.8 us
Isr到ist响应时间:15~20us
以上为我自己测试过的
测试的次数1000+
只要IST最高优先级并处理极少的数据,应该能达到~
------解决方案--------------------
首先需要知道大部分推荐的WinCE中断处理模型都是ISR+IST,如果用这个模型你是基本不要想了
因为IST的运行依赖于系统调度,就是说依赖于系统的时钟,像gooogleman说的,系统时钟是1ms的话,不可能实现5000次/s的处理
但是你要知道这种局限并不是在于CPU无法捕获这么快的中断,而是ISR+IST的模型限制了速度
在中断来临的时候,WinCE会暂时关闭中断(或小于等于当前优先级的中断),一直到可以重新打开,这一段时间如果可以符合5000次/s的情况,那就说明还有希望(在不修改微软既有的代码的前提下)。
所以你可以在ISR中直接处理这个中断然后打开中断,这时候就相当于一个单线程的系统。需要测量的就是
1 从中断到来 到 进入ISR的时间
2 处理这个中断的时间
3 打开中断及返回的时间
如果处理时间很短,比如50us之内,那可能还可以考虑
如果占用时间过长,会导致wince系统一直被锁死来处理中断,那么系统就像死机了一样

  相关解决方案