RTX64 RTOS, häufig gestellte Fragen für Echtzeit-Windows 10

Häufig gestellte Fragen (FAQs) zu RTX64

Die Informationen in diesem Abschnitt sind bis RTX64 4.1 auf dem letzten Stand.

Was ist Echtzeit?

Echtzeit beschreibt eine Anwendung, die innerhalb eines kurzen, nach oben begrenzten Zeitrahmens eine Antwort auf ein Ereignis erfordert. Normalerweise liegen die Antwortzeiten im Zeitbereich von Millisekunden oder Mikrosekunden.

Was ist der Unterschied zwischen "harter" und "weicher" Echtzeit?

Harte Echtzeit erfordert, dass eine Antwort logisch korrekt ist und vor einer bestimmten Ablauffrist eintritt, sonst ist das Ergebnis falsch und hat keinen Wert.

Weiche Echtzeit erfordert, dass eine Antwort logisch korrekt ist und vor einer bestimmten Deadline erfolgt oder das Ergebnis wird zunehmend ungenau, d. h. das Ergebnis kann noch einen gewissen Wert haben, obwohl es nach der erforderlichen Zeitspanne eingetreten ist.

Was bedeutet Determinismus in einer Echtzeitumgebung?

Determinismus ist definiert als die Fähigkeit, rational und mit einem gewissen Grad an Präzision vorherzusagen, wann ein Ereignis eintreten wird. Determinismus, kombiniert mit einer Echtzeitumgebung, garantiert, dass ein Ereignis innerhalb einer kleinen Reaktionszeit eintritt und dass die Durchführung dieses Ereignisses wiederholbar ist.

Was ist ein Echtzeit-Betriebssystem oder RTOS?

Ein Echtzeitbetriebssystem bietet Determinismus und Vorhersagbarkeit, wenn es durch einen spezialisierten Scheduler auf ein bestimmtes Ereignis reagiert.

Ist Microsoft® Windows® ein Echtzeit-Betriebssystem?

Windows wird üblicherweise als Allzweck-Betriebssystem bezeichnet, da es Anwendungen oder Treibern auf Kernel-Ebene nicht erlaubt, Interrupts vollständig zu verbergen und die Kontrolle über das Betriebssystem zu übernehmen. Je nach Hardware können die Interrupt-Latenzen unter Windows sehr gute Werte aufweisen, die im Durchschnitt im Mikrosekundenbereich liegen. Im schlimmsten Fall sind die Interrupt-Latenzen jedoch unbegrenzt und können Hunderte von Millisekunden überschreiten. Aufgrund dieser ungebundenen Latenzen ist eine deterministische Reaktionszeit nicht gewährleistet, was die Standard-Windows-Desktop- und -Server-Betriebssysteme für den Echtzeiteinsatz inakzeptabel macht.

Was ist RTX64?

IntervalZero’s RTX64-Software wandelt Microsoft Windows in ein Echtzeit-Betriebssystem (RTOS) um.

Für Projekte, die ein Windows-Benutzererlebnis verlangen und harte Echtzeit oder Determinismus erfordern, ermöglicht die RTX64 RTOS-Plattform OEMs und Endanwendern die Nutzung von Windows, x64-Multicore-Multiprozessortechnologie, symmetrischem Multiprocessing (SMP) und Echtzeit-Ethernet – alles in einer einzigen integrierten Entwicklungsumgebung.

  • Verringerung der Materialkosten (BOM) um 25-50%
  • Steigerung von Qualität und Leistung
  • Rasche Skalierung und verkürzte Produktzyklenzeit
  • Signifikante Reduzierung der Abhängigkeit von proprietärer Hardware wie DSPs

Was ist SMP?

RTX64 unterstützt symmetrische Multiprozessorsysteme (SMP); eine Computerarchitektur, die es ermöglicht, Betriebssystem-Tasks und Benutzer-Threads so zu planen, dass sie auf jedem verfügbaren Prozessor ausgeführt werden können. Mit diesem Modell können mehrere Prozessoren für Echtzeitaktivitäten konfiguriert werden. RTSS-Threads können dedizierten RTSS-Prozessoren zur Ausführung zugewiesen werden, und sie können gleichzeitig laufen.

Wenn Sie RTX64 auf einem SMP-fähigen System betreiben, dann bestimmen Sie, wie viele der Prozessoren für Windows und wie viele für das RTX64 Echtzeit-Subsystem (RTSS) vorgesehen sind. RTX64 unterstützt SMP-Systeme, die bis zu 64 Prozessoren haben. Von diesen 64 können bis zu 63 für RTX64 reserviert werden (abhängig von der lizenzierten Edition).

Wie erweitert RTX64 Windows, damit "harte" Echtzeit geboten wird?

Das Gesamtdesign von RTX64 stellt Entwicklern das „Beste aus beiden Welten“ zur Verfügung, indem es die Möglichkeit bietet, alle von Windows bereitgestellten Funktionen und Technologien zu nutzen, zusätzlich zum „harten“ Echtzeitverhalten innerhalb eines isolierten und kontrollierten Subsystems. RTX64 beinhaltet eine echtzeitfähige Hardware Abstraction Layer-(HAL-)Erweiterung. RTX64 ersetzt nicht die bestehende Windows-HAL. Diese Erweiterung erhält die Interrupt-Isolation zwischen RTSS und Windows aufrecht, während sie gleichzeitig die Interrupt-Kommunikation (IPI) zwischen den beiden Systemen ermöglicht. Das Echtzeit-Subsystem plant seine RTSS-Tasks so, dass sie auf separaten Prozessoren ausgeführt werden, ohne Beeinflussung durch das Windows-Betriebssystem oder Windows-Prozesse.

Was sind die Vorteile von RTX64?

Die RTX64 Runtime ermöglicht eine universelle Windows-Verarbeitung sowie eine leistungsstarke Echtzeitverarbeitung und -steuerung auf handelsüblichen (COTS-) Maschinen. Die RTX64 Runtime kann so konfiguriert werden, dass sie an Windows-Minidumps teilnimmt oder die Kontrolle übernimmt und Echtzeitprozesse sicher herunterfährt, wenn Windows einen Fehler feststellt.

Mit dem RTX64 SDK erhalten Entwickler ein umfangreiches Set an Interprozess-Kommunikations- und Synchronisationsfunktionen, die es RTSS-Anwendungen ermöglichen, mit Windows-Anwendungen (32-Bit und 64-Bit) zu kommunizieren und Daten mit ihnen auszutauschen. Darüber hinaus bietet RTX64 Entwicklern die Möglichkeit, direkt auf den Adressraum des I/O-Ports, den physischen Speicher oder die Hardware zuzugreifen, ohne dem Anwender ein Treibermodell aufzuzwingen.

RTX64 nutzt die Vorteile von 64-Bit-Registern und -Compilern voll aus, so dass Echtzeitentwickler dies ebenfalls tun können.

Welche Vorteile hat der Einsatz von RTX64 auf einem SMP-System?

Die Verwendung von RTX64 auf einem SMP-System bietet erhebliche Vorteile, darunter:

  • Leistungssteigerung – Sie können mehrere Prozessoren für kritische Echtzeitaufgaben bereitstellen. Sie können bis zu 63 Echtzeit-Threads auf einem 64-Prozessor-System gleichzeitig ausführen.
  • Skalierung der Leistung – Für die Leistungsskalierung ist kein Neuschreiben von Code erforderlich. Sie können das Gleichgewicht zwischen Echtzeit- und Nicht-Echtzeit-Leistung anpassen, indem Sie die Anzahl der RTSS-Prozessoren und Windows-Prozessoren ändern.
  • Hohe Verfügbarkeit – Kritische Tasks können für die Ausführung auf mehr als einem RTSS-Prozessor geplant werden.
  • IRQ-Affinität – Sie können einen dedizierten RTSS-Prozessor für die Verarbeitung der Ein- und Ausgabe einzelner Hardwareteile festlegen.
  • Behandlung von Systemfehlern – Echtzeit-Tasks überleben Systemabstürze.

Kann dieselbe Anwendung auf jeder Edition von RTX64 laufen?

Die Runtime ist in mehreren Editionen erhältlich, so dass Sie so viele Prozessoren lizenzieren können, wie für Ihre Lösung erforderlich sind. Die Editionen des Produkts RTX64 sind:

Die Edition… enthält Unterstützung für Echtzeitoperationen auf…
Solo einem dedizierten RTSS-Prozessor
Entry bis zu zwei dedizierten RTSS-Prozessoren
Basic bis zu drei dedizierten RTSS-Prozessoren
Professional bis zu sieben dedizierten RTSS-Prozessoren
Premium bis zu 15 dedizierten RTSS-Prozessoren
Ultimate bis zu 63 dedizierten RTSS-Prozessoren

Sie können verfügbare Prozessoren über das RTX64-Aktivierungs- und Konfigurationsprogramm Windows oder RTX64 zuweisen. Das RTX64-Aktivierungsprogramm erkennt automatisch die Gesamtzahl der Prozessoren auf Ihrem System. Weitere Informationen finden Sie unter dem Thema Konfigurieren des Systems in der RTX64-Hilfe.

Alle Editionen der Runtime enthalten die gleichen Funktionen. Anwendungen, die mit dem SDK erstellt werden, können auf jeder Edition mit der gleichen Version von RTX64 ausgeführt werden. Dies gibt Entwicklern die Freiheit, Anwendungen zu entwickeln, die skalierbar sein können.

Seit wann gibt es RTX64?

Das RTX64-Produkt wurde 2013 herausgebracht, um ein Echtzeit-Subsystem für Windows 7 bereitzustellen. RTX64 wurde kontinuierlich weiterentwickelt und unterstützt nun Multiprozessoren mit den folgenden 64-Bit-Betriebssystemen:

  • Windows 10 (bis halbjährliche Channel Version 2009)
  • Windows 10 IoT Enterprise LTSC (Long Term Servicing Channel Version 2019)

Was ist die derzeitige Version von RTX64?

Die letzte Version ist RTX64 4.1, herausgebracht im Jahre 2021.

Welche Branchen oder Produkte setzen RTX64 normalerweise ein?

RTX64 wird in einer Vielzahl von Produkten und vertikalen Märkten eingesetzt. Jeder, der eine Anwendung entwickelt, die Systemsteuerung, Determinismus oder Echtzeitleistung unter Windows erfordert, kann von der Einbeziehung von RTX64 in sein Produktdesign profitieren.

RTX64 wird in einigen der folgenden Märkte eingesetzt:

  • Industrielle Automatisierung
  • Digital Audio
  • Test & Messtechnik
  • Medizintechnik
  • Wehrtechnik Luft- und Raumfahrt

