I am evaluating embeddable operating systems for a client who will be using one in a new commercial product in the industrial control market, sales of which are expected to be many thousands per year. The product will be truly embedded having no display capability, but will contain both an ethernet port, and a USB port, to allow for customer configuration etc. Although the product has no 'hard' real-time requirement, the worst case response times should be less than one or two milliseconds, under all operating conditions (that includes ethernet activity). Amongst a few alternatives (and despite my natural inclinations :) Windows CE is on the list to be considered. Any suggestions on which CE variant might be applicable (e.g. CE 3, CE 4.0, CE 5.0, CE .NET)? Can CE considered to be stable? Is it real-time? What about footprint? Despite a Google search on this (and other) groups surprisingly little objective opinion was unearthed with regard to Win CE in embedded applications. Any other RTOS suggestions welcome - cost is not the major factor, performance, support, stability etc. is. Mike Harding
RTOS's and Windows CE question
Started by ●September 9, 2004
Reply by ●September 9, 20042004-09-09
Reply by ●September 9, 20042004-09-09
I am evaluating embeddable operating systems for a client who will be using one in a new commercial product in the industrial control market, sales of which are expected to be many thousands per year. The product will be truly embedded having no display capability, but will contain both an ethernet port, and a USB port, to allow for customer configuration etc. Although the product has no 'hard' real-time requirement, the worst case response times should be less than one or two milliseconds, under all operating conditions (that includes ethernet activity). Amongst a few alternatives (and despite my natural inclinations :) Windows CE is on the list to be considered. Any suggestions on which CE variant might be applicable (e.g. CE 3, CE 4.0, CE 5.0, CE .NET)? Can CE considered to be stable? Is it real-time? What about footprint? Despite a Google search on this (and other) groups surprisingly little objective opinion was unearthed with regard to Win CE in embedded applications. Any other RTOS suggestions welcome - cost is not the major factor, performance, support, stability etc. is. Mike Harding
Reply by ●September 9, 20042004-09-09
On Thu, 09 Sep 2004 14:39:10 +0200, David Brown wrote:>> The product will be truly embedded having no display >> capability, but will contain both an ethernet port, and a >> USB port, to allow for customer configuration etc. >> Although the product has no 'hard' real-time requirement, >> the worst case response times should be less than one or >> two milliseconds, under all operating conditions (that >> includes ethernet activity). >> >I thought I remembered reading that CE 3.0 switches between applications in 50 milliseconds or less. Prior versions were 250 ms. Can someone explain how response times and "application switches" can be compared with respect to an intended use? thanks, Jonathan
Reply by ●September 9, 20042004-09-09
Mike Harding wrote:> Any other RTOS suggestions welcome - cost is not the > major factor, performance, support, stability etc. is. > > Mike Harding >Take a look at MicroC OS 2. http://www.ucos-ii.com/ You can even purchase Jean's book first and try out the OS. Then if you use it in your product you have to license it. If you want something for free you could find the original MicroC OS on the net for your processor. Mark
Reply by ●September 10, 20042004-09-10
Jonathan Bosch wrote:>... snip ...> > I thought I remembered reading that CE 3.0 switches between > applications in 50 milliseconds or less. Prior versions were > 250 ms. Can someone explain how response times and "application > switches" can be compared with respect to an intended use?I can do better with a PIC in assembly, or even with an ancient 8008. -- "Churchill and Bush can both be considered wartime leaders, just as Secretariat and Mr Ed were both horses." - James Rhodes. "We have always known that heedless self-interest was bad morals. We now know that it is bad economics" - FDR
Reply by ●September 10, 20042004-09-10
Exactly how it sounds. 10 busy tasks 50ms a switch 500ms to get back to your task. if the other tasks are not busy, it will be faster. Jonathan Bosch wrote:> On Thu, 09 Sep 2004 14:39:10 +0200, David Brown wrote: > > >> The product will be truly embedded having no display > >> capability, but will contain both an ethernet port, and a > >> USB port, to allow for customer configuration etc. > >> Although the product has no 'hard' real-time requirement, > >> the worst case response times should be less than one or > >> two milliseconds, under all operating conditions (that > >> includes ethernet activity). > >> > > > > I thought I remembered reading that CE 3.0 switches between > applications in 50 milliseconds or less. Prior versions were > 250 ms. Can someone explain how response times and "application > switches" can be compared with respect to an intended use? > > thanks, > > Jonathan
Reply by ●September 10, 20042004-09-10
> Amongst a few alternatives (and despite my natural > inclinations :) Windows CE is on the list to be considered. > Any suggestions on which CE variant might be applicable > (e.g. CE 3, CE 4.0, CE 5.0, CE .NET)? Can CE considered > to be stable? Is it real-time? What about footprint? > Despite a Google search on this (and other) groups > surprisingly little objective opinion was unearthed with > regard to Win CE in embedded applications.I wouldn't consider CE 3.0 - this is now in "maintenance" by Microsoft. This leaves you with CE 4.2 and CE 5.0; CE 5.0 has only been released in the last couple of months. The lifetime of CE (per version) appears to be slightly better than mainstream Windows. CE 4.2 was an improvement, in terms of functionality and mainstream Windows compatability. As others have pointed out, CE is similar to but *not* identical with Windows so don't expect to port any application straight across. One instance of this is exception handling in C++, although this is addressed in CE 5.0. On one platform that I worked on, moving from CE3.0 to CE4.2 increased the image from 9MB to 11.5MB for the same functionality. This was with a GUI (but a minimal shell). Even a non-GUI platform is relatively large (several MB). The target application for the platform on which I worked didn't have any real-time requirements. You can get some source for CE but, given the size of the OS, this is relatively small (only a few MB of code :-) ). I found that Microsoft were helpful when we reported a fault.> Any other RTOS suggestions welcome - cost is not the > major factor, performance, support, stability etc. is.QNX has always impressed me as has uCos. USB host support in the OS may be the thing that defines your choice of OS. Andrew
Reply by ●September 10, 20042004-09-10
Jonathan Bosch wrote:> On Thu, 09 Sep 2004 14:39:10 +0200, David Brown wrote: > >>> The product will be truly embedded having no display >>> capability, but will contain both an ethernet port, and a >>> USB port, to allow for customer configuration etc. >>> Although the product has no 'hard' real-time requirement, >>> the worst case response times should be less than one or >>> two milliseconds, under all operating conditions (that >>> includes ethernet activity). >>> >> > > I thought I remembered reading that CE 3.0 switches between > applications in 50 milliseconds or less. Prior versions were > 250 ms. Can someone explain how response times and "application > switches" can be compared with respect to an intended use? > > thanks, > > JonathanCE's default thread time-slice is 1ms
Reply by ●September 10, 20042004-09-10
> I thought I remembered reading that CE 3.0 switches between > applications in 50 milliseconds or less. Prior versions were > 250 ms. Can someone explain how response times and "application > switches" can be compared with respect to an intended use?I think you are referring to what MS calls the quantum (maximum time-slice). If we are talking "default quantum", then see the following from the internet ( http://msdn.microsoft.com/chats/embedded/embedded_032602.asp ) ******************** Q: BenH : I have an embedded app with multiple threads at the same priority level. When one of these is encrypting data (about 20 ms), the others appear to be starved. Why is this occurring? John_Eldridge_MS A: BenH: The default thread quantum is 100ms so unless your thread yields it will run continuously for 100ms before switching to the next thread at the same priority. *************** That, my friend, is 1/10 of a second. I remember the quantum on the version of CE I messed with being default to 100ms, but that you could change it by hacking the OS somehow. Other versions may have a different quantum. Cheers, Jody
Reply by ●September 11, 20042004-09-11
On Thu, 09 Sep 2004 20:15:40 -0400, "Jonathan Bosch" <newton@easystreet.com> wrote:>I thought I remembered reading that CE 3.0 switches between >applications in 50 milliseconds or less. Prior versions were > 250 ms. Can someone explain how response times and "application >switches" can be compared with respect to an intended use?It appears that these figures apply in the situation when multiple processes are executed at the same priority level at a round robin fashion. I don't understand why anybody designing a real time system would put the tasks on the same priority and use round robin scheduling. Much more interesting would be the independent worst case figures for wake up times after an interrupts satisfies a read request or the switching time from SetEvent to WaitForSingleObject. When using any flavour of Windows and requiring some kind of timing accuracy, do not use the SetTimer, since it will use the message queue even if only a callback routine (no window handle) is specified. The other traffic in the message queue and the responses to these messages will mess any timing accuracy. Use the timeout parameter in WaitForSingleObject or use multimedia timers when available. Paul