WINCE的实时性比UCOS强吗?

winamp123 2009-10-27 12:44:24
加精

WINCE也是实时操作系统,实时性比UCOS强吗?
...全文
2884 81 打赏 收藏 转发到动态 举报
写回复
用AI写文章
81 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leefya 2012-07-29
  • 打赏
  • 举报
回复
大家关心一下国产实时操作系统,DJYOS。很不错的。有一个帖子里,有具体中断响应时间数据,比UC/OS还强些。比裸奔稍慢。最坏情况下,DJYOS要1.42us,裸奔1.025us,错400ns。有人用UC/OS,最坏情况下要近20us。
  • 打赏
  • 举报
回复

ULONG PeRPISR(void) {
ULONG ulRet = SYSINTR_NOP;
UCHAR ucCurrentInterrupt;

if (fIntrTime) {
//
// We're doing interrupt timing. Get Time to ISR.
//
#ifdef EXTERNAL_VERIFY
_outp((USHORT)0x80, 0xE1);
#endif
dwIntrTimeIsr1 = _PerfCountSinceTick();
dwIntrTimeNumInts++;
}

ucCurrentInterrupt = PICGetCurrentInterrupt();

if (ucCurrentInterrupt == INTR_TIMER0) {

if (PProfileInterrupt) {
ulRet= PProfileInterrupt();
}

if (!PProfileInterrupt || ulRet == SYSINTR_RESCHED) {

#ifdef SYSTIMERLED
static BYTE bTick;
_outp((USHORT)0x80, bTick++);
#endif

CurMSec += g_dwBSPMsPerIntr;

CurTicks.QuadPart += g_dwOALTimerCount;

if (fIntrTime) {
//
// We're doing interrupt timing. Every nth tick is a SYSINTR_TIMING.
//
dwIntrTimeCountdown--;

if (dwIntrTimeCountdown == 0) {
dwIntrTimeCountdown = dwIntrTimeCountdownRef;
dwIntrTimeNumInts = 0;
#ifdef EXTERNAL_VERIFY
_outp((USHORT)0x80, 0xE2);
#endif
dwIntrTimeIsr2 = _PerfCountSinceTick();
ulRet = SYSINTR_TIMING;
} else {
if ((int) (CurMSec - dwReschedTime) >= 0)
ulRet = SYSINTR_RESCHED;
}
} else {
if ((int) (CurMSec - dwReschedTime) >= 0)
ulRet = SYSINTR_RESCHED;
}
}

//
// Check if a reboot was requested.
//
if (dwRebootAddress) {
RebootHandler();
}

} else if (ucCurrentInterrupt == INTR_RTC) {
UCHAR cStatusC;
// Check to see if this was an alarm interrupt
cStatusC = CMOS_Read( RTC_STATUS_C);
if((cStatusC & (RTC_SRC_IRQ|RTC_SRC_US)) == (RTC_SRC_IRQ|RTC_SRC_US))
ulRet = SYSINTR_RTC_ALARM;
} else if (ucCurrentInterrupt <= INTR_MAXIMUM) {
// Mask off interrupt source
PICEnableInterrupt(ucCurrentInterrupt, FALSE);

// We have a physical interrupt ID, but want to return a SYSINTR_ID
// Call interrupt chain to see if any installed ISRs handle this interrupt
ulRet = NKCallIntChain(ucCurrentInterrupt);

// IRQ not claimed by installed ISR; translate into SYSINTR
if (ulRet == SYSINTR_CHAIN) {
ulRet = OALIntrTranslateIrq (ucCurrentInterrupt);
}

if (ulRet == SYSINTR_NOP) {
// If SYSINTR_NOP, IRQ claimed by installed ISR, but no further action required
PICEnableInterrupt(ucCurrentInterrupt, TRUE);
}
else if (ulRet == SYSINTR_UNDEFINED || !NKIsSysIntrValid(ulRet)) {
// If SYSINTR_UNDEFINED, ignore
// If SysIntr was never initialized, ignore
OALMSGS(OAL_WARN&&OAL_INTR, (L"Spurious interrupt on IRQ %d\r\n", ucCurrentInterrupt));
ulRet = SYSINTR_NOP;
PICEnableInterrupt(ucCurrentInterrupt, TRUE);
}

}
OEMIndicateIntSource(ulRet);
if (ucCurrentInterrupt > 7 || ucCurrentInterrupt == -2) {
__asm {
mov al, 020h ; Nonspecific EOI
out 0A0h, al
}
}
__asm {
mov al, 020h ; Nonspecific EOI
out 020h, al
}

return ulRet;
}