Wie ist RTX64 konfektioniert?

IntervalZero bietet sechs Editionen des Produkts RTX64 Runtime an:

Die Edition… enthält Unterstützung für Echtzeitoperationen auf…
Solo einem dedizierten RTSS-Prozessor in einer Uniprozessor- oder Multicore/Multiprozessor-Umgebung.
Entry bis zu zwei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung.
Basic bis zu drei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung.
Professional bis zu sieben dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung.
Premium bis zu 15 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung.
Ultimate bis zu 63 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung.

Kann ich die Installation von RTX64 in mein Produkt einbinden?

Die RTX64 Runtime-Installationen gibt es in mehreren Varianten:

  • RTX64 Runtime Install – RTX64 kann per unbeaufsichtigter (silent) Installation erfolgen. Sie kann von der Kommandozeile aus aufgerufen oder innerhalb Ihrer eigenen Produktinstallation verwendet werden, so dass keine Benutzerinteraktion während des Installationsprozesses erforderlich ist.
  • Merge Modules für RTX64-Laufzeitfunktionen – Die RTX64-Komponenten sind als Merge Modules verfügbar, die in die Installation eines OEM-Produkts eingebunden werden können. Bei einer separaten Installation werden die Merge Modules auf dem System zur Verfügung gestellt.

Weitere Informationen finden Sie im RTX64 Deployment Guide.

Was gehört zum Lieferumfang der RTX64 Runtime?

Die RTX64 Runtime wird mit den folgenden Funktionalitäten ausgeliefert:

  • Erweiterung der Windows-HAL zur Unterstützung der Echtzeitsteuerung und Isolierung von Interrupts
  • Scheduler, der über mehrere Kerne in einer dedizierten Konfiguration plant
  • Deterministischer lokaler Speicher durch konfigurierbare Prozess-MSpaces
  • Verarbeitungs- und Netzwerkfähigkeit durch eine Network Abstraction Layer (NAL) und einen optionalen RT-TCP/IP-Protokollstack innerhalb der RTSS-Umgebung
  • Ein Control Panel zur Konfiguration des RTX64-Subsystems
  • Die Möglichkeit, RTSS-Prozessausgaben in einem Konsolenfenster anzuzeigen, das so konfiguriert werden kann, dass es für jede Echtzeitanwendung oder als einzelne Instanz für alle Echtzeitanwendungen angezeigt wird.
  • Ein Task-Manager-Dienstprogramm zur Anzeige von Echtzeitprozessen (.rtss) und mit RTX64 verknüpften Windows-Prozessen (.exe). Sie können mit dem Task-Manager neue Tasks starten und laufende Tasks beenden. Sie können auch Tasks planen, die mit dem Subsystem gestartet werden sollen, und CPU-Auslastungsdaten für alle Prozessoren anzeigen, die entweder Windows oder RTX64 zugewiesen sind
  • Überwachungsinfrastruktur, die es Entwicklern ermöglicht, ein Profil des Verhaltens von RTSS-Anwendungen über alle RTSS-Prozessoren hinweg zu erstellen. Ebenfalls enthalten ist ein einfaches Dienstprogramm, das eine lesbare Textdatei ausgibt
  • Latency View-Tool zur Anzeige der Timer-Latenz auf Windows- und RTSS-Cores
  • Befehlszeilen-Utilities zur Anzeige der CPU-Auslastung und des Objektstatus
  • Umfassende Hilfedateien und Benutzerhandbücher

Was gehört zum Lieferumfang des RTX64 SDK?

Das RTX64-SDK wird mit den folgenden Komponenten geliefert:

  • Header-Dateien und Bibliotheken
  • Unterstützung für Visual Studio 2019, 2017 und 2015 (veraltet)
  • Unterstützung für Microsoft C Runtime
  • Vorlagen für die Erstellung von Anwendungen und DLLs
  • API-Code-Schnipsel
  • RTX64 WinDbg Extension, die Microsofts 64-Bit-Version von WinDbg erweitert und eine Möglichkeit bietet, den Zustand von RTSS-Prozessen sowie das RTX64-Subsystem zu analysieren und zu interpretieren
  • Tracealyzer für RTX64, ein Diagnosewerkzeug von Percepio zum Betrachten von Überwachungssitzungsdaten
  • Symbole zu Schlüsselkomponenten der RTX64 Runtime
  • Umfassende Hilfedateien und MiniTutorials
  • Quellcode-Beispiele, um fortgeschrittene Entwicklungsthemen zu erläutern

Wie aktiviere ich meine Kopie von RTX64?

RTX64-Komponenten müssen mit einer gültigen Lizenz aktiviert werden, bevor sie verwendet werden können. Sie können das RTX64-Aktivierungs- und Konfigurationsprogramm, das unmittelbar nach der Programminstallation erscheint, verwenden, um Ihr Produkt zu aktivieren und an einen bestimmten Rechner oder an einen von IntervalZero bereitgestellten kompakten Dongle zu binden. Informationen zur Erstaktivierung finden Sie in der RTX64-Installationsanleitung für Ihr Produkt oder in der RTX64-Bereitstellungsanleitung.

Die Methode, mit der Sie Ihre Kopie von RTX64 aktivieren, hängt davon ab, ob Sie mit dem Internet verbunden sind. Es sind Videos verfügbar, die den Prozess der Aktivierung mit und ohne Internetverbindung zeigen. Sie können die Videos unter http://www.intervalzero.com/rtx-product-activation/ ansehen.

Gibt es irgendwelche Anforderungen an Hardware oder Plattform für RTX64?

Die RTX64 Runtime läuft auf jeder handelsüblichen (COTS-)Plattform mit Windows 64-Bit-Support. RTX64 unterstützt Mobilprozessor-, Multiprozessor- und Multicore-Plattformen. Da jedoch nicht alle Systeme gleich sind, müssen Entwickler die Latenzen jeder Plattform, die sie wählen, evaluieren, um sicherzustellen, dass die Plattform ihre Echtzeit- oder Steuerungsanforderungen unterstützen kann. Sie können RTX64 mit Hyper-Threading-Systemen verwenden, aber es wird empfohlen, die RTX64-Leistung zu evaluieren, um sicherzustellen, dass die Echtzeitanforderungen erfüllt werden, wenn Hyper-Threading aktiviert ist.

Eine Auflistung der kompatiblen Prozessoren finden Sie im Dokument RTX64-Prozessorkompatibilität, das unter http://www.intervalzero.com/technical-support/guides-and-minitutorials/ zur Verfügung steht.

Unterstützt RTX64 Prozessor-Cluster?

RTX64 läuft auf Systemen mit bis 64 Prozessoren; bis 63 können RTX64 zugewiesen werden.

Kann RTX64 auf einem mobilen Prozessorsystem verwendet werden?

RTX64 kann auf Systemen mit mobilen Prozessoren verwendet werden. Da mobile Prozessoren jedoch die Power-Policy-Technologie verwenden, um die Prozessorgeschwindigkeit während der Windows-Leerlaufzeit zu senken und somit Energie zu sparen, kann es zu langen Latenzzeiten kommen, wenn der Prozessor während der Geschwindigkeitsänderung nicht mehr verfügbar ist. RTX64 interagiert mit den Optionen der Windows-Energieverwaltung, um diese Funktionalität zu deaktivieren, was dazu führt, dass die Prozessoren nicht mehr verfügbar sind. Benutzer haben die Möglichkeit, die Windows-Leerlauferkennung wieder zu aktivieren, wenn ihre Anwendung mit der resultierenden Latenz arbeiten kann.

Unterstützt RTX64 Windows 10 auf x2APIC-Systemen?

Nein, x2APIC-Systeme werden nicht unterstützt. Nur Systeme, die das Abschalten von x2APIC ermöglichen, werden unterstützt. Die RTX64-Installation wird, wenn möglich, x2APIC abschalten.

Unterstützt RTX64 Hyper-Threading?

RTX64 kann auf Hyper-Threading-Systemen verwendet werden. RTX64 behandelt den von Intel Hyper-Threading erzeugten logischen Prozessor als separaten Prozessor. Da sich beide logischen Prozessoren denselben physischen Prozessor teilen, kann ein logischer Prozessor die Leistung des anderen beeinträchtigen. Es wird empfohlen, eine gerade Anzahl von Windows-Prozessen zu verwenden, damit sich ein logischer Windows-Prozessor und ein logischer RTSS-Prozessor nicht denselben physischen Prozessor teilen. Sie sollten auch die RTX64-Leistung bewerten, um sicherzustellen, dass bei aktiviertem Hyper-Threading Ihre Echtzeitanforderungen immer noch erreicht werden.

Beeinträchtigt Antiviren-Software RTX64?

RTX64 Runtime kann neben Antivirensoftware von Drittanbietern betrieben werden, solange RTX64 Zugriff auf die benötigten Systemordner und Verzeichnisse erhält. Wenn RTX64 auf einem System mit einem 3rd-Party-Antivirus nicht korrekt funktioniert, ist es empfehlenswert, Ausnahmen in den Antivirus-Regeln/Policies einzutragen. So können Sie z.B. die Antivirensoftware anweisen, die RTX64-Komponenten RTX_RTSS, RTX_HALEXT, etc. zu ignorieren, oder den RTX64-Installationsordner ganz zu ignorieren. In manchen Fällen müssen Sie auch den Ordner ignorieren, aus dem Ihre Binärdateien ausgeführt werden.

Informationen darüber, welche Microsoft-Sicherheitsfunktionen auf demselben System wie RTX64 Runtime ausgeführt werden können, finden Sie in der TechNote RTX64 Compatibility with Microsoft Security Features, die auf der Support-Site verfügbar ist.

Unterstützt RTX64 virtuelle Maschinen?

Virtuelle Maschinen sollten nicht für den Einsatz von RTX64-Laufzeitprodukten verwendet werden, da das Echtzeit-Subsystem keinen Determinismus in einer virtuellen Umgebung garantieren kann. Für die Entwicklung und den Test können jedoch virtuelle Maschinen verwendet werden. In der TechNote Virtual Machines Tested with RTX64/RTX finden Sie Informationen zu virtuellen Maschinen, die intern von IntervalZero verwendet wurden und von denen bekannt ist, dass sie mit RTX64 funktionieren.

HINWEIS: Für die Lizenzierung von RTX64 auf einer Virtuellen Maschine wird ein Dongle benötigt.

Was wird für den Einsatz der Anwendung benötigt?

Um Ihre RTSS-Anwendung bereitzustellen, müssen Sie für jedes System, auf dem die Anwendung laufen soll, eine RTX64 Runtime-Lizenz erwerben. Es sind mehrere Editionen der RTX64 Runtime verfügbar, so dass Sie nur die Anzahl an Prozessoren lizenzieren müssen, die für Ihre Lösung erforderlich sind. Weitere Informationen zum Einsatz von RTX64 finden Sie im RTX64 Deployment Guide.

