Release Notes for MaxRT wRTOS™ 1.0
- Key Features
- Notes
- Known Issues
- SDK Code Changes from RTX64 4.x to wRTOS 1.x
- SDK Code Changes from KINGSTAR 4.x to wRTOS 1.x
wRTOS Runtime
- Scalable from 1 to 63 real-time processors.
- SMP-aware scheduler utilizing priority-driven and pre-emptive algorithms to ensure critical thread context switches; yields to higher-priority threads occur in the sub-microsecond range.
- Configurable thread and interrupt affinity.
- Configurable timer period.
- Attach to line-based and message-based (MSI/MSI-X) interrupts.
- Shutdown handling on Windows STOP or shutdown.
- Deterministic memory.
- Access to the Windows file system and registry.
- Set search paths for process creation and the loading of RTDLLs.
- Dynamic-link library support through RTDLLs, which can be loaded implicitly or explicitly.
- Profile application behavior by monitoring internal objects and custom events.
- Real-time Inter Process Communication between Windows user processes and real-time processes:
- Native and managed interfaces for 32-bit or 64-bit Windows processes.
- Event, mutex, and semaphore objects.
- Data sharing through shared memory.
- Real-time Inter Process Communication between Windows kernel drivers and real-time processes:
- Native interface for 64-bit Windows drivers.
- Event, mutex, and semaphore objects.
- Data sharing through shared memory.
- The Network Link Layer (NL2) software component provides real-time applications with abstract APIs to access network services at Layer 2 of the OSI model, independent of the underlying hardware:
- Transmit and receive raw Ethernet packets with the lowest achievable latency.
- Configure and get the link status.
- Configure hardware timestamping.
- Configure hardware filters.
- Configure QoS.
- Read and adjust hardware clock(s).
- Real-time NIC drivers. See wRTOS Supported NICs for a list of supported devices and their test status.
- Support for Time-Sensitive Networking (TSN) features:
- Hardware timestamping of incoming and outgoing frames.
- Cross-timestamping of NIC hardware clock vs CPU clock (both in software and hardware with PTM).
- NIC hardware clock adjustments.
- Assign Transmit/Receive Queue interrupts to different cores.
- VLAN support.
- Ingress filtering based on PCP (Priority Code Point).
- Launch Time functionality.
- Credit-Based Shaper (Qav) functionality.
- Virtual Network provides a virtual point-to-point connection between Windows and wRTOS that emulates a local area network connection between Windows and the Real-time Subsystem, with no additional hardware required.
- Network Relay establishes a communication channel between Windows and RTSS, enabling Windows applications to send and receive Ethernet frames via NICs owned by wRTOS.
- Windows user groups for limiting access to wRTOS features.
- Tools and Utilities:
- Control Panel provides control for the wRTOS Subsystem and product components, including NL2, TCP/IP, and E-CAT. It also provides shortcuts to launch several commonly used wRTOS tools.
- Settings allows you to activate product components, set the RTSS boot configuration, and configure default behavior for the Real-Time Subsystem (RTSS), real-time applications, networking, and other features.
- Console allows you to view output from real-time applications.
- Message Viewer allows you to view debug and log messages generated during the execution of real-time applications.
- Monitor configures RTSS profiling.
- StampTool supports flags to handle multiple SDK licenses present on your system.
- Task Manager displays a list of running RTSS processes and Windows processes and drivers linked to wRTOS, and pre-process, -thread, and –processor CPU usage
- Latency View allows you to view and compare system timer response latencies on multiple cores simultaneously.
- Network Response Time Measurement (NRTM) allows you to measure the NL2’s latency performance on a system.
- SRTM allows you to view system timer to timer handler response on a given core.
- KSRTM allows you to view system timer to interrupt service routine (ISR) response.
- RtMSpaces allows you to view internal memory allocations.
- RtObjects allows you to view internal objects and states.
- wRTOSProcHybridInfo displays core type, performance capability for each active system core, and thread class ID for different sets of assembly instructions when running on each RTSS core.
wRTOS SDK
Note: wRTOS SDK requires an SDK license.
Note: See SDK Code Changes
- Headers and libraries for application development.
- Real-time API (RTAPI) like Windows Win32 API.
- Real-time Kernel API (RTKAPI).
- Real-time Network Driver API (RTNDAPI).
- Managed Code Framework (IntervalZero.RTX64) provides Subsystem setup and configuration through a managed code interface.
- Configure and Control Framework (RTFW) provides Subsystem setup and configuration through a C/C++ interface.
- Microsoft Visual Studio 2017, 2019, and 2022 support:
- Templates for developing real-time applications and DLLs.
- API code snippets.
- C-Runtime support.
- Local and remote debugging via launch within Visual Studio.
- Local and remote debugging via attach.
- Microsoft WinDbg extension and RTSS symbols.
- Sample source to show basic concepts.
Additional Purchasable Features
See wRTOS Platform Components for a list of the major wRTOS platform components and the software product packages that provide them.
Basic Network
- The TCP/IP Stack provides the following networking capabilities to the Subsystem:
- TCP/UDP/IP networking for real-time processes.
- IPv4 and IPv6 support.
- Winsock support.
- RAW Sockets.
- MAC layer filtering.
- Utilities (RtssArp, RtssIpConfig, RtssPing, and RtssRoute).
GigE Vision
- GigE Vision provides functionality for using GigE Vision Cameras within the real-time wRTOS environment:
- Real-time GigE Vision filter driver.
- GigE Vision Camera Setup tool.
- Real-time GigE Vision Interface and Communication library.
E-CAT
- E-CAT provides support for CANopen over EtherCAT and simplified configuration of EtherCAT networks:
- Auto-Discovery & Auto-Configuration deliver true plug-and-play for EtherCAT Servos and I/Os.
- Tools:
- E-CAT Configuration allows you to configure the EtherCAT devices (SubDevices) connected to the E-CAT MainDevice within an E-CAT component instance and check their status.
- E-CAT ESI Import allows you to import EtherCAT SubDevice Information (ESI) files for your EtherCAT hardware devices and save the ESI data into the E-CAT component database. This enables the E-CAT component to connect to and interact with your EtherCAT hardware devices.
- Supports all Class A features (FoE, EoE…).
- C/C++ API.
- Process implementation approach supports debugging while the EtherCAT MainDevice is running.
- Multiple Master instances.
- Hot connect.
- Cable redundancy.
- High speed options down to 100 µs time cycle.
wRTOS Runtime
General
- wRTOS-created Event Viewer logs are not removed when wRTOS Runtime is uninstalled. (11802)
- The sample Advanced Installer merge modules project, included with the wRTOS Runtime Merge Modules, does not include logic to allow wRTOS Runtime to support virtual machines. If you want your installation to support virtual machines — which is not a supported deployment scenario — you must include the registry value ExitWhenHypervisorPresent (type REG_DWORD) under the registry key HKEY_LOCAL_MACHINE\SOFTWARE\IntervalZero\MaxRT\wRTOS. To support virtual machines, set this value to 1. (11733)
Note: wRTOS does not support Hypervisor-enabled systems. Enabling this feature may cause your system to generate a Windows STOP error when the wRTOS Subsystem is started. A virtual machine should not be used to deploy hard real-time applications.
- wRTOS Runtime is not compatible with the Windows Memory integrity security feature. You must turn it off before you install wRTOS Runtime. You can do this in the Windows Security app under Device security / Core isolation / Core isolation details.
- Upgrading to a new Windows 11 feature update on a machine where the wRTOS Runtime is already installed results in deletion of the RTSS boot configuration. To work around this issue, set the RTSS boot configuration through the wRTOS Activation and Configuration utility. See the topic Setting the RTSS Boot Configuration for more information.
- When Intel® TurboBoost is enabled in the BIOS, Windows core frequency is boosted when the wRTOS Subsystem starts. This is because RTSS cores are in an idle loop for pooling those SRIs from Windows to RTSS cores. On Coffee Lake systems, specifically, whenever there is a core in the idle loop, the remaining cores' frequency is boosted. To avoid this, we recommend you disable Intel® TurboBoost in the BIOS.
Compatibility
- Network functionality was re-architected for wRTOS 1.0. Network functions in RTX64 4.x and previous versions are not compatible with wRTOS 1.0.
- wRTOS supports several .NET implementations under .NET Standard 2.0. These should work without requiring code changes.
Licensing
- RTX64 licenses will not work with wRTOS 1.0.1.
- MaxRT wRTOS product licenses must only be activated using wRTOS Settings or the MaxRT Activation Utility. wRTOS licenses will not work if they are activated using the RTX64 Activation and Configuration tool or RTX64 command line utility. (13034)
- wRTOS only supports small form factor dongles. The standard dongles supported by older RTX64 versions are no longer supported.
Network and Drivers
- wRTOS 1.x drivers are not compatible with the RTX64 4.x version of the Network Abstraction Layer (NAL). RTX64 4.x drivers are not compatible with the wRTOS 1.x Network Link Layer (NL2) (16394, 11653, 11652, 11651, 11649, 11648)
- When creating a custom NIC driver, it is recommended that the driver’s binary name not match the default NIC driver names provided by wRTOS. The default driver names are used by wRTOS Settings to set up interfaces with the optimal defaults based on the provided driver’s logic. (8318)
- Custom NIC drivers should not use the C Runtime library, and must not call printf. (6438)
- A Windows 10 feature update may cause devices previously converted to wRTOS control to convert back to Windows control. Following a Windows feature update, verify that all converted devices remain under wRTOS control, and re-convert any that were reset to Windows control using the steps documented in the topic Converting a Windows Device to wRTOS.
- The maximum value for the TCP/IP Stack's maximum concurrency setting is now 10340. (9151)
- The advanced NL2 interface properties Number of receive buffers and Number of transmit buffers must be a multiple of 8. (8159)
- The IPv4 Address of the Windows adapter is now configured to 192.168.100.10 with 255.255.255.0 Subnet mask by default. (2695)
- For improved performance, it is recommended to use MSI-X Single Vector instead of MSI for interrupts when possible.
Tools and Utilities
- Members of the wRTOSUsers user group can view wRTOS Settings pages but cannot change settings. Attempts to change settings will result in errors. (14153)
- wRTOS Control Panel and wRTOS Settings do not show component status information when the wRTOS Message Bus service is not running.
- RtPing will now always respond with a precision of 1ms or lower. (8915)
- Links to external tools and components in wRTOS Settings and wRTOS Control Panel are disabled when those tools and components are not installed. (10347)
wRTOS SDK
Application Development
- Visual Studio 2015 is not supported.
- Network functionality was re-architected in wRTOS 1.0. Network functions in RTX64 4.x and previous versions are not compatible with wRTOS 1.0.
- DLL projects built with the wRTOS RTDLL Visual Studio template will not build if the file name begins with a numeral. (8683)
- These supported Windows SDK versions have been tested with wRTOS 1.0.1:
| Visual Studio version | Tested Windows SDK versions |
|---|---|
| 2022 |
10.0.26100.x 10.0.22621.x 10.0.19041.x 10.0.18362.x |
| 2019 |
10.1.19041.x 10.0.19041.x 10.0.18362.x |
| 2017 |
10.0.18362.x 10.0.17763.x 10.0.14393.x |
Note: Using a newer Windows SDK version other than the tested Windows SDK versions listed above might introduce unstable behavior. Such versions should not be used until IntervalZero tests them and claims support.
APIs
- See SDK Code Changes from RTX64 4.x to wRTOS 1.x for a list of the APIs that were enhanced, underwent breaking changes, or were deprecated in or removed from wRTOS 1.0.1.
- Real-time RTFW function RtfwSetSubsystemConfiguration must be run with Administrator privileges. The function will fail otherwise. (8456)
wRTOS Runtime
Installation
- If you remove the Virtual Network feature from the wRTOS Runtime installation (it is selected by default), install wRTOS Runtime, and then modify the installation to install the Virtual Network, the Virtual Network will not install properly. To work around this issue, uninstall and reinstall wRTOS Runtime with the Virtual Network feature selected. (11677)
- To run wRTOS Runtime on a virtual machine, you must select Enable virtual machine support during installation. wRTOS does not support all virtualization functionality. Enabling this feature may cause your system to generate a Windows STOP error when the wRTOS Subsystem is started. A virtual machine should not be used to deploy hard real-time applications.
- Running the command to create a custom response file (
wRTOS_<version number>_Runtime_Setup.exe /r /f1 <file location>) using either the wRTOS Runtime or SDK Installer results in a blank error dialog if the specified<file location>is not valid. (10662) - wRTOS user groups are not removed when the wRTOS Runtime is uninstalled. (9911)
Licensing
- The Activation command line utility fails silently (does not display an error) when an attempt is made to activate a wRTOS Runtime component on a Virtual Machine when a dongle is not present. (9225)
- Licenses cannot be activated to a small form factor dongle, either through wRTOS Settings or the command line, on a remote system accessed via Windows Remote Desktop. This is due to a security limitation with the third-party dongle software. Attempts to activate to the dongle in this scenario will result in an error such as Error 19 (Unable to read dongle memory). Note that this issue does not happen when other remote connections, such as VNC or Team Viewer, are used.
Real-Time Subsystem
- Setting the Monitor for runaway threads Watchdog Timer value of 1000 microseconds in wRTOS Settings causes these behaviors (6556):
- An RTSS Exception Notification appears in the System Tray.
- The TCP/IP Stack fails to start with this error: Error starting the real-time TCP/IP stack! The TCP/IP stack is already started.
- If you enable the Virtual NIC interface VirtualNIC, start the TCP/IP Stack, and then force-stop the Subsystem through the wRTOS Control Panel, subsequent attempts to start the Subsystem fail with this error: The Subsystem cannot be started. The wRTOS Managed library encountered an error from a native API: The system cannot find the file specified. When this occurs, reboot the machine and start the Subsystem again. (12892)
- The wRTOS Subsystem cannot be stopped after a process that used _beginthread or _beginthreadex to spawn child threads is forcefully terminated while those child threads are still running. To work around this issue, you must restart the system. To avoid this issue, use CreateThread to spawn child threads, or avoid forcefully terminating a process (using RtssKill or some other means) that used _beginthread or _beginthreadex to spawn child threads that have not exited. (10894, 10700)
- Windows shutdown handling does not function properly on some Intel® 12th Gen systems running Windows 11. When this occurs, wRTOS cannot perform its own shutdown handling. (10673)
Network and Drivers
- The Precision Time Measurement (PTM) feature might not be properly detected by the IGC driver on some machines. (14590)
- Jumbo packets cause the wRTOS Realtek driver (RtndRtl) to become unstable. (11742)
- The Force Speed/Duplex feature for the RtndIGC Driver does not work when the i225 device is plugged into a device that supports 2.5 Gbps. (10867)
- Real-time API RtnGetArpTable and the RtArp.rtss utility display device names truncated to 15 characters. The full case-sensitive device name must be used when adding or deleting an ARP entry. (9222)
Tools and Utilities
- Some of the errors wRTOS Settings generates when invalid values are entered are vague and lack specific details. For example, when Auto expand MSpaces is turned off, and an invalid TCP/IP heap value is specified on the wRTOS Settings Memory page, the tool returns this error: The value provided for the TCP/IP’s ‘memory allocated to the TCP/IP heap’ setting was not valid. The setting was not updated. (14242)
- The Add an Interface dialog on the wRTOS Settings / Interfaces page doesn’t always auto-populate, and may populate with incorrect information, when multiple Virtual Network interfaces are added. (14047)
- If you attempt to shut down the Subsystem after a system restart while multiple processes are running, and you choose not to terminate those processes (see Stopping the Subsystem While Processes are Running), the wRTOS Control Panel might silently close. When this occurs, you should then be able to reopen the wRTOS Control Panel and stop the Subsystem. (12974)
- When the amount of generated monitoring data exceeds the amount of memory dedicated to monitoring, automatic stop conditions such as Maximum number of events to collect or Maximum session log size may cause the active monitoring session to enter a false-stopped state. To resolve this, start a new monitoring session using RTX64 Monitor and make sure the tool shows the new session as running. (10797)
- If the system is shut down while the Subsystem is running and monitoring is enabled but not started, a hidden, locked monitoring session file might remain when the system is rebooted. Note that this file consumes memory associated with the configured maximum session log sizes. (10787)
- wRTOS Tools exhibit various issues on systems running Windows 10 2016 LTSB (Long Term Servicing Branch). Due to these issues, we have performed limited testing and will not be claiming support for such systems. If you require Windows 10 2016 LTSB support, please contact your Sales representative. (9206)
wRTOS SDK
Application Development
- Real-time applications and RTDLLs created with the wRTOS Visual Studio templates that include Microsoft C Runtime support (default) will contain several unnamed mutex objects, which may cause performance issues. It is recommended you not include the Microsoft C Runtime if you do not need to use it. (11740)
- Using a newer Windows SDK than the tested Windows SDK versions might introduce unstable behavior and should not be used until wRTOS fully tests and claims support for it. See Application Development under Notes above for a list of tested Windows SDK versions for each supported Visual Studio version. (10901)
- Applications that include a reference to function
auto t = std::chrono::high_resolution_clock::now();result in linker errors with Visual Studio 2019 v16.9 and later versions. (9946) - Attempts to build a project migrated from a pre-2017 version of Visual Studio to Visual Studio 2017 or later results in a linker error: error LNK2005: _CrtSetReportHook already defined in wRTOS_rtss.lib(RTX_RTSS.SYS). To work around this issue, check the Linker > Input options and make sure wRTOS_rtss.lib is not linked to any of the C Runtime libraries (libcmtd.lib, libvcruntimed.lib, libucrtd.lib). (8697)
- When building an application using .NET 6.0, RtUtilityManaged.dll and MessageBusManaged.dll must be provided in the project. These DLLs can be found in the following directory: C:\Program Files\IntervalZero\MaxRT\wRTOS SDK\1.0\bin (11177)
- When building an application using .NET Framework, Microsoft.Win32.Registry.dll may need to be provided in the project. This DLL can be found in the following directory: C:\Program Files\IntervalZero\MaxRT\wRTOS SDK\1.0\bin (11177)
Application Debugging
- The wRTOS Visual Studio 2022 support package, wRTOSVSSupport2022.vsix, which adds support for the IntervalZero Real-Time Debugger and templates for creating RTSS applications and RTDLLs for Visual Studio 2022, is not installed when Visual Studio 2022 is selected in the wRTOS SDK installer. To work around this issue, navigate to
%wRTOSSDKDir1%\VSExtensionsand double-click the file wRTOSVSSupport2022.vsix. (13276) - Attempting to restart debugging in Visual Studio 2022 may result in the process being terminated with the following error: The IntervalZero Real-time debugger is not compatible with the target RTSS runtime. Debugging will be aborted. (10886)
- The IntervalZero Real-Time Debugger does not work in Visual Studio 2017 if the latest Visual Studio C++ Redistributables are not installed. To work around this issue, install these redistributables:
- Microsoft Visual C++ 2015-2019 Redistributable (x64)-14.48.29910
- Microsoft Visual C++ 2015-2019 Redistributable (x86)-14.48.29910
These redistributables are packaged with the wRTOS_1.0.1_SDK_Setup.zip file.
Alternatively, you can download them from Microsoft at https://visualstudio.microsoft.com/downloads/
See the TechNote Unable to Debug RTSS Applications using the IntervalZero Real-Time Debugger with Visual Studio 2017 on the Support Site for more information.
Supported Windows APIs
- Parameter lpcchValueName in function RegEnumValue is a pointer to a variable that specifies the size of the buffer pointed to by parameter lpValueName. Parameter lpcchValueName is in bytes when it should be in characters. As a result, when the buffer size in bytes is not sufficient, the function fails with error code ERROR_INVALID_PARAMETER (87). This will be fixed in a future release. (9044)
Samples
- The RtkIPC sample fails to build with Visual Studio 2019 versions prior to v16.10.4, resulting in this error: unresolved external symbol __stdio_common_vsprintf referenced in function _snprintf. This issue does not occur in Visual Studio 2019 v16.10.4 and later. (10067)
- The RDTPerformance sample may hang when debugged on machines with a high number of cores. (8907)