Support for user application development running only on a real-time OS

WMX3 also supports building applications that run only in the real-time space.

Overview

The base WMX3 library can be used to write applications that run under Windows, and the library communicates with the real-time process with IMDll.dll.

However, as Windows is not a real time operating system, there may be delays or jitters in the execution timing of API function calls.

The WMX3 library contains functions that avoid these delays and jitters in Windows applications (such as the API Buffer, Trigger Motion, and Events), but another option is to use the RTX SDK to build an application that runs directly under the RTX operating system.

An application written using the RTX SDK and that runs under the RTX operating system cannot display anything on the Windows operating system (except showing messages through the Console Screen). Normally, a separate graphical user interface application is written to run under the Windows operating system. This graphical user application may communicate directly with the RTX application (using functionality that is available in the RTX SDK, such as TCP/IP or shared memory), or may communicate through the WMX3 engine using WMX3 API function calls.

WMX3 libraries that can be linked from RTX applications built to run in real-time space using the RTX SDK API are limited to VC++ libraries.

When compiling a user application as a RTX application using WMX3, IMDLL_RT.lib must be linked instead of IMDll.lib. (IMDLL_RT.lib is included in the WMX3 RTX version.)

IMDll.dll is not required to run RTX applications.

for user application development running only on a real-time OS, no special installation is required besides WMX3 RTX Version.

The following two diagrams show the overall flow of data in the WMX3 architecture.

The case in which WMX3 is operated from a user application on the non real-time os and WMX3 engine runs on real-time os:

../_images/WMXDOC_FUNC_ARCHITECTURE_2_image0.png

The case in which WMX3 is operated from a user application on the real-time os:

../_images/WMXDOC_FUNC_ARCHITECTURE_2_image1.png

Also see Tutorial 6: Applications Using the RTX SDK and Overview of the Architecture.

Individual Precautions and Support Specifications

  • To use the RTX SDK for compiling the RTX applications using the WMX3 library , a license for the IntervalZero RTX SDK is required separately from the WMX3 and RTX runtime licenses included in the standard product package.

  • Notes when outputting logs to the Console Screen from an application compiled with RTX SDK:

Please note the blocking time of functions performing output to the Console Screen. Depending on the volume and frequency of logs, the function can affect the deterministic behavior of the application. In addition to the blocking time, there is also the risk of execution rights being temporarily passed to a thread with a lower priority than the thread that outputs to the console, i.e., task scheduling may break down. For this reason, it is recommended that output from real-time applications to the console screen should not be performed for time-critical processes and should be used primarily for debugging purposes. Also see Console Screen.

  • In RTX applications, do not write infinite loop statements where no processing entity exists in the loop.

for(;;){ continue; }
while(1){ continue; }
If this code is executed, preemption of the RTX will not work and the thread processing the statement may hang the entire process.