Kann ich die RTX64 Runtime-Installation aus einer anderen Installation heraus ausführen?

IntervalZero bietet die Möglichkeit einer unbeaufsichtigten (silent) Kommandozeilen-Installation für RTX64, die es einem OEM erlaubt, die RTX64-Installation zu verpacken und innerhalb einer anderen Installation zu verstecken. Die RTX64-Laufzeitkomponenten sind auch als Merge Modules verfügbar, die in die Installation eines OEM-Produkts eingebunden werden können.

Wie konfiguriere ich das Echtzeit-Subsystem meines Kunden?

IntervalZero stellt Managed Code und Native Frameworks zur Verfügung, die zur programmatischen Konfiguration des RTX64-Subsystems verwendet werden können. Dies ermöglicht es Kunden, die Anforderungen ihrer Software an das Subsystem einzurichten, ohne etwas von ihren Endbenutzern zu verlangen.

Wie kann ich meinem Kunden bei der Fehlersuche helfen?

In Visual Studio bietet RTX64 lokale und Remote-Start- und Attach-Debugging-Funktionen für RTSS-Anwendungen mit Visual Studio 2019, 2017 und 2015 (veraltet).

RTX64 bietet auch eine hervorragende Flexibilität bei der Verarbeitung von Ausnahmen. Sie können RTX64 so konfigurieren, dass es Ausnahmen mit einem strukturierten Exception-Handler behandelt, einen Debug-Break generiert oder den Prozess anhält und den Speicher ausgibt.

RTX64 bietet eine WinDbg Erweiterung, die für das Post-Mortem Debugging einer Windows Speicherauszugsdatei verwendet werden kann.

RTX64 bietet auch Überwachungsfunktionen, die es ermöglichen, das Verhalten von Anwendungen zu verfolgen, ohne dass Änderungen am Code der Echtzeitanwendung erforderlich sind. Tracealyzer, ein grafisches Werkzeug zur Analyse von Monitor-Sitzungsdaten, wird ebenfalls bereitgestellt.

Kann ich die Funktionalität, die für Endanwender verfügbar ist, einschränken?

Ja. Sobald RTX64 erfolgreich installiert wurde, können alle authentifizierten Benutzer, die sich am System anmelden, das RTX64 Subsystem und die RTSS-Anwendungen steuern, konfigurieren und ausführen, auch wenn sie keine Computer- oder Domänenadministratoren sind. Systemadministratoren können den Zugriff auf die RTX64-Ressourcen steuern, indem sie Mitglieder der Gruppen RTX64Administrators und RTX64Users konfigurieren. Weitere Informationen finden Sie im RTX64 Runtime Install Guide.

Wie verkürzt RTX64 die Entwicklungszeit?

Da RTX64 Windows erweitert, ist es nicht notwendig, Zeit mit dem Design und der Entwicklung eines Betriebssystems zu verbringen, bevor die Arbeit an der Anwendungsentwicklung überhaupt beginnt. RTX64-Entwickler können Benutzeroberflächen und Anwendungen erstellen, welche die gesamte Funktionalität von Windows nutzen; die Entwickler müssen sich lediglich auf die Teile der Echtzeitsteuerung konzentrieren, die zur Ausführung einer RTSS-Anwendung erforderlich sind. Selbst Komponenten, die Echtzeitsteuerung erfordern, können zunächst als Windows-Anwendung entwickelt und dann ohne Code-Änderungen als RTSS-Anwendung neu kompiliert werden.

Da alle Echtzeit-API-Aufrufe (RTAPI) Windows-konform sind, verwenden Entwickler Aufrufe, die sie bereits kennen und verstehen. Es besteht keine Notwendigkeit, Treibercode zu schreiben oder einem strengen Treibermodell zu folgen, um Geräte zu konfigurieren und zu verwenden.

Benötige ich spezielle Entwicklungs- und Debugging-Tools, um RTSS-Anwendungen zu entwickeln?

Nein. RTSS-Anwendungen werden mit Microsoft Visual Studio entwickelt. Das RTX64 SDK bietet einen Assistenten zur einfachen Projekterstellung und Vorlagen, die Ihnen den Einstieg erleichtern. Mit der Unterstützung des Visual Studio Debugger können Sie RTSS-Anwendungen in einer vertrauten Umgebung debuggen. RTX64 unterstützt lokales und Remote-Debugging durch Launch und Local Attach in Visual Studio 2019, 2017 und 2015 (veraltet). Eine WinDbg-Erweiterung ist auch für das Post-Mortem-Debugging von Windows-Speicherabbilddateien verfügbar.

RTX64 unterstützt auch die Verwendung des Intel C++ Compilers innerhalb der Visual Studio IDE.

Kann ich Windows API-Aufrufe verwenden oder sind alle RTX64-Aufrufe proprietär?

RTX64 unterstützt eine Teilmenge von über 50 Windows-API-Aufrufen, die in einer Echtzeitumgebung sinnvoll sind.

Zusätzlich bietet RTX64 eine große Auswahl an Echtzeit-API-Aufrufen, die Entwickler für den Zugriff auf das RTSS und die Systemressourcen verwenden. Diese Echtzeit-API (RTAPI) besteht aus einer Reihe von einzigartigen API-Aufrufen und Windows-basierten API-Aufrufen.

Die eindeutigen Echtzeit-API-Aufrufe sind von Windows modellierte Aufrufe, die wesentliche, für Echtzeitanwendungen erforderliche Programmierfunktionen sowie den Zugriff auf das RTSS und die Systemressourcen bereitstellen. Diese eindeutigen RTAPI-Aufrufe haben keine entsprechenden Windows-Aufrufe.

Die Windows-basierten API-Aufrufe, die von RTX64 unterstützt werden, unterscheiden sich von den einzigartigen RTAPI-Aufrufen dadurch, dass es in der Windows-Umgebung ähnliche Funktionen gibt; diese Aufrufe erfordern jedoch eine andere Implementierung als ihre Windows-Pendants, um die Echtzeitanforderungen des RTSS zu unterstützen. Alle Windows-basierten Aufrufe sind mit der Semantik der Windows-Programmierschnittstelle kompatibel, was es für Entwickler, die bereits mit der Windows-API vertraut sind, einfach macht.

Wie kann ich die Vorteile des User-Mode-Speicherschutzes während der Entwicklung nutzen?

RTX64 wurde so konzipiert, dass Entwickler Anwendungen als RTSS- oder Windows-Anwendungen entwerfen und entwickeln können. Wenn eine Anwendung als Windows-Anwendung entwickelt wird, können Entwickler die Vorteile von Funktionen wie dem User-Mode-Speicherschutz und anderen Debugging-Tools von Drittanbietern nutzen, die speziell für User-Mode-Anwendungen geeignet sind. Nachdem eine Anwendung wie gewünscht funktioniert, kann sie als RTSS-Anwendung neu kompiliert werden, die im Echtzeit-Subsystem auf dedizierten Prozessoren läuft, ohne dass Codeänderungen erforderlich sind.

Unterstützt RTX64 die strukturierte Ausnahmebehandlung?

Im Gegensatz zu anderen Anwendungen, die im Kernel-Modus laufen, unterstützen RTSS-Anwendungen das Structured Exception Handling. RTX64 ermöglicht Entwicklern den Aufruf von strukturierten Ausnahmebehandlungsfunktionen wie Try, Catch und Throw innerhalb ihrer RTSS-Anwendung. Wenn eine Anwendung zum Beispiel einen NULL-Zeiger referenziert, kann die Anwendung den Fehler behandeln, indem sie die Anwendung, die den Fehler verursacht hat, beendet oder einfriert, ohne das System herunterzufahren.

Kann ich die Microsoft Entwicklungsbibliotheken und Technologien wie C Runtime in meinen RTX64-Anwendungen verwenden?

RTX64 unterstützt eine Teilmenge der Microsoft C Runtime-Calls, die Sie von Ihrer RTSS Anwendung aus aufrufen können. RTX64 bietet Microsoft C Runtime Support für Microsoft Visual Studio 2019, 2017 und 2015 (veraltet).

Unterstützt RTX64 SSE und AVX/AVX2?

Ja. RTX64 unterstützt und speichert Statusinformationen für AVX/AVX2 (YMM0~YMM15), AVX-512, SSE (SSE/SSE2/SSE3/SSE4) und MMX-Register, sofern die Hardware dies unterstützt.

Stellt RTX64 einen Beispielcode zur Verfügung?

Das RTX64 SDK enthält eine vollständige API-Referenz für alle unterstützten Funktionen, zusätzlich zu kleinen Codesegmenten, die komplexere Konzepte erläutern.

Das RTX64 SDK bietet auch Quellcode für eine Reihe von Beispielanwendungen, darunter die RTX64-Messwerkzeuge. Diese Beispiele können kompiliert und ausgeführt werden und zeigen wichtige Konzepte und das Zusammenspiel der Anwendungen. Für Kunden mit Support enthält die IntervalZero Support Site mehrere Beispiele und Tools für die Verwendung mit RTX64.

Sind Messwerkzeuge verfügbar?

RTX64 bietet Tools und APIs, die Entwicklern bei der Messung von Systemreaktions- und Timer-Latenz helfen:

  • SRTM (System Response Timer Measurement) ist eine Kommandozeilenanwendung, die Timer-Latenzen misst und die Ergebnisse in Berichten und Histogrammen anzeigt.
  • KSRTM (Kernel System Response Timer Measurement) ist ein Messwerkzeug, das Timer-Latenzen auf HAL-Ebene zur Interrupt Service Routine (ISR) misst und die Ergebnisse in Berichten und Histogrammen anzeigt.
  • Latency View ist ein Tool, das einen visuellen Vergleich der Latenz zwischen Windows und RTX64-Cores anzeigt.
  • RtPerfMonitor ist ein Befehlszeilenprogramm, das Systeminformationen anzeigt, einschließlich Geschwindigkeit und Typ des Prozessors, auf dem RTX64 läuft, HAL-Typ, CPU-Auslastung und andere Informationen, die zur Messung der RTSS-Anwendungslast verwendet werden können.
  • Mehrere APIs für die Profilerstellung über Prozessoren hinweg, darunter die folgenden:
    • RtGetThreadTimes ruft die Ausführungszeit eines bestimmten Threads ab.
    • RtGetProcessTimes ruft die Zeitinformationen für einen bestimmten RTSS-Prozess ab.
    • QueryPerformanceCounter und QueryPerformanceFrequency ermöglichen eine genaue Zeitverfolgung zwischen mehreren Prozessoren.

