High speed real time performance and timers?

  • Thread starter Thread starter orc
  • Start date Start date
O

orc

We are looking for an operating system for ARM microcontrollers to use in
our products. Our need is to e.g. sample data in a loop running every 0.1
msec or less. Will windows CE or WindowsXP embedded be able to handle that
(is it possible to set a timer to a 0.1 msec or less value?). What
development tools are avaiable - will .NET C# be possible to use? Is it
possible to access the hardware SPI ports, IO ports, Timers etc.? how big is
the footprint of each OS?

All your replies are highly appreciated - thanks!

Regards
orc
 
orc,

Windows XPe do not work on ARM processors it work only on x86 processors
preferably PIII class or better.

Regards,
Slobodan
 
Don't set out to use a garbage-collected programming environment for
real-time programming! A 100us response time might be theoretically
possible, but I don't think you're going to find Windows CE set up for that.
What type of data are we talking about? Can you sample it in hardware and
run it into a FIFO, so that software intervention is only required every few
ms? Yes, you can access hardware from Windows CE. There's no single answer
to how big for Windows CE, since you can build anything from a headless,
networkless, device to a WebPad with Internet Explorer, Terminal Services
Client, and Media Player on it. From several hundred kB to tens of MB...

Paul T.
 
To add to Paul's answer a bit:
- Windows CE supports hard real-time systems. The exact performance you get
depends on the hardware you use. (The response times you quoted are
achievable on most of the mid to high end CPUs available)

- You can create your real-time code in C/C++ and use the .NET CF (with C#
or VB.NET) to implement user interface and other higher levels of the
system. (Due to it's current architecture the .NET CF does not support hard
real-time programming directly)

- The size of the Windows CE OS can range from around 300K for a bare bones
kernel to around 30M with everything but the kitchen sink.

- Any application can access hardware directly, although it's not always a
good idea to do so. If the hardware resource is shared by multiple process
and or the kernel then it should be managed by a device driver or the OAL
instead of in an application.
 
Thank you. The application contains a control loop running at 10kHz, so
according to your answers it might not be a good idea to use CE. The
application is without a GUI, but i was thinking of using CE because we
develop applications for PDA's etc. in Visual Studio .NET already.

Thanks,
orc
 
Whoa! how do you get that it's not a good idea to use CE! It's not a good
Idea to use the .NET Compact Framework (CF) but Windows CE is certainly
capable of that. (Heck even in the V2.x versions of the OS that lacked many
necessary real-time support features we were able to achieve an 11K sampling
rate on slow x86 hardware.)
 
orc said:
We are looking for an operating system for ARM microcontrollers to use in
our products. Our need is to e.g. sample data in a loop running every 0.1
msec or less. Will windows CE or WindowsXP embedded be able to handle that
(is it possible to set a timer to a 0.1 msec or less value?).

As Paul mentioned, using C# means that you're running in a
non-deterministic environment. I would shy away from that if you're
trying to do real-time stuff.

We're reliably running at a hair over 50usecs, which is pretty fast.
(This is on x86 with a PIII 1GHz.) I think CE can go even lower, but
our polling takes some time.

I recomment these reads about real-time under CE:
- http://www.windowsfordevices.com/articles/AT6761039286.html
- http://www.microsoft.com/technet/prodtechnol/wce/plan/realtime.mspx
-
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/real-time_netcf.asp

(originally from here:
http://oswaldproject.blogspot.com/2005/03/why-windows-ce.html)

That last article is about trying to run in real-time with the .Net CF,
which seems to fit your description perfectly.
 
Back
Top