EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

RTOS's and Windows CE question

Started by Mike Harding September 9, 2004
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

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

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
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
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
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
> 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
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
CE's default thread time-slice is 1ms
> 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
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

The 2024 Embedded Online Conference