Ist die Anzahl von Threads oder Objekten, die in RTX64 erzeugt werden können, begrenzt?

Die Erstellung von Threads und Objekten umfasst die Zuweisung mehrerer kleiner RTSS-Strukturen zusätzlich zu dem anfänglich für den Thread-Stack zugewiesenen Platz. Es gibt keine Subsystembegrenzungen für die Anzahl der Threads. Die einzige Begrenzung ist die Menge des verfügbaren nicht ausgelagerten Speichers.

Kann meine Echtzeitanwendung mit einer "normalen" Windows-Anwendung kommunizieren?

RTX64 ermöglicht die Kommunikation zwischen Windows- und RTSS-Anwendungen über eine Reihe von Inter-Process Communication-(IPC-)Objekten. Verwenden Sie die RTAPI-Funktionen, um Objekte zu erstellen, die von Windows-Prozessen (32 und 64-Bit) eingesehen und verwendet werden können. Ähnlich wie bei der Inter-Prozess-Kommunikation unter Windows erstellen oder öffnen RTSS- und Windows-Anwendungen Handles zu benannten Objekten oder Speicherbereichen und ermöglichen so eine einfache und standardmäßige Kommunikation und Synchronisation zwischen Echtzeit-(RTSS-) und Nicht-Echtzeit-(Windows-)Anwendungen. Gemeinsame Speicherregionen ermöglichen es Windows- und RTSS-Anwendungen, denselben physischen Speicher zu sehen, ohne dass zusätzliche Nachrichten oder Daten zwischen den Umgebungen übergeben werden müsse

Standardobjekte:

  • Event – Das Ereignisobjekt ist ein Synchronisationsobjekt. Es ist nützlich, um ein Signal an einen Thread zu senden, das anzeigt, dass eine bestimmte Aktion stattgefunden hat.
  • Mutex – Das Mutex-Objekt ist ein Synchronisationsobjekt, dessen Zustand signalisiert wird, wenn es keinem Thread gehört, und nicht signalisiert wird, wenn das Mutex einem Thread gehört. Das Mutex-Objekt vermittelt den exklusiven Zugriff auf eine gemeinsam genutzte Ressource.
  • Semaphor – Das Semaphor-Objekt ist ein Synchronisationsobjekt, das einen Zähler zwischen Null und einem festgelegten Maximalwert verwaltet. Der Zähler wird jedes Mal um eins verringert, wenn ein Thread eine Wartezeit auf das Semaphor-Objekt beendet; bei der Freigabe des Semaphors wird der Zähler um einen variablen Betrag erhöht. Wenn der Zähler Null erreicht, wird der Zustand des Semaphor-Objekts nicht mehr signalisiert und kein weiterer Thread kann ein Warten auf das Semaphor-Objekt abschließen, bis ein anderer Thread den Zähler erhöht.
  • Shared Memory – Das gemeinsam genutzte Speicherobjekt ist ein Bereich des nicht ausgelagerten physischen Speichers, der in den virtuellen Adressraum eines Prozesses eingeblendet werden kann. Wenn ein Shared-Memory-Objekt einen Namen hat, können weitere Prozesse den Speicherbereich abbilden. Auf ein Shared-Memory-Objekt wird sowohl mit einem Handle als auch mit einer virtuellen Adresse zugegriffen. Damit ein Prozess seinen Zugriff auf ein gemeinsames Speicherobjekt vollständig beenden kann, muss er alle offenen Handles schließen.

Wie unterstützt RTX64 Plug-and-Play-Geräte?

RTX64 bezieht die Ressourcen, die das Gerät benötigt, vom Windows Plug and Play Manager. Um dies zu ermöglichen, muss der Treiber eines Geräts aktualisiert werden, um auf den RTX64-Plug-and-Play-Stub-Treiber zu verweisen. Nachdem das Gerät durch RTX64 gesteuert wird, müssen die Ressourcen des Geräts aktualisiert werden, um einen eindeutigen Interrupt anzufordern, der nicht bereits von Windows verwendet wird. (Die gemeinsame Nutzung von Interrupts mit Windows würde zu einem Verlust des Determinismus führen.) Beachten Sie, dass ein eindeutiger Interrupt nur für Geräte benötigt wird, die zeilenbasierte Interrupts verwenden. Sobald das Gerät eingerichtet ist, kann jede RTSS-Anwendung auf das Gerät zugreifen und es verwenden.

Unterstützt RTX64 Message-based Interrupt-(MSI/MSI-X-) Geräte?

RTX64 unterstützt MSI- und MSI-X-fähige Geräte und bietet damit eine Alternative zu leitungsbasierten Interrupts. Diese Funktionalität ist auf allen von RTX64 unterstützten Betriebssystemen verfügbar.

Wie verhalten sich die RTX64-Thread-basierten Prioritäten zu den Windows-Thread-Prioritäten?

Windows hat einen Satz von 64 Prioritätsstufen, die von 0-63 reichen. Sie sind weiter in 4 Prioritätsklassen definiert, von denen die „Echtzeit“-Prioritätsklasse die höchste Prioritätsklasse ist.

Die „Echtzeit“-Prioritätsklasse hat wiederum 7 Stufen innerhalb der Klasse. RTX64 verwendet ein flaches Prioritätsschema mit 127 Prioritätsstufen.

Unterstützt RTX64 Priority Promotion?

RTX64 bietet die Möglichkeit, eines von zwei Prioritätsinversionsprotokollen einzustellen, um Fälle zu behandeln, in denen ein Thread mit höherer Priorität auf ein Mutex wartet, das von einem Thread mit niedrigerer Priorität gehalten wird:

  • Priority Promotion with Tiered Demotion hebt einen Thread mit niedriger Priorität auf das Niveau des Threads mit der höchsten Priorität, der auf das gemeinsame Mutex wartet, bis dieser das von einem Thread mit höherer Priorität angeforderte Mutex freigegeben hat.
  • Deaktivieren – Erhöht die Prioritäten nicht in Fällen, in denen ein Thread mit höherer Priorität auf ein Mutex wartet, das von einem Thread mit niedriger Priorität gehalten wird.

Wie stellt RTX64 sicher, dass Windows keine Echtzeit-Interrupts ausblendet?

RTX64 enthält eine echtzeitfähige Hardware Abstraction Layer-(HAL-)Erweiterung; diese Erweiterung ersetzt nicht die bestehende Windows HAL. Die Erweiterung erhält die Interrupt-Isolation zwischen RTSS und Windows aufrecht. Windows kann die von RTSS verwalteten Interrupts nicht maskieren (auf der Ebene des Interrupt-Controllers). Windows-Interrupts werden auf RTSS-Prozessoren/Kernen maskiert. Die Echtzeit-HAL-Erweiterung unterstützt hochauflösende Taktgeber und Timer für RTSS, während sie auch nicht-echtzeitfähige Taktgeber und Timer für Windows unterstützt. Zu den weiteren Funktionen der Echtzeit-HAL-Erweiterung gehören ein Software-Interrupt-Mechanismus zwischen RTSS und Windows, ein grundlegendes Exception-Management und Erweiterungen für den Determinismus. Die HAL-Timer-Werte können über eine vordefinierte Wertetabelle auf bis zu 1 µs geändert oder über das SDK mit einem eigenen Wert versehen werden.

Wie geht RTX64 mit der gemeinsamen Nutzung von Cache und Speicherbus mit Windows um?

RTX64 unterstützt die Intel® Resource Director Technology (RDT), die eine Reihe von Ressourcenzuweisungs-(oder Steuerungs-) Funktionen bietet, welche die Kontrolle darüber ermöglichen, wie gemeinsam genutzte Ressourcen wie der Last-Level-Cache (LLC) und die Speicherbandbreite von Anwendungen genutzt werden. Zu diesen Funktionen gehören Cache Allocation Technology (CAT) und Memory Bandwidth Allocation (MBA).

Als primäres Setup für Intel® RDT trennt RTX64 den L3/L2-Cachespeicherplatz zwischen Windows-Cores und RTSS-Cores, wodurch die Cache-Konkurrenz von Windows oder anderen Systemaktivitäten beseitigt wird. RTX64 setzt Windows-Cores mit maximalem Memory Throttle und RTSS-Cores mit Zero Memory Throttle. Um die Leistung zwischen den parallel laufenden RTSS-Threads weiter zu differenzieren, führt RTX64 zwei RDT-Modi für CAT und MBA ein: Flat-Performance-Modus und Prioritäts-basierter CLOS-Performance-Modus.

Weitere Informationen finden Sie in der RTX64-Hilfe.

Was ist mit den Windows "Stop Conditions"?

Windows STOPs, oder Bug Checks, sind das Ergebnis von Kernel-Level-Treibern oder Betriebssystem-Komponenten, die Sicherheitsprüfungen nicht bestehen und Windows zu einem kontrollierten Halt bringen. Diese Windows-STOPs sollen die Datenbeschädigung auf ein Minimum beschränken und den Entwicklern helfen, herauszufinden, was falsch gelaufen ist.

Da der RTSS in der Lage ist, weiterzulaufen, nachdem Windows einen STOP ausgegeben hat, können Entwickler eine sichere Shutdown-Behandlung in RTSS-Anwendungen einbauen. RTX64 ruft die Shutdown-Handler auf, wenn Windows einen STOP ausgibt, so dass die Echtzeitkomponenten des Systems sicher heruntergefahren werden können. Sobald alle Shutdown Handler beendet sind, lässt RTX64 den Windows Shutdown-Prozess weiterlaufen.

Wenn das RTSS feststellt, dass Windows heruntergefahren werden muss, gibt RTX64 einen STOP aus, aber anstatt den traditionellen Windows Blue Screen anzuzeigen, zeigt RTX64 den RTX64 Green Screen an, der Informationen über den Zustand von RTX64 zum Zeitpunkt des STOP enthält.

Beim Absturz von Windows werden keine Zustände gespeichert.

Häufig gestellte Fragen (FAQs) über RTX

Die Informationen in diesem Abschnitt sind bis RTX 2016 mit Update 3 auf dem letzten Stand.

Was ist Echtzeit?

Echtzeit beschreibt eine Anwendung, die innerhalb eines kurzen, nach oben begrenzten Zeitrahmens eine Antwort auf ein Ereignis erfordert. Normalerweise liegen die Antwortzeiten im Zeitbereich von Millisekunden oder Mikrosekunden.

Was ist der Unterschied zwischen "harter" und "weicher"Echtzeit?

Harte Echtzeit erfordert, dass eine Antwort logisch korrekt ist und vor einer bestimmten Ablauffrist eintritt, sonst ist das Ergebnis falsch und hat keinen Wert.

