1) About
Real Time
2) About
RTX
3) About
Platforms
4) About
Deployment
5) About
Development
6) About
how RTX interacts with Windows
1) Frequently
Asked Questions about Real Time
What is "Real Time"?
Real-time describes an application which requires
a response to an event within some small upper bounded
time frame. Typically, response times are in the
millisecond to microsecond time frame.
What is the difference between "Hard" and
"Soft" Real Time?
Hard real time requires that a response be
logically correct and occur before a certain deadline
or the result is incorrect, and holds no
value.
Soft real-time requires that a
response be logically correct and occur before a
certain deadline or the result becomes increasingly
inaccurate, meaning the result can still hold some
value, even though it occurred after the required
deadline.
What does determinism mean in a real-time
environment?
Determinism is simply defined as the ability to
rationally predict, with a degree of precision, when
an event will happen. Determinism combined with
a real-time environment guaranties that an event will
happen within a small response time and that the
performance of this event is repeatable.
What is a real-time operating system, or
RTOS?
A real-time operating system is a type of
operating system that is intended to provide
determinism and predictability when it responds to a
given event through a specialized scheduler.
Examples of common RTOS are Ardence® ETS (Embedded
Tool Suite), and Wind River VxWorks.
Is Windows a real-time operating
system?
Microsoft® Windows® is usually referred to as a
general-purpose operating system, since it does not
allow applications or kernel-level drivers to
completely mask interrupts and gain control over the
operating system. Depending on hardware, interrupt
latencies under Windows can exhibit very good values,
averaging in the microseconds. However,
worst-case interrupt latencies are unbounded and can
exceed hundreds of milliseconds. Due to these
unbound latencies, deterministic response time is not
guaranteed making standard Windows Desktop and Server
Operating systems unacceptable for real-time
use.
What about CE .NET? I've heard it is
real time?
Windows CE .NET is Microsoft's answer to a
real-time operating system and is geared mainly toward
devices and small-footprint embedded systems, so it
contains only core operating system components. Unlike
Windows, which can be used "out of the box," Windows
CE .NET requires the extra steps of designing and
building your operating system before you can start
developing applications.
What is RTX?
Even though there are a lot of similarities
between an RTOS and RTX, RTX is not an RTOS. RTX
is more appropriately defined as a real-time extension
for Microsoft Windows. RTX enhances Windows by
providing hard real-time and control capabilities to a
general purpose operating system that is familiar to
developers and their end users. RTX consists of
an extension to the Windows HAL and a separate
real-time subsystem (RTSS) that schedules and controls
all RTSS applications independently of
Windows.
2) Frequently Asked
Questions about RTX
How does RTX extend Windows to
provide "hard" real time?
The overall design of RTX affords developers the
"best of both worlds" by providing the ability to use
all the features, and technologies that Windows offers
in addition to "hard" real-time behavior within an
isolated and controlled subsystem. The RTX
Runtime extends the Windows HAL and provides a
real-time subsystem that has its own scheduler, which
allows all RTSS applications to be prioritized ahead
of all Windows applications or Windows operating
system functionality. RTX controls system
resources and is guaranteed to execute ahead of all
Windows threads, Deferred Procedure Calls (DPCs), and
interrupts. This means that RTX allows Windows
to run only when all real-time processing is
finished.
What are the benefits of
RTX?
The RTX Runtime enables general-purpose Windows
processing and high performance real-time processing
and control on a single commercial-off-the-shelf
(COTS) machine. The RTX Runtime can even be
configured to take part in Windows minidumps or to
take control and safely shutdown your real-time
processes if Windows encounters a
failure.
-
The RTX SDK provides developers a rich set of
inter-process communication and synchronization
capabilities, allowing RTSS applications to
communicate with Windows applications and share data
with them. Additionally, RTX provides developers
with the ability to directly access I/O port address
space, physical memory, or hardware without forcing
any driver model on the user.
How long has RTX been around?
Ardence (formerly Venturcom) has been developing
real-time products since 1984. Initially focused
on UNIX, Ardence began to support Windows in 1995,
when Windows NT 4.0 technology became popular.
Since that time, Ardence has been committed to
providing real-time support for all Microsoft
professional operating systems, through
RTX.
What is the current version of
RTX?
The latest version of RTX is version 8.0,
released on August 21, 2007.
What types of industries or products
typically use RTX?
RTX is used in a large variety of products and
vertical markets. Anyone who wants to design an
application that requires system control, determinism,
or real-time performance on Windows can benefit from
incorporating RTX in to their product
design.
-
RTX is used in some of the following
markets:
. Industrial
Automation
. Medical
. Telecom /
Communication
. Test and
Measurement
. Aerospace and
Defense
. Commercial and Military
Simulation
. Imaging
. Education and
Research
. Rapid Control
Prototyping
How is RTX packaged?
RTX is packaged as a Runtime, a Runtime with Tools,
and a Software Development Kit (SDK).
The RTX Runtime is licensed per machine and comes in
two varieties:
An installation for full Windows Operating
Systems, such as XP or Server 2003
-
A Source Level Definition (SLD) installation that
supports Windows XP Embedded Operating System through
Microsoft Target Designer.
The RTX Runtime with Tools is licensed per machine
and includes:
- The RTX Runtime subsystem, used to execute
real-time applications and provide networking support
to the RTX environment.
- A set of tools and utilities for diagnosing issues
and monitoring the performance of your RTX
environment.
The RTX SDK is purchased only once and is licensed on
a per-machine or per-seat basis. Once you purchase
an RTX SDK license, you can develop as many products and
variations as you wish without incurring additional
cost.
What comes with the RTX Runtime?
The RTX Runtime comes with the following
components:
. RTX HAL Extension - extends the
Windows HAL to support real-time control
. RTX
- RTSS Scheduler - schedules all RTSS threads ahead of
Windows threads
. RTX Win32 Support - allows
Windows application to communicate with RTSS
applications
. RTX Kernel Support - allows
Windows kernel drivers to communicate with RTSS
applications
. RT-TCP/IP Stack - TCP/IP stack
for the RTX subsystem
. RTX Properties- A
control panel that configures the RTX
subsystem
. RTX Server - displays RTSS
application output
. Command line utilities to
control RTSS applications
What comes with the RTX Runtime with
Tools?
The RTX Runtime with Tools comes with the following
components:
- The RTX Runtime
- RTX Development tools and Measurement tools:
- Rtss Object Viewer
- Performance View
- Platform Evaluator
- Latency Display
- RTX Demo
- TimeView
What comes with the RTX SDK?
The RTX SDK comes with the RTX Runtime
Environment plus the following
components:
. Header files and
libraries
. Visual Studio Support (Visual
Studio 6, .NET, .NET 2003, and
2005)
o Microsoft C Runtime
support
o Wizards
o Visual Studio
Debugger add-ins
. Debugger Data Extension
for Microsoft WinDbg
. Development
tools
. Measurement
tools
. Comprehensive Help files and User
Guides
. Source code sample to help explain
more advance development topics
What versions of Windows are supported by
RTX?
As of Release 8.0, RTX supports the following
Microsoft Operating Systems:
-
-
Windows Vista For Embedded Systems
-
Windows 2000 Professional, SP4
-
Windows 2000 Server and Advance Server, SP
4
-
Windows XP Professional, SP 2
-
Windows XP Embedded, SP 2
-
Windows Server 2003, SP 1 and R2
3) Frequently Asked Questions about
Platforms
Are there any hardware or platform
requirements for RTX?
With the exception of a few select platforms, the
RTX Runtime runs on any COTS platform that Windows
supports. RTX supports uniprocessor, mobile
processor, multiprocessor, hyper-threading-enabled,
and multiple-core platforms. However, since all
systems are not the same, developers still need to
evaluate their selected platform's latencies to make
sure they are in an acceptable range for their
Real-time or control needs.
-
RTX does not support the following
platforms:
. Compaq AP400
. Dell 7000
portables
. HP Kayak
. HP Alpha
systems
How does RTX support multiprocessor
systems?
RTX supports multiprocessor systems in either of
the following configurations:
. Shared Mode,
where RTX shares a processor with
Windows.
. Dedicated Mode, where RTX takes
over a single processor and Windows knows nothing
about the processor RTX is using.
Can RTX be used on a mobile processor
system?
RTX can be used on mobile processor
systems. However, since mobile processors use
Intel's SpeedStep® technology to lowers processor
speed during Windows Idle time to conserver energy,
long latencies can occur when the processor becomes
unavailable for the speed change. RTX eliminates
these possible latencies by not allowing the Windows
Idle thread to run, removing the possibility of the
processor becoming unavailable due to speed
changing.
Does RTX support
hyper-threading?
RTX can be used on hyper-threading systems.
RTX treats the logical processor created by
hyper-threading as a separate processor, so you can
configure RTX for either shared or dedicated
multiprocessor support.
Does RTX support Physical Address Extension
(PAE) and Data Execution Prevention (DEP)?
RTX supports PAE for all versions of Windows that
support PAE. DEP is also supported except on an
RTX Multiprocessor Dedicated
configuration.
Does RTX have any tools to help determine
what platform will work best for my real-time
requirements?
The RTX SDK includes a tool called Platform
Evaluator that allows you to run a number of
latency-measuring tests to determine which platforms
best fit your real-time and control
needs.
4) Frequently Asked Questions about
Deployment
What is needed for application
deployment?
To deploy your RTSS application, you must provide
an RTX Runtime for each system the application will
run on.
Can I run the RTX Runtime installation from
within another installation?
The RTX Runtime installation program provides a
silent install command line option, which allows an
OEM to wrap the RTX installation and hide it within
another installation.
How do I configure my customer's real-time
subsystem?
Ardence provides an RTX subsystem configuration
interface that allows developers to programmatically
configure the RTX subsystem. This allows customer to
setup their software's subsystem requirement without
requiring anything of their users.
How can I help debug my customer's
issues?
RTX can add active process information to the
Window's minidump file, which can then be analyzed
with Microsoft WinDbg. The RTX Debugger Data Extension
for WinDbg helps you discover the state of the RTX
subsystem and all active RTSS processes at the point
of crash, either with live kernel debugging or from a
full kernel dump of a customers system.
-
For developers who prefer to work in Visual
Studio, RTX now provides remote debugging capabilities
for RTSS applications with Visual Studio 2005 and
Visual Studio .NET 2003.
-
RTX now allows greater flexibility for processing
exceptions. You can configure RTX to handle exceptions
with a structured exception handler, generate a debug
break, or stop the process and dump memory.
-
A set of Tracing APIs allows developers to create
custom trace events so subsystem traces can help
pinpoint problem areas.
5) Frequently Asked Questions about
Development
How does RTX reduce development
time?
Because RTX extends Windows, there is no
need to spend time designing and developing an
operating system before application development work
even begins. RTX developers can create UIs and
applications that take advantage of all the
functionality that Windows offers; developers need
focus only on the real-time control pieces required to
run an RTSS application. Even components that
require real-time control can first be developed as
Windows applications and then recompiled as an RTSS
application with no code changes.
Since all
RTAPI calls are Win32 compliant, developers use calls
they already know and understand. There is no need to
write driver code or follow a strict driver model to
configure and use devices.
Is RTX 8.0 compatible with
previously built RTSS applications?
RTX 8.0 is tested for backwards
compatibility to version 6.0.1. This means that
any application built with RTX 6.0.1 or greater will
run on RTX 8.0, so your existing real-time
applications won't have to be rebuilt with each new
version of the software, unless you want to take
advantage of new features and
functionality.
Do I need special development and debugging
tools to develop RTSS applications?
No. You develop RTSS applications with Microsoft
Visual Studio. The RTX SDK provides wizards for
easy project creation and templates to help get you
started. A Visual Studio Debugger Add-in lets
you debug RTSS applications in a familiar
environment. Since RTSS applications run in Ring
0 they can also be debugged with a kernel-level
debugger such as Microsoft WinDbg, the RTX SDK
includes an RTX Debugger Data Extension for WinDbg
that allows you to view active RTSS processes and
objects.
Can I use Win32 API calls or are all RTX
calls proprietary?
RTX supports a subset of over 50 Win32 API calls
that make sense in a real-time
environment.
-
In addition, RTX provides a large selection of
real-time API calls that developers use to access to
the RTX subsystem (RTSS) and system resources. This
Real-time API (RTAPI) is composed of a set of unique
API calls and Win32-based API calls.
-
The unique real-time API calls are Win32 modeled
calls that provide essential programming capabilities
required for real-time applications, along with access
to the RTX Subsystem and system resources. These
unique RTAPI calls have no equivalent Win32
calls.
-
The Win32-based API calls are unlike the unique
functions in that there are similar functions in the
Win32 environment; however, these calls require
different implementation then their Win32 counterparts
to support the real-time requirement of the RTX
Subsystem. All the Win32-based calls are compatible
with Win32 programming interface semantics, making it
easy for developers already familiar with the Windows
Win32 API.
How can I take advantage of Ring 3 memory
protection during development?
RTX was designed so developers could design and
develop applications first as Win32 applications so
they could take advantage of features like Ring 3
memory protection and 3rd party debugging tools. Then,
once an application is working as designed, just
recompile it as an RTSS application, which runs in
Ring 0 with no code changes
required.
Does RTX support Structured Exception
Handling?
Unlike other applications that run in Ring 0,
RTSS application support structured exception
handling. RTX lets developers call structured
exception handling functions like try, catch, and
throw within their RTSS application. For
example, if an application references a NULL pointer,
the application can handle the error without bringing
down the system by terminating or freezing the
faulting application.
Can I use the Microsoft development libraries
and technologies like C Runtime in my RTX
applications?
RTX supports a subset of Microsoft C Runtime
calls that you can call from your RTSS application.
RTX provides C Runtime Support for Visual Studio 6.0,
.NET, .NET 2003, and 2005.
Do I need to use a kernel debugger to debug
my RTSS application since it runs in Ring
0?
A kernel debugger is not necessary to debug and
RTSS application. The RTX SDK includes Visual
Studio debugger add-ins that let developers debug Ring
0 real-time or control applications in the familiar
Visual Studio development environment. The
debugger add-ins for Visual Studio 2005 and Visual
Studio .NET 2003 also support remote debugging so
developers can remotely debug an RTSS application on a
target system that has special hardware
requirements.
-
However, if you prefer using Microsoft's WinDbg,
the RTX SDK provides Subsystem symbols to help with
the debugging of your RTSS application, along with a
Debugger Data Extension which allows users to view
active RTSS process, thread, and object
information.
Are any tracing tools available?
The RTX SDK provides a tool called TimeView that
lets you set up a system trace on an event for a set
time period. These system traces log and time
stamp a configurable set of system and process events,
allowing developers to trace the behavior of their
real-time application with minimal impact on their
systems real-time performance. The RTAPI also
provides the ability to instrument tracing
functionality within RTSS application.
Does RTX provide any sample
code?
The RTX SDK includes a complete API reference
guide for all supported functions in addition to small
code segments that explain more complex
concepts.
The RTX SDK also provides source
code for a number of sample applications, some of
which are the RTX measurement tools. These
samples can be compiled and run, and show important
concepts and application interaction.
Are any measurement tools
available?
RTX provides a number of tools that help
developer's measure system response and timer
latency:
. SRTM (system response timer
measurement) - a command line application that
measures timer latencies and displays results in
reports and histograms.
. KSRTM (Kernel system
response timer measurement) - a driver and a Win32
utility that measures HAL-level timer latencies and
displays results in reports and
histograms.
. RTX Demo - a graphic version of
KSRTM that displays timer
latencies.
. PerformanceView - a graphical
utility that shows CPU utilization by real-time
applications, Windows processes, and System Idle
time. PerformanceView also displays the maximum
amount of time RTX has held the CPU.
6) Frequently Asked Questions
about how RTX interacts with Windows
Are there limits on the number of threads or
objects that can be created in RTX?
Thread and object creation involves the
allocation of several small RTSS structures in
addition to the initial space allocated for the thread
stack. There are no subsystem limitations on the
number of threads, which are limited only by the
amount of available non-paged memory.
Can my real-time application communicate with
a "regular" Windows application?
RTX lets Win32 and RTSS applications communicate
through a number of inter-process communication
objects (IPC). Use the RTAPIs to create objects
that can be viewed and used by Windows
processes. Similar to Windows inter-process
communication, RTSS and Windows applications create or
open handles to named objects or memory regions,
allowing simple and standard communication and
synchronization between real-time (RTSS) and
non-real-time (Windows) applications. Shared
memory regions allow Windows and RTSS applications to
view the same physical memory without additional
messaging or data passing between
environments.
Can a Windows driver communicate with my
real-time application?
RTX provides a set of real-time Kernel API calls
(RTKAPI) that allow Windows drivers to access RTX
inter-process communication objects from within a
Windows kernel device driver. These RTKAPI calls are
analogous to their RTAPI counterparts, for example,
RtkOpenSemaphore is analogous to
RtOpenSemaphore.
-
The RTKAPI functions and the RTAPI functions are
used in the same way, but RTKAPI functions are used
exclusively in the Windows kernel
environment.
How does RTX support plug and play
devices?
RTX acquires the resources the device needs from
the Windows plug and play manage. To do this, a
device's driver must be updated to point to the RTX
plug and play stub driver. Once the device is
controlled by RTX, the device's resources must be
updated to request a unique interrupt that is not
already being used by Windows. (Sharing
interrupts with Windows would cause determinism to be
lost.) Once the device is setup any RTSS application
can access and use the device.
How do the RTX thread based priorities relate
to the Windows thread priorities?
Windows has a set of priority levels. They use 32
levels, ranging from 0 - 31. They are further defined
into 4 priority classes, of which, the "real-time"
priority class is the highest priority class and then
uses 7 levels within the class.
-
RTX uses a flat priority scheme of 256 priority
levels. When there are any RTX tasks or RTX threads
that are ready to run, RTX will gains total control of
the system resources, regardless of what priority
level a Windows thread may be granted.
-
All RTX priorities are higher than the highest
Windows priorities.
-
There is one case that the Windows priority
scheme is relative to the RTX scheme. That is when the
RTX application is compiled as a Win32 application and
not as a hard real-time application. In this case the
RTX and Windows are mapped back and
forth.
How does RTX ensure Windows does mask off
real-time interrupts?
RTX includes a real-time enabled Hardware
Abstraction Layer (HAL) extension; this extension does
not replace the existing Windows HAL. The extension
maintains interrupt isolation between RTSS and
Windows. Windows cannot mask (at the interrupt
controller level) interrupts managed by RTSS. Windows
interrupts are masked during RTSS processing. The
real-time HAL extension supports high-resolution
clocks and timers for RTSS, while it also supports non
real-time clocks and timers for Windows. Other
real-time HAL extension features include a software
interrupt mechanism between RTSS and Windows, basic
exception management, and enhancements for
determinism.
What about the Windows "Stop
Conditions"?
Windows STOPs, or Bug Checks, are the result of
kernel level drivers or operating system components
failing safety checks, bringing Windows to a
controlled stop. These Windows STOPs are designed to
keep data corruption to a minimum and help developers
find out what went wrong.
Since the RTX
Subsystem is able to continue running after Windows
issues a STOP, developers can build safe shutdown
handling into RTSS applications. RTX calls the
shutdown handlers when Windows issues a STOP, allowing
a system's real-time components to safely shutdown.
Once all shutdown handlers finish running, RTX lets
the Windows shutdown process continue.
-
If the RTX Subsystem determines that Windows
needs to be shutdown, RTX issues a STOP, but instead
of displaying the traditional Windows Blue screen, RTX
displays its own Green screen, which displays
information about the state of RTX at the time of the
STOP
|