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系统一直被锁死来处理中断,那么系统就像死机了一样