Weiche Echtzeit erfordert, dass eine Antwort logisch korrekt ist und vor einer bestimmten Deadline erfolgt oder das Ergebnis wird zunehmend ungenau, d. h. das Ergebnis kann noch einen gewissen Wert haben, obwohl es nach der erforderlichen Zeitspanne erfolgt ist.

Was bedeutet Determinismus in einer Echtzeitumgebung?

Determinismus ist definiert als die Fähigkeit, rational und mit einem gewissen Grad an Präzision vorherzusagen, wann ein Ereignis eintreten wird. Determinismus, kombiniert mit einer Echtzeitumgebung, garantiert, dass ein Ereignis innerhalb einer kleinen Reaktionszeit eintritt und dass die Durchführung dieses Ereignisses wiederholbar ist.

Was ist ein Echtzeit-Betriebssystem oder RTOS?

Ein Echtzeitbetriebssystem bietet Determinismus und Vorhersagbarkeit, wenn es durch einen spezialisierten Scheduler auf ein bestimmtes Ereignis reagiert.

Ist Microsoft® Windows® ein Echtzeit-Betriebssystem?

Windows wird üblicherweise als Allzweck-Betriebssystem bezeichnet, da es Anwendungen oder Treibern auf Kernel-Ebene nicht erlaubt, Interrupts vollständig zu verbergen und die Kontrolle über das Betriebssystem zu übernehmen. Je nach Hardware können die Interrupt-Latenzen unter Windows sehr gute Werte aufweisen, die im Durchschnitt im Mikrosekundenbereich liegen. Im schlimmsten Fall sind die Interrupt-Latenzen jedoch unbegrenzt und können Hunderte von Millisekunden überschreiten. Aufgrund dieser ungebundenen Latenzen ist eine deterministische Reaktionszeit nicht gewährleistet, was die Standard-Windows-Desktop- und -Server-Betriebssysteme für den Echtzeiteinsatz inakzeptabel macht.

Was ist RTX?

IntervalZero’s RTX64-Software wandelt Microsoft Windows in ein Echtzeit-Betriebssystem (RTOS) um.

Für Projekte, die ein Windows-Benutzererlebnis verlangen und harte Echtzeit oder Determinismus erfordern, ermöglicht die RTX64 RTOS-Plattform OEMs und Endanwendern die Nutzung von Windows, x86-Multicore-Multiprozessortechnologie, symmetrischem Multiprocessing (SMP) und Echtzeit-Ethernet – alles in einer einzigen integrierten Entwicklungsumgebung.

  • Verringerung der Materialkosten (BOM) um 25-50%
  • Steigerung von Qualität und Leistung
  • Rasche Skalierung und verkürzte Produktzyklenzeit
  • Signifikante Reduzierung der Abhängigkeit von proprietärer Hardware wie DSPs

RTX von IntervalZero ist eine bewährte, zuverlässige Technologie, die Sicherheitsintegritätslevel 3 – (SIL-3-)Zertifizierungen in der Industrieautomatisierung und FDA Class II-Zertifizierungen bei zahlreichen Herstellern von medizinischen Geräten erreicht hat.

Was ist SMP?

RTX unterstützt symmetrische Multiprozessorsysteme (SMP); eine Computerarchitektur, die es ermöglicht, Betriebssystem-Tasks und Benutzer-Threads so zu planen, dass sie auf jedem verfügbaren Prozessor ausgeführt werden können. Mit diesem Modell können mehrere Prozessoren für Echtzeitaktivitäten konfiguriert werden. RTSS-Threads können zur Ausführung auf dedizierten RTSS-Prozessoren zugewiesen werden, und sie können gleichzeitig laufen.

Wenn Sie RTX auf einem SMP-fähigen System betreiben, dann bestimmen Sie, wie viele der Prozessoren für Windows und wie viele für das RTX Echtzeit-Subsystem (RTSS) vorgesehen sind. RTX unterstützt SMP-Systeme, die bis zu 32 Prozessoren haben. Von diesen 32 können maximal 4 für Windows und bis zu 31 für RTX reserviert werden (abhängig von der lizenzierten Edition).

RTX

Wie erweitert RTX Windows, damit “harte"Echtzeit geboten wird?

Das Gesamtdesign von RTX stellt Entwicklern das „Beste aus beiden Welten“ zur Verfügung, indem es die Möglichkeit bietet, alle von Windows bereitgestellten Funktionen und Technologien zu nutzen, zusätzlich zum „harten“ Echtzeitverhalten innerhalb eines isolierten und kontrollierten Subsystems. RTX beinhaltet eine echtzeitfähige Hardware Abstraction Layer-(HAL-)Erweiterung. RTX ersetzt nicht die bestehende Windows-HAL. Diese Erweiterung erhält die Interrupt-Isolation zwischen RTSS und Windows aufrecht, während sie gleichzeitig die Interrupt-Kommunikation (IPI) zwischen den beiden Systemen ermöglicht. In einer gemeinsam genutzten Umgebung stellt die HAL ein Echtzeit-Subsystem zur Verfügung, das einen eigenen Scheduler enthält, mit dem alle RTSS-Anwendungen vor allen Windows-Anwendungen oder Windows-Betriebssystemfunktionen priorisiert werden können. In einer dedizierten Umgebung plant das Echtzeit-Subsystem seine RTSS-Tasks für die Ausführung auf separaten Prozessoren, ohne Beeinträchtigung durch das Windows-Betriebssystem oder Windows-Prozesse.

Was sind die Vorteile von RTX?

Die RTX Runtime ermöglicht eine universelle Windows-Verarbeitung und eine leistungsstarke Echtzeitverarbeitung und -steuerung auf handelsüblichen (COTS-)Maschinen. Die RTX Runtime kann so konfiguriert werden, dass sie an Windows-Minidumps teilnimmt oder die Kontrolle übernimmt und Echtzeitprozesse sicher herunterfährt, wenn Windows einen Fehler feststellt.

Das RTX SDK bietet Entwicklern ein umfangreiches Set an Interprozess-Kommunikations- und Synchronisationsfunktionen, die es RTSS-Anwendungen ermöglichen, mit Windows-Anwendungen zu kommunizieren und Daten mit ihnen auszutauschen. Darüber hinaus erhalten RTX64-Entwickler die Möglichkeit, direkt auf den Adressraum des I/O-Ports, den physischen Speicher oder die Hardware zuzugreifen, ohne dem Anwender ein Treibermodell aufzuzwingen.

Welche Vorteile hat der Einsatz von RTX auf einem SMP-System?

Die Verwendung von RTX auf einem SMP-System bietet erhebliche Vorteile, darunter:

  • Leistungssteigerung – Sie können mehrere Prozessoren für kritische Echtzeitaufgaben bereitstellen. Sie können bis zu 31 Echtzeit-Threads auf einem 32-Prozessor-System gleichzeitig ausführen.
  • Skalierung der Leistung – Für die Leistungsskalierung ist kein Neuschreiben von Code erforderlich. Sie können das Gleichgewicht zwischen Echtzeit- und Nicht-Echtzeit-Leistung anpassen, indem Sie die Anzahl der RTSS-Prozessoren und Windows-Prozessoren ändern.
  • Hohe Verfügbarkeit – Kritische Tasks können für die Ausführung auf mehr als einem RTSS-Prozessor geplant werden.
  • IRQ-Affinität – Sie können einen dedizierten RTSS-Prozessor für die Verarbeitung der Ein- und Ausgabe einzelner Hardwareteile festlegen.
  • Behandlung von Systemfehlern – Echtzeit-Tasks überleben Systemabstürze

Kann dieselbe Anwendung auf jeder Edition von RTX laufen?

Die Runtime ist in mehreren Editionen erhältlich, so dass Sie so viele Prozessoren lizenzieren können, wie für Ihre Lösung erforderlich sind. Die Editionen des Produkts RTX sind:

Die Edition… enthält Unterstützung für Echtzeitoperationen auf…
Solo einem dedizierten RTSS-Prozessor in einer Multicore-/Multiprozessor-Umgebung
Entry bis zu zwei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Basic bis zu drei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Professional bis zu sieben dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Premium bis zu 15 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Ultimate bis zu 31 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung

Alle Editionen der Runtime enthalten die gleichen Funktionen. Anwendungen, die mit dem SDK erstellt werden, können auf jeder Edition mit der gleichen Version von RTX64 ausgeführt werden. Dies gibt Entwicklern die Freiheit, Anwendungen zu entwickeln, die skalierbar sein können.

Wie lange gibt es RTX schon?

Das Produkt RTX wurde 1995 auf den Markt gebracht, um ein Echtzeit-Subsystem für Windows NT bereitzustellen. RTX hat sich kontinuierlich weiterentwickelt und bietet Echtzeitunterstützung für alle professionellen Betriebssysteme von Microsoft. RTX 2016 unterstützt Multiprozessoren mit 32-Bit-Windows 7 und Windows Embedded Standard 7.

Welche Version von RTX ist derzeit aktuell?

Die derzeitige Version von RTX ist RTX 2016 with Update 3, freigegeben im Jahre 2019.

Welche Branchen oder Produkte setzen RTX normalerweise ein?

RTX wird in einer Vielzahl von Produkten und vertikalen Märkten eingesetzt. Jeder, der eine Anwendung entwickelt, die Systemsteuerung, Determinismus oder Echtzeitleistung unter Windows erfordert, kann von der Einbeziehung von RTX in sein Produktdesign profitieren.

RTX wird in einigen der folgenden Märkte eingesetzt:

  • Industrielle Automatisierung
  • Digital Audio
  • Test & Messtechnik
  • Medizintechnik
  • Wehrtechnik Luft- und Raumfahrt

Wie wird RTX konfektioniert?

IntervalZero bietet sechs Editionen des RTX 2016 Runtime-Produkts an:

Die Edition… enthält Unterstützung für Echtzeitoperationen auf…
Solo einem dedizierten RTSS-Prozessor in einer Multicore-/Multiprozessor-Umgebung
Entry bis zu zwei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Basic bis zu drei dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Professional bis zu sieben dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Premium bis zu 15 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung
Ultimate Bis zu 31 dedizierten RTSS-Prozessoren in einer Multicore-/Multiprozessor-Umgebung

Kann ich die Installation von RTX in mein Produkt einbinden?

