6323|10

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

[求助]wince实时性问题 [复制链接]

我使用的cpu是2440,运行在400Mhz,要在wince中驱动一个5位数字的数码管, 使用定时器time3定时,每次中断显示一位数字, 每秒刷新45次(即每秒要中断45*5=225次,平均4.5ms中断一次),ist优先级设置为0, 但使用此驱动刷数码管不太稳定,有时会闪,特别是运行如读写文件,解mp4的时候会看到比较明显的闪动。

我测了一下每次进入ist的时间基本上维持在5ms内,误差很少,但偶尔会出现一次 30ms左右的时间,这时来不及刷新,灯就会闪了.
在测试期间只进行了一个读uart2的操作,只有timer3,timer4,uart2产生了中断,timer4的优先级比timer3高,但timer4用于 wince的定时,占用的时间也很少.uart2中断优先级和读写线程的优先级都比timer3的低,应该不会造成timer3的ist延迟。

这个问题我弄了很多天都无法解决,不知还有什么东西导致会这么大的误差?wince中是否有这样的实时性能保证我所要求的4.5ms左右中断一次?

最新回复

我第一次接触远程测试工具,请教楼主,你是怎么测得每次进入ist的时间基本上维持在5ms内,能告诉我具体步骤吗?   详情 回复 发表于 2010-4-20 11:38
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
理论上说wince可以达到1ms的响应时间。
由于你采用了线程机制,所以说线程应该有时间片的概念了,wince中的线程时间片是25ms。猜测的
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个问题我也考虑过,现在整个系统内只有两个线程是0优先级,都在device.exe中,一个是数码管刷新的线程,另一个不知到是什么线程,但在kernel tracker中看到它长期处于阻塞状态,所以数码管刷新的线程应该在每次中断的时候都能及时响应,但结果却不是
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
是不是你设置优先级的函数用错了?
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 
我用的是CeSetThreadPriority(),并把优先级设为0
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
把刷新代码移到isr中,LED不闪了,但不知道为什么通过在ist等待LED刷新事件的方法会造成延时?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
要搞明白,得先搞清楚 硬中断,ISR和IST之间的关系.
简单来说,硬件中断时,最核心的硬件中断处理程序会查询是哪个中断(对于ARM),然后直接调用相应的中断服务例程(ISR),在此例程中,把最急切处理的工作做完,当然,这一部分工作不能多也不会多.根据情况,如有需要,可以发出一条消息,通知中断服务线程IST做出更复杂的工作.因为ISR是在硬件中断时马上就执行的,所以实时性很高. 至于IST,由于它运行在用户态,即使内核及时给它发消息了,由于操作系统分时调度的原因,当然响应速度就要差一些,在某些情况下会差很多.
还有,对于老的wince 版本, 在应用程序中可以直接操作硬件,但是,操作硬件的这个程序是否能及时运行,还受操作系统调度的影响,所以,对于强实时的系统,这种做法是不可取的.
以上只是理论,我也没真正实践过,不过从你的例子看出实际也是这样子的.
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
不明白的是根据wince线程调度机制,线程优先级较高的一旦进入就绪状态就立即抢占优先级较低的线程得到cpu使用权,而同优先级的线程则分时运行.
我把ist优先级设置为0,而系统中优先级为0的线程只有两个,另一个被长期阻塞,所以如果刷数码管ist一旦获得等待事件进入就绪应该可以立即运行,而实时上没有立即运行,为什么会这样,请指教。
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

9
 
Windows CE也是一个庞大的操作系统.我觉得,即使是有经验的人,也很难把握把其实现的各种细节.我感觉,对实时性要求强的功能,一定要放在ISR中实现.这样,能影响这个响应过程的因素要少很多.因为系统中还有其它中断,其它中断发生后,又会触发什么操作,这些操作又需要多长时间,是不好把握的.
另外,wince的各种调试手段,最终的实现也是一些占有CPU时间的软件.如果它们的级别低,就不能监视内核的活动,如果级别高,它所要进行的操作是不能忽视的.所以debug版本与Release版本的差别不仅是个头大小和调试功能的有无,还会影响到软件的运行.所以,如果Debug不行,也可以做release版本,烧写芯片,让它全速运行试试看.
还有,wince是个多任务操作系统,在启动新任务的这一瞬间,对已经在运行的实时任务有什么影响?也不好搞清楚.
windows CE的实时性,典型的延迟可达到几十个微秒.具体要看CPU而定.我这里准备用它做运动控制,对实时性的要求更高,还在开始阶段.在项目方案中,已经充分考虑了这种可能存在的,最多可达几十毫秒的延迟.
尽管在讨论操作系统的问题,我仍然对使用嵌入式操作系统持反对意见.不是必须,不会使用操作系统,特别是庞大的操作系统.你没办法搞清楚它可能引起的一些莫名其妙的问题.在桌面操作系统中,偶尔会弹出报告错误的窗口,而这些窗口中显示的内容跟本不是一个操作者所能理解的,甚至开发者也难理解.如果这种情况出现在工业设备中,用户会怎么反应?用户向开发者报告错误后,能否在有限的时间内做出反应?如果涉及到操作系统,问题就复杂了.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 
我也遇到了类似情况
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
我第一次接触远程测试工具,请教楼主,你是怎么测得每次进入ist的时间基本上维持在5ms内,能告诉我具体步骤吗?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表