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