Which is the best CPU for CE and real-time ?

Which is the best CPU for CE and real-time ?

Post by Christian M. Nette » Thu, 29 Jul 1999 04:00:00



Hi,

Which is the best CPU for CE and real-time ?

I know, that I really can't ask the question like that, since
it really depends on my application's needs (that's why
I'm looking for a comparison matrix in another post)

Nevertheless, maybe someone with intricate knowledge
about CE and certain CPUs can tell me that, e.g., CPU x
is inherently bad for real-time applications using CE, because
of the way interrupts work on CPU x, CE imposes more
overhead than it would on other CPUs.

For example, I noticed that on MIPS, x86 and SHx, you
have HookInterrupt() available to install your own ISR
for different interrupt sources (number of sources varies,
of course). On the other hand, on ARM720/920, SA-1100,
PPC403/821 there is no HookInterrupt(). Instead, there
is a OEMInterruptHandler() which gets called by the kernel.

Of course this reflects how interrupts work on a particular
CPU. Some CPUs only have one IRQ and therefore only one
vector. Other CPUs recognize multiple sources but still
have only one vector, etc. etc.

In other words, on some CPUs you are forced to have a
single shared ISR which has to figure out first, what the source
was. This takes time.....

(BTW: just because the default OAL on systems that have
HookInterrupt() available (e.g. CEPC/ODO) is written with just
a single ISR that does time-consuming query of the
interrupt controller, doesn't mean that's the only way to
do it)

Has anybody looked into these kind of things before?

Christian M. Netter
Assistant Research Engineer
United Technologies Research Center
411 Silver Lane, M/S 129-55
East Hartford, CT. 06108

Phone:  (860)-610-7758
Fax:    (860)-610-7494

 
 
 

Which is the best CPU for CE and real-time ?

Post by Steve Maille » Thu, 29 Jul 1999 04:00:00


The question of real-time always begs the question of what exactly that
means in your particular situation.
Seems to me like you've hit the important points already, in terms of
getting the fastest response to interrupts.
The other major factor would be in how much overhead time the CPU + OS
spends in switching between threads. This can be a big factor in performance
of a mutithreaded system. I'm not aware of any profiling to compare
processor to processor on this point. (I've seen some to check the OS
itself) You might check out www.BlueWater.com and www.amc.com as they have
done some profiling of CE for Real-Time.

 The rest are issues of power consumption and raw processing power. Other
considerations are Cost Of Goods Sold (COGS) for the end product as well as
development time and costs. There is always a trade off there as well. Some
vendors provide better support in the form of reference boards with full
schematics and design notes (including a fully ported OAL and drivers for
the board). Others offer a processor Eval board (designed prior to CE) and
some notes that aren't much better than chicken scratches on a*tail
napkin. Third parties are starting to produce Windows CE
development/reference systems for various processor families as well.

--
Steve Maillet
Entelechy Software Consulting
"Where hardware meets software"
www.EntelechyConsulting.com
Home of the Embedding Windows CE FAQ
smaillet at EntelechyConsulting dot com



> Hi,

> Which is the best CPU for CE and real-time ?

> I know, that I really can't ask the question like that, since
> it really depends on my application's needs (that's why
> I'm looking for a comparison matrix in another post)

> Nevertheless, maybe someone with intricate knowledge
> about CE and certain CPUs can tell me that, e.g., CPU x
> is inherently bad for real-time applications using CE, because
> of the way interrupts work on CPU x, CE imposes more
> overhead than it would on other CPUs.

> For example, I noticed that on MIPS, x86 and SHx, you
> have HookInterrupt() available to install your own ISR
> for different interrupt sources (number of sources varies,
> of course). On the other hand, on ARM720/920, SA-1100,
> PPC403/821 there is no HookInterrupt(). Instead, there
> is a OEMInterruptHandler() which gets called by the kernel.

> Of course this reflects how interrupts work on a particular
> CPU. Some CPUs only have one IRQ and therefore only one
> vector. Other CPUs recognize multiple sources but still
> have only one vector, etc. etc.

> In other words, on some CPUs you are forced to have a
> single shared ISR which has to figure out first, what the source
> was. This takes time.....

> (BTW: just because the default OAL on systems that have
> HookInterrupt() available (e.g. CEPC/ODO) is written with just
> a single ISR that does time-consuming query of the
> interrupt controller, doesn't mean that's the only way to
> do it)

> Has anybody looked into these kind of things before?

> Christian M. Netter
> Assistant Research Engineer
> United Technologies Research Center
> 411 Silver Lane, M/S 129-55
> East Hartford, CT. 06108

> Phone:  (860)-610-7758
> Fax:    (860)-610-7494


 
 
 

1. How about Win CE real-time performance?

I have a project that is to immigrate our real-time system from Embedded NT
4.0 to Win CE 3.0. I almost finish the project, but its real-time
performance is worse than on ENT. Our system is a sampling system, at the
same highest sampling rate, it is ok on NT system but fails on my CE system,
the reason is that sometimes it doesn't respond to an interrupt in time
after a long-time running although I have set IST priority to 1.

In the Interrupt Service Thread, it just reads data from PCI and saves the
data to a large memory buffer. After an interval, it notifies (calling
SetEvent()) another thread to fetch a piece of data for display. This thread
doesn't really display the data, it sends the data to another PC by DCOM.
So, at the same time, there are three threads. IST has the highest priority
100 (normally I set it to 100), the fetching data thread has priority 200
and the communication thread has priority 250. This is the same solution
which works well on eNT system. but it often causes our sampling system to
overrun at my CE system(overrun is our word that means IST doesn't read
sampling data in time).
(eNT and CE system are running on the same hardware condition for
comparison).

What is the problem? Which is better on real-time performance? eNT or CE? I
wish CE has a better performance. How can I improve my CE system on
real-time performance?

Any advice is highly appreciated.

2. wiring a condo complex for shared internet access

3. CE 3.0 real-time performance testing.....

4. "Print Screen" Button Doesn't Print

5. How to improve the real-time performance of CE application?

6. start menu/programs

7. 4 I/O DEVICES IN PC

8. CE real-time data acquisition

9. Windows CE as real-time OS

10. Can a real-time time-critical thread by preempted by an interrupt (ISR)?

11. Real "Real-time"