Die Installationen von RTX 2016 Runtime gibt es in mehreren Varianten:

  • RTX Install – RTX 2016 kann unbeaufsichtigt (silent) installiert werden. Die Installation kann von der Kommandozeile aus aufgerufen oder innerhalb Ihrer eigenen Produktinstallation verwendet werden, um keine Benutzerinteraktion während des Installationsvorgangs zu erfordern. Der RTX Installer kann dem Windows Embedded Standard 7 Image Configuration Editor (ICE) auch als Distribution Share-Komponente hinzugefügt werden. Die unbeaufsichtigte Installation wird über eine OEM/Site-Lizenz lizenziert und ist auch als Evaluierungsversion erhältlich.
  • Merge Modules für RTX-Laufzeitfunktionen – Die RTX 2016-Komponenten sind als Merge Modules verfügbar, die in die Installation eines OEM-Produkts aufgenommen werden können und über eine OEM/Site-Lizenz lizenziert werden. Bei einer separaten Installation werden die Merge Modules auf dem System für Ihre Verwendung platziert. Die Merge-Modules sind auch als Evaluierungsversion verfügbar.

Weitere Informationen finden Sie im RTX Deployment Guide.

Was gehört zum Lieferumfang der RTX Runtime?

Die RTX Runtime wird mit den folgenden Funktionalitäten ausgeliefert:

  • Erweiterung der Windows-HAL zur Unterstützung der Echtzeitsteuerung und Isolierung von Interrupts
  • Scheduler, der alle RTSS-Threads vor den Windows-Threads in einer gemeinsam genutzten Konfiguration oder über mehrere Kerne in einer dedizierten Konfiguration plant
  • Unterstützung für die Kommunikation zwischen Windows-Anwendungen und RTSS-Anwendungen
  • Unterstützung für die Kommunikation zwischen Windows-Kernel-Treibern und RTSS-Anwendungen
  • Netzwerkunterstützung für die Socket-Level-Kommunikation zu und von RTSS-Prozessen
  • Ein Bedienfeld, mit dem Sie das RTX-Subsystem konfigurieren können
  • Die Möglichkeit, die Ausgabe von RTSS-Prozessen in einem Konsolenfenster anzuzeigen
  • Befehlszeilen-Dienstprogramme zur Steuerung des Starts und Stopps von RTSS-Anwendungen
  • Nützliche Werkzeuge zur Anzeige von Objekten und zur Durchführung von Anwendungsprofilen
  • Umfassende Hilfedateien und Benutzerhandbücher

Welchen Lieferumfang hat das RTX SDK?

Das RTX SDK umfasst die RTX Runtime-Umgebung sowie die folgenden Komponenten:

  • Header-Dateien und -Bibliotheken
  • Unterstützung von Visual Studio
  • Unterstützte Versionen:
    • Visual Studio 2015
    • Visual Studio 2013
  • Unterstützung von Microsoft C Runtime
  • Wizards
  • Echtzeit-Debugger
  • Debugger Datenerweiterung für Microsoft WinDbg
  • Umfassende Hilfedateien und MiniTutorials
  • Sourcecode-Muster, die fortschrittlichere Entwicklungsthemen erklären helfen

Wie aktiviere ich meine Kopie von RTX?

RTX-Komponenten müssen mit einer gültigen Lizenz aktiviert werden, bevor sie verwendet werden können. Sie können das RTX-Aktivierungs- und Konfigurationsprogramm, das unmittelbar nach der Programminstallation erscheint, verwenden, um Ihr Produkt zu aktivieren und an einen bestimmten Rechner oder an einen von IntervalZero bereitgestellten kompakten Dongle zu binden. Informationen zur Erstaktivierung finden Sie in dem RTX Install Guide für Ihr Produkt oder im RTX Deployment Guide.

Die Methode, mit der Sie Ihre Kopie von RTX aktivieren, hängt davon ab, ob Sie mit dem Internet verbunden sind. Es sind Videos verfügbar, die den Prozess der Aktivierung mit und ohne Internetverbindung zeigen. Sie können die Videos unter http://www.intervalzero.com/rtx-product-activation/ ansehen.

Gibt es bestimmte Anforderungen an Hardware oder Plattform für RTX?

Die RTX Runtime läuft auf jeder handelsüblichen (COTS-)Plattform, die Windows unterstützt. RTX unterstützt Mobilprozessor-, Multiprozessor- und Multicore-Plattformen. Da jedoch nicht alle Systeme gleich sind, müssen Entwickler die Latenzen jeder Plattform, die sie wählen, evaluieren, um sicherzustellen, dass die Plattform ihre Echtzeit- oder Steuerungsanforderungen unterstützen kann. Sie können RTX mit Hyper-Threaded-Systemen verwenden, aber es wird empfohlen, die RTX-Leistung zu evaluieren, um sicherzustellen, dass die Echtzeitanforderungen erfüllt werden, wenn Hyper-Threading aktiviert ist.

Unterstützt RTX Prozessor-Cluster?

RTX kann auf Systemen mit bis zu 32 Prozessoren ausgeführt werden.

  • Systeme mit acht oder weniger Prozessoren, die nicht über hardwareerzwungenes Prozessor-Clustering verfügen, können mit einem bis sieben Prozessoren, die Windows zugewiesen sind, und den restlichen für RTX ausgeführt werden.
  • Systeme mit mehr als acht Prozessoren (aber nicht mehr als 32) oder Systeme mit acht oder weniger Prozessoren, die über hardwareerzwungene Prozessorcluster verfügen, können nur im Modus „Dedicated (Cluster)“ ausgeführt werden. Auf diesen Systemen können maximal vier Prozessoren Windows und bis zu 31 Prozessoren RTX zugewiesen werden.

Sie können verfügbare Prozessoren über das RTX64-Aktivierungs- und Konfigurationsprogramm Windows oder RTX64 zuweisen. Das RTX64-Aktivierungsprogramm erkennt automatisch die Gesamtzahl der Prozessoren auf Ihrem System. Weitere Informationen finden Sie unter dem Thema Konfigurieren Ihres Systems in der RTX-Hilfe.

Kann RTX auf einem mobilen Prozessorsystem verwendet werden?

RTX kann auf Systemen mit mobilen Prozessoren verwendet werden. Da mobile Prozessoren jedoch die Intel´s SpeedStep®-Technologie verwenden, um die Prozessorgeschwindigkeit während der Windows-Leerlaufzeit zu senken und somit Energie zu sparen, kann es zu langen Latenzen kommen, wenn der Prozessor während der Geschwindigkeitsänderung nicht mehr verfügbar ist. RTX kann diese möglichen Latenzen vermeiden, wenn es keine Änderung der Prozessorgeschwindigkeit erlaubt.

Unterstützt RTX Hyper-Threading?

RTX kann auf Hyper-Threading-Systemen verwendet werden. RTX behandelt den von Intel Hyper-Threading erstellten logischen Prozessor als separaten Prozessor, sodass Sie RTX entweder für die gemeinsame oder die dedizierte Multiprozessorunterstützung konfigurieren können. Da sich beide logischen Prozessoren denselben physischen Prozessor teilen, kann ein logischer Prozessor die Leistung des anderen beeinträchtigen. Es wird empfohlen, die RTX-Leistung zu evaluieren, um sicherzustellen, dass bei aktiviertem Hyper-Threading Ihre Echtzeitanforderungen weiterhin erfüllt werden.

Unterstützt RTX die physikalische Adress-Erweiterung (PAE)?

RTX unterstützt PAE für alle Versionen von Windows, die PAE unterstützen. Vor RTX 2009 SP1 wurde PAE nur auf gemeinsam genutzten Konfigurationen unterstützt. Da RTX sich auf Windows verlässt, um das Speicher-Paging zu verwalten (die Übersetzung von der virtuellen Adresse zur physischen Adresse), kann RTX nicht auf die physischen Speicherbereiche zugreifen, für die Windows keine Page-Table-Einträge hat. Um 64-Bit-Windows zu forcieren, begrenzt 32-Bit-Windows den physischen Hauptspeicherbereich auf bis zu 4 GB, auch wenn das System mit aktiviertem PAE gebootet wird.

Weitere Informationen finden Sie in dem Microsoft-Artikel zu PAE unter http://technet.microsoft.com/en-us/library/cc736309.

Unterstützt RTX die Verhinderung der Datenausführung (DEP)?

Ja. Data Execution Prevention (DEP) wird unterstützt.

Verfügt RTX über irgendwelche Tools, die bestimmen helfen, welche Plattform sich am besten für meine Echtzeitanforderungen eignet?

Das RTX SDK enthält ein Tool mit der Bezeichnung Platform Evaluator, mit dessen Hilfe Sie eine Reihe von Latenz-Messungen durchführen und bestimmen können, wie gut Plattformen Ihren Anforderungen an Echtzeit und Steuerung entsprechen.

Was wird für die Bereitstellung der Anwendung benötigt?

Um Ihre RTSS-Anwendung in Betrieb zu nehmen, müssen Sie für jedes System, auf dem die Anwendung laufen soll, eine RTX-Runtime-Lizenz erwerben. Es sind mehrere Editionen der RTX-Runtime verfügbar, so dass Sie nur die Anzahl von Prozessoren lizenzieren müssen, die für Ihre Lösung erforderlich sind. Weitere Informationen zum Einsatz von RTX finden Sie im RTX Deployment Guide.

Kann ich die RTX-Runtime-Installation aus einer anderen Installation heraus ausführen?

IntervalZero bietet die Option einer unbeaufsichtigten (silent) Kommandozeileninstallation für RTX, die es einem OEM ermöglicht, die RTX-Installation zu verbergen und innerhalb einer anderen Installation auszuführen. Die RTX 2016 Runtime-Komponenten sind auch als Merge Modules verfügbar, die in die Installation eines OEM-Produkts eingebunden werden können. Zudem sind Evaluierungsversionen verfügbar.

Wie konfiguriere ich das Echtzeit-Subsystem meines Kunden?

IntervalZero bietet eine Eigenschaften-API, die zur programmatischen Konfiguration des RTX-Subsystems verwendet werden kann. Dies ermöglicht es Kunden, die Anforderungen ihrer Software an das Subsystem einzurichten, ohne dass ihre Endbenutzer etwas dafür tun müssen.

Wie kann ich zum Debugging der Probleme meiner Kunden beitragen?

In Visual Studio bietet RTX Remote-Debugging-Funktionen für RTSS-Anwendungen mit Visual Studio 2015 und Visual Studio 2013.

RTX bietet zudem eine hervorragende Flexibilität bei der Verarbeitung von Ausnahmen. Sie können RTX so konfigurieren, dass es Ausnahmen mit einem strukturierten Exception-Handler behandelt, einen Debug-Break generiert oder den Prozess anhält und den Speicher ausgibt.

Eine Tracing-API ermöglicht es Entwicklern, benutzerdefinierte Trace-Ereignisse zu erstellen, die in Subsystem-Traces aufgenommen werden können, um Problembereiche zu lokalisieren.

