FAQ
See the comp.realtime newsgroup
======================================================
Comp.realtime: a (LONG)
list of Real-Time Operating Systems
======================================================
This posting provides an overview of newsgroup comp.realtime by summarizing
the history, common past topics, and frequently asked questions.
HTML versions (much easier to read) are available at:
http://www.dedicated-systems.com/encyc/publications/faq/rtfaq.htm
http://www.faqs.org/faqs/realtime-computing/faq/
http://www.cis.ohio-state.edu/hypertext/faq/usenet/realtime-computing/top.html
======================================================
What's new in the FAQ?
Added a definition for the term real-time.
Added a section for WindowsCE.
Added RT-Linux to the Research and Free Product
section
Table of contents
I- INTRODUCTION
What is the purpose of this FAQ?
What is the charter of comp.realtime?
Where should I ask questions about real-time
systems?
What is considered good net.etiquette
on comp.realtime?
II- DEFINITIONS
What exactly is meant by real-time?
What is POSIX 1003.1b (formerly 1003.4)? Where
is it available?
What makes an OS a RTOS?
What is a good RTOS?
What is RMA?
III- PUBLICATIONS COVERING REAL-TIME TOPICS
Books
Magazines
Other newsgroup and mailing lists
dealing with real-time topics.
Web Site covering real-time topics.
IV- POLEMIC TOPICS
Is Windows NT (or windows 95) a Real-Time Operating
System?
Is Windows CE 2.0 a real-time operating system?
Which methodology should I use to design a Real-Time
System?
Which programming language should I use to develop
a Real-Time System?
What kind of processor should I use for my Real-Time
System?
What kind of bus should I use for my Real-Time System?
What Mezzanine technology should I use?
Dedicated Systems and year 2000: what are the
risks?
V- MARKET
Where can I find informations related to real-time
products?
Where can I find informations about real-time
Conferences, Workshops and Tradeshows?
International organisation for standards?
International User and Manufacturer Groups?
RTOS Market Study (Mainly Japan Market)
VI- RESEARCH AND FREE PRODUCTS
Which Research Institute and Universities
are involved in the Real-Time field?
Free Real-Time Product lists
VII- CONTRIBUTIONS AND FAQ LOCATION
Where can I get the current copy of the FAQs?
Contributions to comp.realtime FAQs.
======================================================
I- INTRODUCTION
------------------------------
What is the purpose of this FAQ ?
The purpose of this FAQ is to give sufficient knowledge to a new user in
the Real-Time field and to serve as a reference to the engineer working
in this field. This FAQ gives an overview about each topic and refers to
other ressources (Internet, Publications, Company) for a more complete
information.
A companion posting to this one, "Comp.realtime: Welcome to comp.realtime"
@message-id realtime_welcome@, complements this one by providing a concise
introduction to the group. Another posting, "Comp.realtime: A list of real-time
operating systems", @message-id realtime_list@, provides references to
available operating systems.
------------------------------
What is the charter of comp.realtime?
The charter of comp.realtime is to provide a forum for discussion of both
the theory and practice of real-time computer
systems. The group is unmoderated; participation is open to all.
[If there was a formal charter for the newsgroup at the time of its
creation, we don't have access to it at the moment. Readers?]
Note that the listing in the canonical "newsgroups" file is:
comp.realtime Issues related to real-time computing.
------------------------------
Where should I ask questions about real-time
systems?
Comp.realtime is certainly the place. However, if you are asking about
a particular real-time system, see below for a (possibly) better place
to start.
For topics that are only somewhat related to real-time systems, also
consider comp.arch and/or comp.os.misc. For instance, topics about bus-based
computer systems are best asked in comp.arch, or, if they're about the
VMEbus, comp.arch.bus.vmebus.
------------------------------
What is considered good net.etiquette
on comp.realtime?
Here are some etiquette reminders that will help us all to make the group
an ever-friendlier place:
-- Please, before posting, ensure that you've read the basic Usenet
etiquette guide in news.announce.newusers.
-- Please set the Followup-To: line in your post. This is especially
true if you are cross-posting. If you are requesting information, consider
setting:
Followup-To: poster, and then summarizing the replies to the net.
-- When following up, please change the Subject: line if the subject
has really changed.
-- Some sites that receive comp.realtime are on branches of the net
that frown on overtly commercial announcements. These postings are welcomed
on comp.newprod and anywhere in the biz.* hierarchy. However, short offers
by vendors to provide further information by email are usually seen as
acceptable.
======================================================
II- DEFINITIONS
------------------------------
What exactly is meant by real-time?
There are _several_ definitions of real-time, most of them contradictory.
Unfortunately the topic is controversial, and there doesn't seem to be
100% agreement over the terminology.
1. The canonical definition of a real-time system (from Donald Gillies
mailto:gillies@ee.ubc.ca
), is the following:
"A real-time system is one in which the correctness of the computations
not only depends upon the logical correctness of the computation but also
upon the time at which the result is produced. If the timing constraints
of the system are not met, system failure is said to have occurred."
Others have added:
"Hence, it is essential that the timing constraints of the system are
guaranteed to be met. Guaranteeing timing behavior requires that the system
be predictable. It is also desirable that the system attain a high degree
of utilization while satisfying the timing constraints of the system."
A good example is a robot that has to pick up something from a conveyor
belt. The piece is moving, and the robot has a small window to pick up
the object. If the robot is late, the piece won't be there anymore, and
thus the job will have been done incorrectly, even though the robot went
to the right place. If the robot is _early_, the piece won't be there yet,
and the robot may block it.
Another example is the servo loops in an airplane when on auto-pilot.
The sensors of the plane must continuously supply the control computer
with proper measurements. If a measurement is missed, the performance of
the airplane can degrade, sometimes to unacceptable levels.
David Sonnier ( mailto:dps@devnull.mpd.tandem.com
) adds the distinction:
In the robot example, it would be hard real time if the robot arriving
late causes completely incorrect operation. It would be soft real time
if the robot arriving late meant a loss of throughput. Much of what is
done in real time programming is actually soft real time system. Good system
design often implies a level of safe/correct behavior even if the computer
system never completes the computation. So if the computer is only a little
late, the system effects may be somewhat mitigated.
2. POSIX Standard 1003.1 defines "real-time" for operating systems as:
"Realtime in operating systems: the ability of the operating system
to provide a required level of service in a bounded response time"
3. One will occasionally see references to "real-time" systems when
what is meant is "on-line", or "an interactive system with better response
time than we used to have". Often, this is just marketing hype. For instance,
although some have queried whether running "rn" is real-time, it is not,
as it is interacting with a human who can tolerate hundreds of milliseconds
of delays without a problem. Similarly, on-line stock quotation systems
interact with humans.
4. One will also see references to "real-time" systems when what is
meant is just "fast". It might be worth pointing out that "real-time" is
not necessarily synonymous with "fast"; that is, it is not the latency
of the response per se that is at issue (it could be of the order of seconds),
but the fact that a bounded latency sufficient to solve the problem at
hand is guaranteed by the system. In particular, frequently, algorithms
that guarantee bounded latency responses are less efficient overall than
algorithms that don't.
5. One will also occasionally see discussions of "soft" vs. "hard" real-time
systems. In many of these discussions, "hard" real-time means the type
of real-time system discussed above, and "soft" real-time means systems
which have reduced constraints on "lateness" but still must operate very
quickly and repeatably. However, the definition is controversial, as some
mean by "hard" and "soft" the degree of time constraints. For instance,
a real-time process attempting to recognize images may have only a few
hundred microseconds in which to resolve each image, but a process that
attempts to position a servo-motor may have tens of milli-seconds in which
to process its data.
6. Robert Bristow-Johnson adds the following distinction (in the case
of DSP):
In a real-time DSP process, the analyzed (input) and/or generated (output)
samples (whether they are grouped together in large segments or processed
individually) can be processed (or generated) continuously in the time
it takes to input and/or output the same set of samples independent of
the processing delay.
Consider an audio DSP example: if a process requires 2.01 seconds to
analyze or process 2.00 seconds of sound, it is not real-time. If it takes
1.99 seconds, it is (or can be made into) a real-time DSP process.
A common life example I like to make is standing in a line (or queue)
waiting for the checkout in a grocery store. If the line asymtotically
grows longer and longer without bound, the checkout process is not real-time.
If the length of the line is bounded, customers are being "processed" and
outputted as rapidly, on average, as they are being inputted and that process
_is_ real-time. The grocer might go out of business or must at least lose
business if he/she cannot make his/her checkout process real-time (so it's
fundamentally important that this process be real-time).
The last definition (6) is the one used for real-time audio and video,
for phone call over Internet, and so on. It means that the processing time
is less than the time to get a sample. Note that in the case of Internet
it is easy to get starvation because the sample arrivals depend on the
bandwidth.
------------------------------
What is POSIX 1003.1b (formerly 1003.4)? Where
is it available?
POSIX 1003.4 was the working name for what is now the 1003.1b standard..
Recently, Dan Hildebrand posted:
The ratified POSIX standards that generally pertain to real-time OS's
consist of: 1003.1 (OS, process, filesystem and device API), 1003.2 (utilities),
1003.1b (real-time), and 1003.1c (threads). POSIX 1003.1d (which defines
some additional real-time extensions like standardized interrupt handler
support) is not yet ratified, although some OS's already support portions
of it.
The best way to get the most current status is to refer to some of these
texts and contacts:
The POSIX 1003.1 standard is ISBN 1-55937-061-0. A good O'Reilly text
is "POSIX Programmer's Guide: Writing Portable UNIX Programs". Donald Lewine.
ISBN: 0-937175-73-0
For other standards, the IEEE's
address is:
Secretary, IEEE Standards Board
445 Hoes Lane
P.O. Box 1331
Piscataway, NJ 08855-1331
USA
http://cs-www.bu.edu/pub/ieee-rts/Home.html
Many of the POSIX draft standards can also be obtained by calling the
IEEE Draft Standards Office. Credit card in-hand, phone +1 202 371 0101
to place an order.
Another contact is the IEEE-USA Customer Service Center at 800 678 4333
(+1 908 981 1393 for outside of 800 zone); fax: +1 908 981 9667.
------------------------------
What makes an OS a RTOS?
1. A RTOS (Real-Time Operating System) has to be multi-threaded and preemptible.
2. The notion of thread priority has to exist as there is for the moment
no deadline driven OS.
3. The OS has to support predictable thread synchronisation mechanisms
4. A system of priority inheritance has to exist
5. OS Behaviour should be known
So the following figures should be clearly given by the RTOS manufacturer:
1. the interrupt latency (i.e. time from interrupt to task run) : this
has to be compatible with application requirements and has to be predictable.
This value depends on the number of simultaneous pending interrupts.
2. for every system call, the maximum time it takes. It should be predictable
and independent from the number of objects in the system;
3. the maximum time the OS and drivers mask the interrupts.
The following points should also be known by the developer:
1. System Interrupt Levels.
2. Device driver IRQ Levels, maximum time they take, etc.
------------------------------
What is a good RTOS?
A good RTOS is not only a good Kernel ! A good RTOS should have a good
documentation, should be delivered with good tools to develop and tune
your application. So even if some figures like the Interrupt latency, Context
switch time are important, there are a lot of other parameters that will
make a good RTOS. For example a RTOS supporting many devices will have
more advantages than a simple very good nano-kernel.
------------------------------
What is RMA?
"Rate-Monotonic Analysis" is a term coined by researchers at CMU. It refers
to the real-time performance analysis of a system design that uses static-priority
driven scheduling, in particular, the "rate-monotonic" static priority
assignment, where tasks with shorter periods get the higher priorities,
in a typical static-priority driven real-time operating system like pSOS
VxWorks VRTX etc.
Research (mostly) from CMU and U-York and Illinois gives you the mathematical
tools to answer "what if I designed it this way???" analysis on your system
workload. You need to break your software into "tasks" with "periods" and
"deadlines" (relative to the period) and you must be able to guess or prototype
a rough "execution time" for each task. Also, for more precise analysis,
it helps to know all the critical sections and their runtimes and who shares
them, or at the least, the length of the longest critical section in all
of your software.
You can plug all this data into a "schedulability analyzer" tool (PERTS,
MIMOSA, Scheduler 1-2-3 (CMU), TimeWiz (TimeSys), Software
Engineer(?s) Notebook (CMU, newer)), or even the back of an envelope "Utilization
Test" or "Formula Test" and find out if your workload will meet all its
different deadlines.
If you workload does not meet deadlines, the better tools can help you
to explore changes to your workload, in order to meet all the deadlines.
======================================================
III- PUBLICATIONS COVERING REAL-TIME TOPICS
-------------------------
Here are some references to the theory and practice
Several people recommended as a starting place the article "Tutorial on
Hard Real-Time Systems", edited by John A. Stankovic and Krithi Ramamritham,
IEEE
Computer
Society reprint series, Computer Society order number 819.
Kopetz, H.: Real-Time Systems,
Design Principles for Distributed Embedded Applications. Kluwer Academic
Publishers, Massachusetts, 1997.
A good book indeed. It covers:
Real-Time Environment, Distributed
Solutions, Global Time, Modeling Real-Time Systems, Real-Time Entities
and Images, Fault Tolerance, Real-Time Communication, The Time-Triggered
Approach, Input/Output, Real-Time Operating Systems, Real-Time Scheduling,
Validation, System Design, Time Triggered Architecture
PRACTITIONER'S HANDBOOK FOR REAL-TIME
ANALYSIS: Guide to Rate Monotonic Analysis for Real-Time Systems. Klein,Mark;
et al, Year 1993, Definitive developer's guide. Ten chapters in 4 parts:
Introduction;Concepts & Techniques; Analyzing Real-Time Systems; &
Using the Handbook on Realistic Systems. KLUWER ACADEMIC, Pages 712, ISBN:
0-7923-9361-9
STRATEGIES FOR REAL-TIME SYSTEM
SPECIFICATION, Hatley,D.J. & Pirbhai, I.A, Year 1988, Casebook &
practical reference for modeling requirements & architecture. Topeics
include: Process; Control; Finite State Machines, Timing; Dictionary; &
Examples, DORSET HOUSE, Pages 408, ISBN: 0-932633-11-0
STRUCTURED DEVELOPMENT FOR REAL-TIME
SYSTEMS, Combined Version, Vols 1,2 & 3., Ward, P.T. & Mellor,
S. J., Year 1987, PRENTICE HALL, Pages 468, ISBN: 0-13-854654-1
Caxton Foster's "Real-Time Programming: Neglected Topics," despite the
title, is a very good introduction to the basic topics of real-time control,
starting with simple things like interrupts and debouncing switches,
all the way through digital filters. It's a thin paperback (Addison Wesley
MicroBooks), and a (somewhat) experienced programmer can get through it
in a couple of days.
iRUG. Proceedings of the Intel Real-Time User's Group. Annual, back
copies available from iRUG, P.O. Box 91130, Portland, OR 97291, (800) 255-4784.
Annual conference proceedings dealing primarily with Intel's family of
real-time OSs, iRMX.
Books references in The Online
Dedicated Systems Encyclopaedia(there is always a comment there) http://www.dedicated-systems.com/encyc/publications/books.htm
J.E. Cooling, Software Design for Real-time Systems, SBN 0-412-34180-8,
published by Chapman and Hall.
Yann Hang Lee and C.M. Krishna, Readings in real-time systems,
ISBN 0-8186-2997-5, 1993, published by IEEE Computer Society Press.
Mathai Joseph, Real-Time Systems, University of Warwick, ISBN
0-13-455297-0, 1996, published by Prentice Hall Professional Technical
Reference.
Krishna M. Kavi , Real-time systems, abstractions, languages and
design methodologies, ISBN 0-8186-3152-X, 1992, published by IEEE Computer
Society Press.
Phillip Laplante, Real-time systems design and analysis, an engineer's
handbook, ISBN 0-8186-3107, 1993, published by IEEE Computer Society
Press
David L. Ripps, An implementation guide to real-time programming,
ISBN 0-13-451873-X, 1989, published by Yourdon Press, Prentice-Hall Building,
now out of print!
Ken Shumate and Marilyn Keller, Software specification and design,
a disciplined approach for real-time systems, ISBN 0-417-53296-7, 1992,
published by John Wiley and Sons, Inc.
Another list of books with comments http://www.realtime-os.com/rtresour.html
A publisher: http://www.powells.com
---------------------------------
Peter Desnoyers <mailto:peterd@merlin.dev.cdx.mot.com>
sends along:
The classic reference in the area of timers is:
George Varhese and Tony Lauck, "Hashed and Hierarchical Timing Wheels:
Data Structures for the Efficient Implementation of a Timer Facility",
Operating Systems Review 21, no. 5 (Proceedings of 11th ACM Symposium on
Operating Systems), 1987.
Their results show O(1) times for insert and delete of 13 and 7 instructions
for one of the schemes, and decent performance with large numbers of outstanding
timers.
---------------------------------
Christian Ebner mailto:ebner@vmars.tuwien.ac.at
sends along a classic reference in priority inheritance algorithm:
Sha, L., Rajkumar, R. and Sathaye, S.: Priority Inheritance Protocols:
An Approach to Real-Time Synchronization. IEEE Transactions on Computers,
Vol. 39(9). pp.1175-1185.
Analysis shows that the priority inheritance protocol can lead to chained
blocking and deadlocks. To solve this problem, the priority ceiling protocol
was developed by L. Sha, R. Rajkumar and S. Sathaye.
---------------------------------
Here are some other suggestions from various net.sources, in publishing
date order:
Mellichamp, D. A. Real-Time Computing. New York: Van Nostrand Reinhold,
1983. 552 pp.
Twenty chapters by 11 authors on topics ranging from signal processing
to managing real-time computing facilities.
A. K. Mok, The Design of Real-time Programming Systems Based on Process
Models, in Proc. 1984 Real-Time Systems Symposium, Dec.1984, pp5-17.
E. Kligerman and A. Stoyenko, Real-Time Euclid: A Language for Reliable
Real-Time Systems, in TOSE, Sep. 1986, pp 941-949, vol SE-12.
D. W. Leinbaugh and M.-R. Yamini, Guaranteed Response Times in a Distributed
Hard-Real-Time Environment, in TOSE, Dec.1986, vol SE-12.
A. Stoyenko, A Real-Time Language With A Schedulability Analyzer, Computer
Systems Research Institute, University of Toronto, Dissertation, Dec. 1987.
Lawrence, P. D. and Mauch, K. Real-Time Microcomputer System Design.
New York, McGraw-Hill, 1987. 568 pp.
The emphasis is on the design of I/O circuits and assembly language
interfaces for small microprocessors used for embedded systems.
H. Kopetz and A. Damm and Ch. Koza and M. Mulazzani and W. Schwabl and
Ch. Senft and R. Zainlinger, Distributed Fault-Tolerant Real-Time Systems:
The MARS Approach, in IEEE Micro, vol.9, Feb.1989, pp25-40.
Burns, A. and Wellings, A. Real-Time Systems and Their Programming Languages.
Wokingham: Addison-Wesley, 1990. 575 pp.
Ada, Modula-2, and occam 2 are used throughout the book, which covers
topics ranging from basic programming techniques, fault tolerance, exception
handling, concurrency, resource management, and distributed designs.
Vickery, C. Real-Time and Systems Programming for PCs. New York: McGraw-Hill,
1993. 604 pp. The thesis is that the development environment for real-time
systems is ideal for studying systems programming, too. After some introductory
material, the book deals exclusively with Intel's iRMX operating systems,
with particular emphasis on iRMX for Windows.
-------------------------
Real-Time and Embedded Systems related magazines
List from The Real-Time Encyclopaedia http://www.dedicated-systems.com/encyc/publications/magazine.htm
-
Embedded Systems Engineering: Embedded Systems Engineering is a
UK based magazine dedicated to embedded systems and development tools.
Although highly focused on embedded systems this publication also covers
real-time products. For more info email
to Jeremy Kenyon. (mailto:100142.1323@compuserve.com)
-
Details: 10 issues/year, 60 pages, English.
-
Embedded Systems Programming:
Embedded Systems Programming is the leading magazine on embedded systems
design in the US. Although covering mostly embedded systems, a lot of the
editorial is dedicated to real-time systems.
-
Details: 12 issues/year, 106 pages, English.
-
Mezzanines: Mezzanines is
the official publication from GRoupIPC, the international user & manufacturer
group promoting IP & PMC mezzanine solutions. This fancy publication
contains technical articles, application notes and offers a new products
section besides a currently updated product directory.
-
Dedicated Systems Magazine:
Dedicated Systems Magazine (ex- Real-Time Magazine) is THE European reference
magazine for the real-time systems developer. Each magazine is dedicated
to a special theme, such as Buses (VME, PMC, CompactPCI,...), RTOS, Tools
(debugging, monitoring, simulation, design, bus hardware analyzers), Real-Time
Networks, etc. A must for real-time engineers who don't have the time (and
money) to spend on courses and workshops. The magazine also contains Dedicated
Systems Gazette, the supplement which contains new products information.
-
Details: 4 issues/year, 124 pages (+16 page supplement), English.
-
Real-Time Systems: Real-Time
Systems is a journal on time-critical computing systems. Although very
real-time focused, this publication is very theoretical and more targeted
toward researchers.
-
Details: 6 issues/year, 320 pages A5, English.
-
RTC Magazine: The
RTC Magazine (before "The Real-Times"), not to confuse with Real-Time
Magazine, is a more commercial publication which supports the RTC shows
in the US and Europe. The magazine helps the exhibiting companies to better
promote their products.
-
Details: 6 issues/year, 92 pages, English.
-
VITA Journal: The VITA Journal
is a VMEbus related publication and the official publication from VITA,
the VMEbus International Trade Association. As VME is an important standard
in real-time, we shouldn't omit this publication in our list.
-
Details: 4 issues/year, 46 pages, English.
------------------------------
What other net.resources are available
on real-time systems?
There are at least two other newsgroups devoted exclusively to a particular
vendor's real-time operating system:
news:comp.os.lynx The LynxOX real-time
operating system.
news:comp.os.os9 Discussions about the
os9 operating system.
news:comp.os.qnx The QNX real-time operating
system.
news:comp.os.vxworks The VxWorks
real-time operating system.
news:comp.sys.harris The Harris
NightHawk & CX/UX & CX/RT operating systems.
Here are some other related newsgroups:
news:alt.industrial.computing
news:comp.arch Computer architecture.
news:comp.arch.bus.vmebus Hardware
and software for VMEbus Systems.
news:comp.os.misc General OS-oriented
discussion not carried elsewhere.
news:comp.robotics All aspects of
robots and their applications.
news:comp.sys.m68k Discussion about
68k's.
news:sci.engr.control The engineering
of control systems.
news:sci.engr.manufacturing
There are too many other newsgroups devoted to computer operating systems
that support some form of real-time scheduling to list here. The interested
reader is advised to check the "newsgroups" file on her or his local machine.
There is a realtime-related mailing list for embedded computer systems
developers. It is not strictly real-time, but there is some overlap. To
subscribe, send your email address to mailto:embed-request@synchro.com.
A mailing list for discussions concerning the use of Futurebus+ now
exists.
Appropriate topics include the design, implementation, integration
and operation of the hardware and software that are related to Futurebus+.
To subscribe, send the one-line email message (in the body of the message,
not the header; the Subject line is ignored) as shown below to mailto:majordomo@theus.rain.com.
subscribe fbus_users <your_email_address>
To get more information about the mailing list, send the one-line command
shown next to mailto:majordomo@theus.rain.com:
info fbus_users
The info page is automatically sent when you subscribe.
A mailing list intended for the discussion of topics relating to the
pSOSystem and other products of Integrated Systems Inc., Software Components
Group, has been started. Send articles to
mailto:psosuser@isi.com and administrative (subscription) requests
to mailto:listserver@isi.com. The
list administrator is Radek Aster who can be reached at mailto:raster@isi.com.
Dan Hildebrand <mailto:danh@qnx.com>
has a posting listing a number of the embedded PC standards and further
references. If enough folks are interested, it's sufficiently detailed
enough to make a separate FAQ of its own.
Russ Hersch <mailto:sibit@datasrv.co.il>
is now maintaining two _extensive_ FAQs about specific microcontroller
families, and one about microcontrollers in general. Here's the pointers:
Subject: 68hc11 microcontroller FAQ
Summary: This article is a collection of information sources on the
Motorola 68hc11 line of microcontrollers.
Archive-name: 68hc11-microcontroller-faq
Posting-Frequency: monthly
Subject: 8051 microcontroller FAQ
Summary: This article is a collection of information sources on the
Intel 8051 line of microcontrollers (and variants).
[He's working on the archiving of this one.]
Posting-Frequency: monthly
Subject: Microcontroller Primer FAQ
Summary: This article is a primer and general FAQ about microcontrollers.
[He's working on the archiving of this one.]
[Posting-Frequency: monthly, I think]
He also states that Tom Kellett is working on a FAQ on the PIC micro-controller
line, and adds that "hopefully, this will lead towards a much needed collection
of microcontroller FAQs."
------------------------------
Which Web Sites give information about real-time?
The Dedicated Systems Encyclopaedia about everything you
want to know about Real-Time (http://www.dedicated-systems.com)
E. Douglas Jensen
Web Site (http://www.realtime-os.com/rtresour.html)
Frank Miller Resource list http://www.cs.umd.edu/~fwmiller/etc/realtime.html
EEToolbox Resource link list http://www.cera2.com/realtime.htm
The RTC Group (http://www.rtcgroup.com)
Embedded Systems (http://www.embedded.com/net.htm)
VITA (http://www.vita.com)
Mezzanines International (ex- GRoupIPC) (http://www.mezzanines.org)
A good collection of links (http://www.ifi.unizh.ch/groups/ailab/embedded.html)
======================================================
IV- POLEMIC TOPICS
------------------------------
Is Windows NT (or windows 95, or even Windows
CE now) a Real-Time Operating System?
This question appears repeatedly in this news group. Here are the key points:
- Despite a real-time class process, the Win32 API is not suitable
to be used for a Real-Time System:
1. Too few priorities for processes and threads
2. No priority inheritance mechanism
3. Some calls are synchronous with process from the Dynamic Class
- Despite a good interface to hardware for CLASSICAL applications,
this interface is not suitable to develop a Real-Time System:
1. Most of the job in a device driver is done at the DPC level. And
most COTS DD take too much time in the DPC.
2. The DPC problem could have been avoided by increasing the number
of DPC levels, but this is not the case.
3. Pentium Power Management interrupt can preempt your system for an
unpredictible amount of time (depending of the BIOS)
- Real-Time clock
There is a lack of programmable timer.
For a more complete view, look at article:
http://www.dedicated-systems.com/magazine/97q2/winntasrtos.htm
Some companies are now providing Real-Time Extensions to fill up the
hole let opened by Microsoft. (cf the RTOS list)
To do so three main approaches exists: include NT as the lowest level
process in an existing RTOS, put a WIN32 API on top of an existing RTOS,
make NT coexists with a RTOS by modifying the HAL. For complete view, look
at article:
http://www.dedicated-systems.com/magazine/97q2/winntext.htm
One might also be interested in the vendors proposing such products
http://www.qnx.com/whitepaper/qnxwin32.html
http://www.vci.com
http://www.radisys.com
http://www.nematron.com
http://www.lp-elektronik.com
------------------------------
Is Windows CE 2.0 a real-time operating system?
This question appears frequently since the release of Windows CE 2.0. It
is not suitable for real-time system development because:
1.The number of priority levels is too low;
2. Interrupts can not be nested;
3. Interrupt latency is too high;
------------------------------
Which methodology should I use to design a Real-Time
System?
At least you should use one. It is high time people are convinced of the
interest of building a house with the plan. It is very strange that people
still think that Software development is equal to writing or even hacking
code. There are at least three big classes of methodologies :
- The one related to Ada (Booch)
- The one based on data flows
- The OO Methodology (OMT)
One could add the formal approach too (SDL, MSC).
The choice will be based on the inhouse knowledge, level of education
and the client knowledge of software development. For each methodology
you have tools that are more or less good.
------------------------------
Which programming language should I use to develop
a Real-Time System?
Of course you can choose to use assembler. You can always use tools from
the Ancient Age. Nevertheless it would be much better to use a higher level
programming language. Most of them will fit. The Ada Community will always
try to convince you their language is the best to use in any cases. Here
is not the news group to argue about this (news:comp.lang.ada
is THE place). Others will try to convince you to use an OO language. Then
you have to be carefull with the memory management unpredicitbility (Is
there a garbage collection ? Is it under the developpers control?). The
best solution is to avoid the use of dynamic object creation. Just create
them at startup. You have to know that the most used languages are (in
alphabetical order) :
Ada, C, C++ for realtime system development.
Most of the time small parts of the system are still written in assembler
(small parts of Device Driver).
------------------------------
What kind of processor should I use for my Real-Time
System ?
CISC vs RISC: there has been a lot of discussion in the past about this
issue. Because of the high number of registers in a RISC processor, people
said the context switch was not compatible with real-time systems requirements.
This is not true as compilers can optimise the use of registers to reduce
the size of the context switch. A lot of points could be added here, but
as a conclusion we can say that both can be used for Real-Time System.
This FAQ is not the place to start a new war, but you can send any
additions to mailto:jcmon@rtusi.com.
PowerPC 60x versus 40x
The PowerPC 60x family is well suited for calculation, but to deal
with the external world (through Hardware Interrupt) the family 40x should
be prefered as the interrupt management is much more oriented to hardware
whereas in the 60x family it is more oriented to software.
------------------------------
What kind of bus should I use for my Real-Time System
?
VMEbus vs Compact PCI
Just remember these few things :
1. you can have 21 boards on the same VME bus.
2. you have 7 priority levels for Interrupting on the bus
3. you have 4 level to take the bus
4. last but not least: the installed VME bus based applications is
huge.
The Compact PCI offers a bigger bandwidth, is based on a widely spread
standard and the boards should be less expensive to produce (the interface
chips are cheaper).
Other busses:
The choice is big : FutureBus+, Multibus, VXIbus, PCI, ISA, ...
The choice will depend on the type of application, the type of hardware
to use (price/performance) and the target maket.
------------------------------
What Mezzanine technology should I use ?
Industry Pack, PMC, M-Module, S-Bus ...
For IP and PMC, a good place to look at is http://www.groupipc.com/
For M-Modules, CXC Modules, a good place to look at is http://www.vita.com/mezzprod/mezzdirindex.html
It should finally be noticed that the choice will depend on the type
of I/O you deal with. If the key point is price, then IP or M-Modules is
the answer, if performance is the key PMC or S-Bus Module should be choosen.
Another point is the availability of the products: here PMC and IP is THE
choice. They are much more widespread than any other. They are also supported
by a usergroup organisation : GRoupIPC
------------------------------
What real-time network should I use for my real-time
system?
Here the choice is huge and the standardization efforts still poor (but
this is changing quickly):
PROFIBUS, BITBUS, WorldFIP, FIELDBUS, CAN, MIL-STD-1553, ATM, Reflective
Memory, ...
The choice will depend on the price (MIL-STD-1553 is quite expensive,
ATM also), on the availability of controllers, drivers, PLC, ...
------------------------------
Dedicated Systems and year 2000: what are the risks?
Martin Timmerman from Dedicated
Systems Experts explained:
There can be two causes of year 2000 problems: hardware and software
Software:
--------------
The problem is there if you use somewhere only a two-digit system in
the software. Therefore you should check all time data structures the software
uses.
Most real-time systems do not use the absolute time for decision making,
they work with relative time. However if a time delay is computed starting
from 2 absolute times then you have a problem.
If the time is used only for time stamping then there is no problem.
The year 2000 will be 00.
The message here is: for each individual system one should look if
absolute time is used. If yes, wherefore it is used - are computations
based on it?
Hardware:
--------------
- Most Time Of Day (TOD) ICs have only two digit year codes.
In this case the software, should use something like:
if TODyear < 60 add 2000
else add 1900
Problem could be with leap years (1900 is not a leap year, but 2000
is. you need to check IC spec)
- GPS can have problems (not at 2000, but on another date: this was
error in GPS specifications)
- Other HW: See TOD (remark that some Time interfaces do not have any
year information at all: IRIG-B for instance)
Special note for black boxes:
- Check the Interfaces with your system (if time is used) (use the ISD:
Interface Specification Document) or check with the Black box manufacturer
(if he is still alive.....)
Rule: everywhere time is used by the system, there is a potential year
2000 problem.
Remark: this may generate a lot of work. Subsystem by subsystem should
be examined. You need good documentation for the subsystems, which might
not be available. Having the design documentation is almost imperative
and this may also be a fundamental problem for older systems.
======================================================
V- MARKET
------------------------------
Where can I find information related to real-time
products?
Product directories :
VME Products Directory http://www.vita.com/vmeprod/prodir.html
Industry Pack and PMC Products Directory http://www.groupipc.com/products/products.htm
Chips Products Directory http://www.xs4all.nl/~ganswijk/chipdir/
ULC Buyer's Guide http://www.cera2.com/ulc.htm
RTOS :
http://www.cs.arizona.edu/people/bridges/oses.html
http://www.dedicated-systems.com/encyc/buyersguide/rtos/Dir228.html
New Products :
http://www.vita.com/npgallery/npgallery.html
http://www.embedded.com/prod.htm
------------------------------
Where can I find information about real-time
Conferences, Workshops and Tradeshows?
http://www.realtime-os.com/rtresour.html#olconf
http://www.dedicated-systems.com/encyc/calendar/calendar.htm
------------------------------
International organization for standards?
List from Dedicated Systems Encyclopaedia http://www.dedicated-systems.com/encyc/techno/asso/standard/standard.htm
ANSI: American National Standards Institute (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/ansi.htm)
IEC: International Electrotechnical Commission (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/iec.htm)
IEEE: Institute of Electrical and Electronics Engineers (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/ieee.htm)
ISO: International Organization for Standardization (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/iso.htm)
OMG: Object Management Group (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/omg.htm)
OSF: Open Software Foundation (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/osf.htm)
X/Open (http://www.dedicated-systems.com/encyc/techno/asso/standard/organ's/xopen.htm)
------------------------------
International User and Manufacturer Groups?
List from Dedicated Systems Encyclopaedia: http://www.dedicated-systems.com/encyc/techno/asso/user/user.htm
VITA VMEbus International Trade Association (http://www.vita.com)
Mezzanines International (ex-GRoupIPC) Association promoting Mezzanines
Solutions (http://www.mezzanines.org)
PICMG Association promoting the Compact PCI bus (http://www.picmg.com)
Profibus (http://www.profibus.com)
------------------------------
RTOS Market Study (Mainly Japan Market)
Because we could received only a few responses from outside Japan in regret,
only the responses from Japan have been tabulated and analyzed. You can
access the result from the following URL:
http://tron.um.u-tokyo.ac.jp/TRON/ITRON/survey97/result-e.html
Other Market studies are available (not for free) from some companies.
One of them is http://www.dedicated-systems.com
======================================================
VI- RESEARCH AND FREE PRODUCTS
------------------------------
Which Research Institute and Universities are
involved in the Real-Time field?
Here is a link to a page describing activities of Universities and Research
Institutes:
http://www.dedicated-systems.com/encyc/techno/research/research.htm
This list includes the following Universities and Research Institutes:
-
Carnegie Mellon University, Pittsburgh, USA
-
Computer Science Department at Boston University
-
Cornell University, USA
-
DIRECT-Distributed Real-Time Control of the Research Division of Responsive
System, GMD,
-
National Research Center for Computer Science in Germany.
-
DIstributed and Real-Time systems group at University of North Carolina,
Chapel Hill, USA
-
Florida State University, Florida, USA
-
Information Systems Engineering at University of Western Australia
-
Kansas State University, USA
-
Real-Time and Distributed Systems Group at Carleton University in Ottawa,
Canada
-
Real-Time Systems Group at University of Pennsylvania, USA
-
Real-Time Systems Laboratory (RTSL) at University of Illinois, Urbana Champaign,
USA
-
Real-Time Systems Research Group at University of York, England
-
Tenet Group at University of California, Berkeley, USA
-
The Centre for Autonomous, Real-Time Systems (CARTS) at University of Massachusetts,
Amherst
-
The Experimental Real Time Group at Uppsala University, Sweden
-
The Real-Time Systems research group at University of Texas, Austin, USA
-
University of Maryland, USA
-
University of Michigan, Ann Arbor, USA
-
University of Pittsburgh, USA
-
University of Virginia, USA
-
VTT Electronics
-
your research group could also be added to this list.
List of links to research centers http://www.cs.umd.edu/~fwmiller/etc/realtime/research.html
------------------------------
Free Real-Time Product lists
Here is a collection of links towards free products http://www.eg3.com/realxrto.htm
======================================================
VII- CONTRIBUTIONS AND FAQ LOCATION
------------------------------
Where can I get the current copy of the FAQs?
The FAQs are posted every 4 weeks to comp.realtime, comp.answers, and news.answers.
It is available in html format at :
http://www.dedicated-systems.com/encyc/publications/faq/rtfaq.htm
http://www.groupipc.com/rtfaq.htm
http://www.faqs.org/faqs/realtime-computing/faq/
http://www.cis.ohio-state.edu/hypertext/faq/usenet/realtime-computing/top.html
They are also available for anonymous FTP on rtfm.mit.edu in pub/usenet/comp.realtime:
ftp://rtfm.mit.edu/pub/usenet/comp.realtime/
Comp.realtime:_A_list_of_real-time_operating_systems_and_tools_(LONG)
Comp.realtime:_Frequently_Asked_Questions_(FAQs)
Comp.realtime:_Welcome_to_comp.realtime
For those without direct FTP access, there is also a mail-server. Address
a message to mail-server@rtfm.mit.edu; leave the subject blank and include
in the body: send help. It will return the instructions for proper use.
------------------------------
Contributions to comp.realtime FAQs.
The following net.folks, among others, have contributed to this posting:
Martin Timmerman <mailto:mtimmerman@dedicated-systems.com>
Luc Perneel <mailto:l.perneel@dedicated-systems.com>
Christian Ebner <mailto:ebner@vmars.tuwien.ac.at>
Thomas M. Breuel <mailto:tmb@best.com
>
Tim Chambers <mailto:tbc@col.hp.com>
Chuck Cox <mailto:chuck@synchro.com>
Peter Desnoyers <mailto:pjd@midnight.com>
Kevin Driscoll <mailto:driscoll@src.honeywell.com>
Kurt Fuchs <mailto:fs_fuchs@rcsw56.rcvie.co.at>
Milt Fulghum <mailto:fulghum@vss.fsi.com>
Donald Gillies <mailto:gillies@ee.ubc.ca>
Dan Hildebrand <mailto:danh@qnx.com>
Jean-Christophe Monfret <mailto:jeanchristophe.monfret@barco.com>
Marcelo C Mourier <mailto:mmourier@atmsys.com>
David L. Oseas <mailto:doseas@americasttv.com>
Alan F. Perry <mailto:alanp@eng.sun.com>
David B. Stewart <mailto:dstewart@cmu.edu>
John Theus <mailto:john@theus.rain.com>
Alexander Vrchoticky <mailto:alex@vmars.tuwien.ac.at>
Christopher Vickery
Lee Brown
A. Lester Buck
David Hansen
Russ Hersch
Rob Lesieur
Dave Lunger
Special thanks to Jean-Christophe
Monfret who maintained and updated the FAQ during the last years.
Thanks to Mark Linimon who
did also maintain the FAQ.
======================================================
Welcome reactions, additions, and corrections to this posting via email
at l.uhres@dedicated-systems.com
|