WinCE 6.0 内核ISR
yjukh 2011-06-30
  • 打赏
  • 举报
回复
我做工控,问下WINCE的定时精度能到多少啊?
如果误差不大,也是可以理解的。
要是误差在几百us以上,那就挂了。
ioro55555 2010-12-25
  • 打赏
  • 举报
回复
做惯了底层,wince的中断响应速度简直令我抓狂。
harktrip 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 iwillbeback008 的回复:]
引用 10 楼 gooogleman 的回复:
wince不是实时操作系统
ucos是是实时的操作系统,嘿嘿。


看来做工控的还是不用WinCE的好
[/Quote]

我就是做工控的..
而且是拿wince來做PLC.

讚!
好用,速度又快
home1410 2010-09-29
  • 打赏
  • 举报
回复
正在学习WinCE中,受教了!
home1410 2010-09-29
  • 打赏
  • 举报
回复
正在学习WinCE中,受教了!
home1410 2010-09-29
  • 打赏
  • 举报
回复
正在学习WinCE中,受教了!
Frog1228 2010-08-09
  • 打赏
  • 举报
回复
据我所知,ucosII,最强的还是VxWorks,据说华为就是用的这个。
xiao_rq 2010-08-09
  • 打赏
  • 举报
回复
两个都用了,UCOS好!
DAISARU 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 68 楼 lr2131 的回复:]
UCOS2比WinCE的实时性强,毕竟WinCE下跑的东西多了。
[/Quote]

看你怎么用了。你如果拿wince做实时应用,就不应该加入不必要的模块。
DAISARU 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 cefighter 的回复:]
我现在正打算用winCE5.0做一个工业控制上的应用,主要将采集到的一些信号通过网络上传到服务器.大约一秒钟采集10次.这样不知winCE5.0的实时性能否达到要求.
[/Quote]

100ms一次啊,so easy
DAISARU 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gooogleman 的回复:]
wince不是实时操作系统
ucos是是实时的操作系统,嘿嘿。
[/Quote]

Wince是实时系统。
lr2131 2010-06-07
  • 打赏
  • 举报
回复
UCOS2比WinCE的实时性强,毕竟WinCE下跑的东西多了。
harkspan 2010-06-02
  • 打赏
  • 举报
回复
学习了
贝隆 2010-05-14
  • 打赏
  • 举报
回复
winCE不错!
SZ_Devin 2010-04-19
  • 打赏
  • 举报
回复
我现在正打算用winCE5.0做一个工业控制上的应用,主要将采集到的一些信号通过网络上传到服务器.大约一秒钟采集10次.这样不知winCE5.0的实时性能否达到要求.
中国168 2010-03-01
  • 打赏
  • 举报
回复
讲的好,哈哈,了解一下!
renpine 2010-02-03
  • 打赏
  • 举报
回复
实时就在对待中断与任务的处理方式。
ucos,wince都用过,中断都大同小异,只是ucos对进出中断的代码简短更为高效一些,速度差不多与前后台系统差不多了。
wince保护的东西太多了点,响应速度会慢。从ms甚至us级别的中断捕获就可以区别二者了。
ucos进出中断就任务的入栈与出栈,很少其它东西。虽然没用过vxworks,但相信vxworks的响应性能不可能比ucos快!
只是ucos太过简陋,做应用太麻烦了,分工不明确。
jiereliyi 2010-01-26
  • 打赏
  • 举报
回复
好贴
加载更多回复(59)

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