RTX kann so konfiguriert werden, dass Informationen über aktive RTSS-Prozesse der Windows-Minidump-Datei hinzugefügt werden, die dann mit Microsoft WinDbg analysiert werden kann. Die RTX-Debugger-Datenerweiterung für WinDbg hilft Ihnen, den Zustand des RTSS und aller aktiven RTSS-Prozesse zum Zeitpunkt des Absturzes zu ermitteln, entweder mit Live-Kernel-Debugging oder anhand eines vollständigen Kernel-Dumps des Kundensystems.

Kann ich die den Endanwendern zur Verfügung stehende Funktionalität begrenzen?

Ja. Nach erfolgreicher Installation von RTX können alle authentifizierten Benutzer, die sich im System anmelden, das RTX-Subsystem und die RTSS-Anwendungen steuern, konfigurieren und ausführen, auch wenn sie keine Computer- oder Domänen-Administratoren sind. Systemadministratoren können den Zugriff auf die RTX-Ressourcen steuern, indem sie Mitglieder der Gruppen RTXAdministrators und RTXUsers konfigurieren. Weitere Informationen finden Sie im RTX Install Guide.

Wie verkürzt RTX die Entwicklungszeit?

Da RTX Windows erweitert, ist es nicht erforderlich, Zeit mit dem Entwurf und der Entwicklung eines Betriebssystems zu verbringen, bevor die Anwendungsentwicklung überhaupt beginnt. RTX-Entwickler können Benutzeroberflächen und Anwendungen erstellen, die die gesamte Funktionalität von Windows nutzen; Entwickler müssen sich nur auf die Echtzeitsteuerungselemente konzentrieren, die für die Ausführung einer RTSS-Anwendung erforderlich sind. Selbst Komponenten, die eine Echtzeitsteuerung erfordern, können zunächst als Windows-Anwendung entwickelt und dann ohne Codeänderungen als RTSS-Anwendung neu kompiliert werden.

Da alle Echtzeit-API-Aufrufe (RTAPI) Win32-konform sind, verwenden Entwickler Aufrufe, die sie bereits kennen und verstehen. Es besteht keine Notwendigkeit, Treibercode zu schreiben oder einem strengen Treibermodell zu folgen, um Geräte zu konfigurieren und zu verwenden.

Ist RTX 2016 mit früher gebauten RTSS-Anwendungen kompatibel?

RTX 2016 ist binär-kompatibel mit RTX 2012 mit Update 1 und danach.

Brauche ich spezielle Entwicklungs- und Debugging-Tools zur Entwicklung von RTSS-Anwendungen?

Nein. RTSS-Anwendungen werden mit Microsoft Visual Studio entwickelt. Das RTX-SDK bietet Assistenten zur einfachen Projekterstellung und Vorlagen, die Ihnen den Einstieg erleichtern. Mit einem Visual Studio Debugger-Add-in können Sie RTSS-Anwendungen in einer vertrauten Umgebung debuggen. RTX unterstützt Visual Studio 2015 und Visual Studio 2013.

Da RTSS-Anwendungen im Kernel-Modus laufen, können sie auch mit einem Kernel-Level-Debugger wie Microsoft WinDbg debuggt werden. Das RTX-SDK enthält eine RTX-Debugger-Datenerweiterung für WinDbg, mit der Sie aktive RTSS-Prozesse und Objekte anzeigen können.

Kann ich Win32 API-Aufrufe verwenden, oder sind alle RTX-Calls proprietär?

RTX unterstützt eine Teilmenge von über 50 Win32-API-Aufrufen, die in einer Echtzeitumgebung sinnvoll sind.

Darüber hinaus bietet RTX eine große Auswahl an Echtzeit-API-Aufrufen, die Entwickler für den Zugriff auf das RTSS und die Systemressourcen verwenden. Diese Echtzeit-API (RTAPI) setzt sich aus einer Reihe von eindeutigen API-Aufrufen und Win32-basierten API-Aufrufen zusammen.

Die eindeutigen Echtzeit-API-Aufrufe sind Win32-modellierte Aufrufe, die wesentliche, für Echtzeitanwendungen erforderliche Programmierfunktionen sowie den Zugriff auf das RTSS und die Systemressourcen bereitstellen. Diese eindeutigen RTAPI-Aufrufe haben keine entsprechenden Win32-Aufrufe.

Die Win32-basierten API-Aufrufe, die von RTX unterstützt werden, unterscheiden sich von der RTAPI dadurch, dass es in der Win32-Umgebung ähnliche Funktionen gibt; diese Aufrufe erfordern jedoch eine andere Implementierung als ihre Win32-Gegenstücke, um die Echtzeitanforderungen des RTSS zu unterstützen. Alle Win32-basierten Aufrufe sind mit der Semantik der Win32-Programmierschnittstelle kompatibel, was es für Entwickler, die bereits mit der Windows-Win32-API vertraut sind, einfach macht.

Wie kann ich während der Entwicklung die Vorteile des Benutzermodus-Speicherschutzes nutzen?

RTX wurde so konzipiert, dass Entwickler Anwendungen als RTSS- oder Win32-Anwendungen entwerfen und entwickeln können. Wenn sie als Win32-Anwendung entwickelt werden, können Entwickler Funktionen wie den Benutzermodus-Speicherschutz und andere Debugging-Tools von Drittanbietern nutzen, die speziell für Benutzermodus-Anwendungen geeignet sind. Nachdem eine Anwendung wie gewünscht funktioniert, können Sie sie als RTSS-Anwendung neu kompilieren, die im Kernel-Modus läuft, ohne dass Codeänderungen erforderlich sind.

Unterstützt RTX die strukturierte Ausnahmebehandlung?

Im Gegensatz zu anderen Anwendungen, die im Kernel-Modus laufen, unterstützen RTSS-Anwendungen Structured Exception Handling. Mit RTX können Entwickler strukturierte Ausnahmebehandlungsfunktionen wie Try, Catch und Throw innerhalb ihrer RTSS-Anwendung aufrufen. Wenn eine Anwendung beispielsweise einen NULL-Zeiger referenziert, kann die Anwendung den Fehler behandeln, indem sie die Anwendung, die den Fehler verursacht hat, beendet oder einfriert, ohne das System herunterzufahren.

Kann ich die Microsoft-Entwicklungsbibliotheken und -Technologien wie z. B. C Runtime in meinen RTX-Anwendungen verwenden?

RTX unterstützt eine Teilmenge von Microsoft C Runtime-Aufrufen, die Sie von Ihrer RTSS-Anwendung aus aufrufen können. RTX bietet C Runtime-Unterstützung für Visual Studio 2015 und Visual Studio 2013.

Kann ich einer einzelnen NIC mehrere IP-Adressen zuweisen?

RTX 8.1 und höher unterstützen „virtuelle“ IPv4-Adressen. Sie können einer einzelnen NIC bis zu 32 virtuelle IP-Adressen zuweisen.

Unterstützt RTX SSE und AVX?

Ja. RTX unterstützt und speichert Statusinformationen für AVX/AVX2 (YMM/YMM8), SSE (SSE/SSE2/SSE3/SSE4) und MMX-Register, solange die Hardware dies unterstützt.

Muss ich zum Debuggen meiner RTSS-Anwendung einen Kernel-Debugger verwenden?

Ein Kernel-Debugger ist zum Debuggen einer RTSS-Anwendung nicht erforderlich. Das RTX-SDK enthält Visual Studio-Debugger-Add-ins, mit denen Entwickler Echtzeit- oder Steuerungsanwendungen, die im Kernel-Modus ausgeführt werden, innerhalb der vertrauten Visual Studio-Entwicklungsumgebung debuggen können. Die Debugger-Add-ins für Visual Studio 2015 und Visual Studio 2013 unterstützen auch Remote-Debugging, sodass Entwickler eine RTSS-Anwendung auf einem Zielsystem mit speziellen Hardwareanforderungen remote debuggen können.

Wenn Sie jedoch die Verwendung von WinDbg von Microsoft bevorzugen, bietet das RTX-SDK Symbole, die beim Debuggen Ihrer RTSS-Anwendung helfen, zusammen mit einer Debugger-Datenerweiterung, mit der Benutzer Informationen über aktive RTSS-Prozesse, Threads und Objekte anzeigen können. Beachten Sie, dass WinDbg nicht auf dedizierten Konfigurationen verwendet werden kann, um in den Code einzubrechen und ihn schrittweise zu durchsuchen.

Sind irgendwelche Tracing-Tools verfügbar?

Das RTX SDK bietet ein Tool namens TimeView, mit dem Sie einen System-Trace einrichten können. Diese System-Traces setzen Zeitstempel und protokollieren einen konfigurierbaren Satz von System- und Prozessereignissen, so dass Entwickler das Verhalten ihrer Echtzeitanwendung mit minimalen Auswirkungen auf die Echtzeitleistung ihres Systems verfolgen können. Die RTAPI bietet auch Instrument Tracing-Funktionalität innerhalb der RTSS-Anwendung.

Stellt RTX einen Beispielcode zur Verfügung?

Das RTX SDK enthält ein vollständiges API-Referenzhandbuch für alle unterstützten Funktionen sowie kleine Codesegmente, die komplexere Konzepte erläutern.

Das RTX SDK bietet auch Quellcode für eine Reihe von Beispielanwendungen, darunter die RTX-Messwerkzeuge. Diese Beispiele können kompiliert und ausgeführt werden und zeigen wichtige Konzepte und Anwendungsinteraktionen.

Stehen irgendwelche Messwerkzeuge zur Verfügung?

RTX bietet eine Reihe von Tools und APIs, die Entwicklern bei der Messung von Systemreaktions- und Timer-Latenzzeiten helfen:

  • SRTM (System Response Timer Measurement) – Ene Befehlszeilenanwendung, die Timer-Latenzen misst und die Ergebnisse in Berichten und Histogrammen anzeigt.
  • KSRTM (Kernel System Response Timer Measurement) – Ein Treiber und ein Win32-Dienstprogramm, das Timer-Latenzen auf HAL-Ebene misst und die Ergebnisse in Berichten und Histogrammen anzeigt.
  • RTX Demo – Eine grafische Version von SRTM, die Timer-Latenzen anzeigt.
  • PerformanceView – Ein grafisches Dienstprogramm, das die CPU-Auslastung durch Echtzeitanwendungen, Windows-Prozesse und die Leerlaufzeit des Systems anzeigt. PerformanceView zeigt auch die maximale Zeit an, in der RTX die CPU auf gemeinsam genutzten Systemen gehalten hat.
  • ObjectViewer – Ein grafisches Dienstprogramm, das Informationen für alle aktiven Objekte in der RTSS-Umgebung anzeigt, einschließlich Datum/Uhrzeit und Dauer der Thread-Erstellung.
  • Mehrere APIs für die Profilerstellung über Prozessoren hinweg, darunter die folgenden:
    • RtGetThreadTimes ruft die Ausführungszeit eines bestimmten Threads ab.
    • QueryPerformanceCounter und QueryPerformanceFrequency ermöglichen eine genaue Zeitverfolgung zwischen mehreren Prozessoren.

