FAQ

Frequently Asked Questions

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 provides determinism and predictability when it responds to a given event through a specialized scheduler. Examples of common real-time operating systems are IntervalZero® 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 because 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 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?

    IntervalZero (formerly Ardence, a Citrix Company) has been developing real-time products since 1984. Initially focused on UNIX, IntervalZero began to support Windows in 1995, when Windows NT 4.0 technology became popular. Since that time, IntervalZero 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.1, released in December, 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 the 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.
  • 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
    • sRTX – RTSS Scheduler – Schedules all RTSS threads ahead of Windows threads
    • RTX Win32 Support – Allows Windows applications 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 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)
      • Microsoft C Runtime support
      • Wizards
      • 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 topic
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 one or more processors and Windows knows nothing about the processor(s) 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?

    IntervalZero 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 customer's system.

    For developers who prefer to work in Visual Studio, RTX provides remote debugging capabilities for RTSS applications with Visual Studio 2005 and Visual Studio .NET 2003.

    RTX also provides excellent 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?

    Since 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 user interfaces and applications that take advantage of all the functionality that Windows offers; developers only need to focus on the real-time control pieces required to run an RTSS application. Even components that require real-time control can first be developed as a Windows application 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.1 compatible with previously built RTSS applications?

    RTX 8.1 is backwards compatible to version 6.0.1. This means that any application built with RTX 6.0.1 or greater will run on RTX 8.1, 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. Because 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 the RTX Subsystem 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 a different implementation than their Win32 counterparts to support the real-time requirements 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 an 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.

    For newer systems, which do not provide a COM port, there is a variable in the kernel module named KdDebuggerEnabled that indicates whether kernel debugging is enabled regardless of the connection type. In RTX 8.1 on Windows XP and later, this variable is queried, and if present, sets the RTSS subsystem state to allow kernel debugging as it does in the case of COM port debugging.

    Once implemented, users of WinDbg should be able to kernel debug with
    • Null-modem cables
    • USB 2.0 cables
    • IEEE 1394 “FireWire” cables

  • 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 developers 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 on shared systems.
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 Manager. 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 set up, 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.

    The "real-time" priority class, in turn, has 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 gain 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.

    The one case where the Windows priority scheme is relative to the RTX scheme is when an RTX application is compiled as a Win32 application and not as a hard real-time application. In this case, RTX priority levels are mapped to Windows priority levels. These mappings are fixed and designed to preserve relative ordering among thread priorities.
  • 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. The HAL timer values can be changed via a predefined value table to as little as 1µs, or can be assigned a custom value using the SDK.

  • 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.
  • Does RTX support message Based Interrupts (MSI) devices?
    RTX 8.1 supports MSI and MSI-X capable devices, providing an alternative to line-based interrupts. This functionality is available on all RTX supported operating systems, Windows 2000 through Vista.
  • Can I assign multiple IP addresses to a single NIC?
    RTX 8.1 supports “virtual” IP addresses in IPv4. For users who do not wish to upgrade to IPv6. IPv6 also supports this feature.