Ist die Anzahl der Threads oder Objekte begrenzt, die in RTX geschaffen werden können?

Die Erstellung von Threads und Objekten umfasst die Zuweisung mehrerer kleiner RTSS-Strukturen zusätzlich zu dem anfänglich für den Thread-Stack zugewiesenen Platz. Es gibt keine Subsystembegrenzungen für die Anzahl der Threads. Die einzige Begrenzung ist die Menge des verfügbaren nicht ausgelagerten Speichers.

Kann meine Echtzeitanwendung mit einer "normalen" Windows-Anwendung kommunizieren?

RTX ermöglicht die Kommunikation zwischen Windows- und RTSS-Anwendungen über eine Reihe von Inter-Process Communication-(IPC-)Objekten. Verwenden Sie die RTAPI-Funktionen, um Objekte zu erstellen, die von Windows-Prozessen eingesehen und verwendet werden können. Ähnlich wie bei der Inter-Prozess-Kommunikation unter Windows erstellen oder öffnen RTSS- und Windows-Anwendungen Handles zu benannten Objekten oder Speicherbereichen und ermöglichen so eine einfache und standardmäßige Kommunikation und Synchronisation zwischen Echtzeit-(RTSS-) und Nicht-Echtzeit-(Windows-)Anwendungen. Gemeinsame Speicherregionen ermöglichen es Windows- und RTSS-Anwendungen, denselben physischen Speicher zu sehen, ohne dass zusätzliche Nachrichten oder Daten zwischen den Umgebungen übergeben werden müssen.

Standardobjekte:

  • Event – Das Ereignisobjekt ist ein Synchronisationsobjekt. Es ist nützlich, um ein Signal an einen Thread zu senden, das anzeigt, dass eine bestimmte Aktion stattgefunden hat.
  • Mutex – Das Mutex-Objekt ist ein Synchronisationsobjekt, dessen Zustand signalisiert wird, wenn es keinem Thread gehört, und nicht signalisiert wird, wenn das Mutex einem Thread gehört. Das Mutex-Objekt vermittelt den exklusiven Zugriff auf eine gemeinsam genutzte Ressource.
  • Semaphor – Das Semaphor-Objekt ist ein Synchronisationsobjekt, das einen Zähler zwischen Null und einem festgelegten Maximalwert verwaltet. Der Zähler wird jedes Mal um eins verringert, wenn ein Thread eine Wartezeit auf das Semaphor-Objekt beendet; bei der Freigabe des Semaphors wird der Zähler um einen variablen Betrag erhöht. Wenn der Zähler Null erreicht, wird der Zustand des Semaphore-Objekts nicht mehr signalisiert und kein weiterer Thread kann ein Warten auf das Semaphore-Objekt abschließen, bis ein anderer Thread den Zähler erhöht.
  • Shared Memory – Das gemeinsam genutzte Speicherobjekt ist ein Bereich des nicht ausgelagerten physischen Speichers, der in den virtuellen Adressraum eines Prozesses eingeblendet werden kann. Wenn ein Shared-Memory-Objekt einen Namen hat, können weitere Prozesse den Speicherbereich abbilden. Auf ein Shared-Memory-Objekt wird sowohl mit einem Handle als auch mit einer virtuellen Adresse zugegriffen. Damit ein Prozess seinen Zugriff auf ein gemeinsames Speicherobjekt vollständig beenden kann, muss er alle offenen Handler schließen.

Kann ein Windows-Treiber mit meiner Echtzeit-Anwendung kommunizieren?

RTX bietet eine Reihe von Echtzeit-Kernel-API-Aufrufen (RTKAPI), die es Windows-Treibern ermöglichen, aus einem Windows-Kernel-Gerätetreiber heraus auf RTX-Interprozess-Kommunikationsobjekte zuzugreifen. Diese RTKAPI-Aufrufe sind analog zu ihren RTAPI-Pendants. Zum Beispiel ist RtkOpenSemaphore analog zu RtOpenSemaphore.

Die RTKAPI-Funktionen und die RTAPI-Funktionen werden auf die gleiche Weise verwendet, aber RTKAPI-Funktionen werden ausschließlich in der Windows-Kernel-Umgebung verwendet.

Wie unterstützt RTX Plug-and-Play-Geräte?

RTX bezieht die Ressourcen, die das Gerät benötigt, vom Windows Plug and Play Manager. Um dies zu ermöglichen, muss der Treiber eines Geräts aktualisiert werden, um auf den RTX-Plug-and-Play-Stub-Treiber zu verweisen. Nachdem das Gerät durch RTX gesteuert wird, müssen die Ressourcen des Geräts aktualisiert werden, um einen eindeutigen Interrupt anzufordern, der nicht bereits von Windows verwendet wird. (Die gemeinsame Nutzung von Interrupts mit Windows würde zu einem Verlust des Determinismus führen.) Sobald das Gerät eingerichtet ist, kann jede RTSS-Anwendung auf das Gerät zugreifen und es verwenden.

Unterstützt RTX Message-basierte Interrupt-(MSI/MSI-X-)Geräte?

RTX 8.1 und höher unterstützen MSI- und MSI-X-fähige Geräte und bieten damit eine Alternative zu zeilenbasierten Interrupts. Diese Funktionalität ist auf allen RTX-unterstützten Betriebssystemen verfügbar.

Wie verhalten sich die RTX-Thread-basierten Prioritäten zu den Windows-Thread-Prioritäten?

Windows verfügt über einen Satz von 32 Prioritätsstufen, die von 0 bis 31 reichen. Sie sind weiter in 4 Prioritätsklassen definiert, von denen die „Echtzeit“-Prioritätsklasse die höchste Prioritätsklasse ist.

Die „Echtzeit“-Prioritätsklasse hat wiederum 7 Stufen innerhalb der Klasse. RTX verwendet ein flaches Prioritätsschema mit 127 Prioritätsstufen. Wenn es RTX-Tasks oder RTX-Threads gibt, die zur Ausführung bereit sind, übernimmt RTX die vollständige Kontrolle über die Systemressourcen, unabhängig davon, welche Prioritätsstufe einem Windows-Thread gewährt wird.

Alle RTX-Prioritäten sind höher als die höchsten Windows-Prioritäten.

Der einzige Fall, in dem das Windows-Prioritätsschema relativ zum RTX-Schema ist, ist, wenn eine RTX-Anwendung als Win32-Anwendung und nicht als RTSS-Anwendung kompiliert wird. In diesem Fall werden die RTX-Prioritätsstufen auf die Windows-Prioritätsstufen abgebildet. Diese Zuordnungen sind fest und so konzipiert, dass die relative Reihenfolge der Thread-Prioritäten erhalten bleibt.

Unterstützt RTX Prioritätsumkehrung?

RTX bietet die Möglichkeit, eines von drei Prioritätsinversionsprotokollen einzustellen, um Fälle zu behandeln, in denen ein Thread mit höherer Priorität auf ein Mutex wartet, das von einem Thread mit niedriger Priorität gehalten wird:

  • Priority Promotion with Tiered Demotion (Prioritäts-Promotion mit abgestufter Herabstufung) – Erhebt einen Thread mit niedriger Priorität auf die Ebene des Threads mit der höchsten Priorität, der auf das gemeinsame Mutex wartet, bis dieses den von einem Thread mit höherer Priorität angeforderten Mutex freigegeben hat.
  • Priority Promotion with Limited Demotion – Erhebt einen Thread mit niedriger Priorität auf die Ebene des Threads mit der höchsten Priorität, der auf den gemeinsam genutzten Mutex wartet, bis er alle Mutexe freigegeben hat, die er besitzt
  • Deaktivieren – Erhöht die Prioritäten nicht in Fällen, in denen ein Thread mit höherer Priorität auf einen Mutex wartet, der von einem Thread mit niedriger Priorität gehalten wird.

Wie stellt RTX sicher, dass Windows keine Echtzeit-Interrupts ausblendet?

RTX enthält eine echtzeitfähige Hardware Abstraction Layer-(HAL-)Erweiterung; diese Erweiterung ersetzt nicht die bestehende Windows HAL. Die Erweiterung erhält die Interrupt-Isolation zwischen RTSS und Windows aufrecht. Windows kann die von RTSS verwalteten Interrupts nicht maskieren (auf der Ebene des Interrupt-Controllers). Windows-Interrupts werden auf RTSS-Prozessoren/Kernen maskiert. Die Echtzeit-HAL-Erweiterung unterstützt hochauflösende Taktgeber und Timer für RTSS, während sie auch nicht-echtzeitfähige Taktgeber und Timer für Windows unterstützt. Zu den weiteren Funktionen der Echtzeit-HAL-Erweiterung gehören ein Software-Interrupt-Mechanismus zwischen RTSS und Windows, ein grundlegendes Exception-Management und Erweiterungen für den Determinismus. Die HAL-Timer-Werte können über eine vordefinierte Wertetabelle auf bis zu 1 µs geändert oder über das SDK mit einem eigenen Wert versehen werden.

Was ist mit den Windows "Stop Conditions"?

Windows STOPs, oder Bug Checks, sind das Ergebnis von Kernel-Level-Treibern oder Betriebssystem-Komponenten, die Sicherheitsprüfungen nicht bestehen und Windows zu einem kontrollierten Stopp bringen. Diese Windows-STOPs sollen die Datenbeschädigung auf ein Minimum beschränken und den Entwicklern helfen, herauszufinden, was falsch gelaufen ist.

Da der RTSS in der Lage ist, weiterzulaufen, nachdem Windows einen STOP ausgegeben hat, können Entwickler eine sichere Shutdown-Behandlung in RTSS-Anwendungen einbauen. RTX ruft die Shutdown-Handler auf, wenn Windows einen STOP ausgibt, so dass die Echtzeitkomponenten des Systems sicher heruntergefahren werden können. Sobald alle Shutdown Handler beendet sind, lässt RTX64 den Windows Shutdown Prozess weiterlaufen.

Wenn das RTSS feststellt, dass Windows heruntergefahren werden muss, gibt RTX64 einen STOP aus, aber anstatt den traditionellen Windows Blue Screen anzuzeigen, zeigt RTX64 den RTX64 Green Screen an, der Informationen über den Zustand von RTX64 zum Zeitpunkt des STOPP enthält.

Beim Absturz von Windows werden keine Zustände gespeichert.