zuruck zur Themenseite

Artikel und Hintergründe zum Thema

Industrie-PCs

Heinrich Munz | Meinrad Happacher,

Windows und Echtzeit-Linux vereint

Bis dato laufen Linux Echtzeit-Anwendungen auf einer von Windows entkoppelten Hardware-Plattform. Jetzt ist es auch möglich, Linux-Anwendungen zusammen mit Windows auf einem PC zu betreiben.

© Alisa Munz

Linux hat sich in den letzten Jahren zum beliebtesten Betriebssystem für eine Vielzahl von Anwendungen entwickelt. So verwenden immer mehr Hersteller von Industriesteuerungen Linux in der Echtzeit-Variante mit dem so genannten Preemptive Patch als Basis für ihr deterministisches Echtzeit-Verhalten. Viele ausgefeilte Entwicklungswerkzeuge sowie ein breiter Hardware-Treiber- und Software-Support von Drittanbietern stehen für Linux zur Verfügung. Selbst Microsofts Entwicklungsplattform Visual Studio – auch in der kostenlosen Community Version – unterstützt mittlerweile die Software-Entwicklung für Linux.

Doch bis dato laufen die Linux Echtzeit-Anwendungen alleine auf einer Hardware-Plattform – etwa auf Embedded Controllern oder Industrie-PCs (IPC). Durch die immens gestiegene Leistungsfähigkeit von PC-Hardware ist es jedoch möglich, ein oder mehrere Linux-Betriebssysteme – mit oder ohne Realtime – inklusive der Linux-Anwendungen zusammen mit Microsoft Windows auf PCs zu betreiben. 

Doch warum sollte man das tun? Was sind die Vorteile, Echtzeit-Anwendungen zusammen mit Windows auf einem PC zu kombinieren? Zum einen ist es der Grund der Hardware-Konsolidierung, um Kosten zu sparen. Statt Windows-HMI und Steuerungs-Hardware getrennt auf zwei Computern zu betreiben, reicht ein einziger Industrie-PC für beide Aufgaben aus. Neben der tatsächlichen Steuerungsauf-gabe an der Maschine kann es jedoch noch weitere sinnvolle Gründe zur Kombination von Linux und Windows geben. Zum Beispiel möchten viele Anwender zu Simulations-, Schulungs- oder Präsentationszwecken dieselbe Software wie auf der Steuerung in einer Büro-Umgebung auf einem Notebook lauffähig haben. Auch für die Entwicklungsabteilung kann es sinnvoll sein, die Steuerungssoftware auf Windows PCs zur Verfügung zu haben.

Das Produkt LxWin von acontis technologies fügt jetzt dem 32- oder 64-Bit-Windows in den Versionen 7, 8 oder 10 ein 32- oder 64-Bit-Realtime-fähiges, auf Yocto basierendes Linux-Betriebssystem hinzu. Die Besonderheit ist: beide Betriebssysteme können parallel zueinander gleichzeitig ihre Applikationen betreiben. Windows kann beispielsweise hauptsächlich grafische, Datenbank- oder Netzwerk-Kommunikations-Applikationen durchführen, während Linux parallel dazu Steuerung-aufgaben in harter Echtzeit ausführt. Sollte Windows mit einem Blue-Screen-Fehler abgestürzt sein, so läuft das Echtzeit-Linux im Hintergrund trotzdem ungestört weiter und kann den Steuerungsprozess geordnet weiterführen beziehungsweise anhalten.

LxWin basiert auf dem leistungsstarken Embedded Echtzeit-Linux-Kernel Yocto, der neben Windows auf einem Typ-2-Hypervisor läuft. Alle bereits existierenden Linux-Applikationen oder Linux-Treiber für entsprechende Hardware können unter dieser Linux-Variante weiterverwendet werden. 
 

Anzeige

Bild 1. Die Architektur von LxWin.

© acontis

Virtuelle Welten

LxWin besteht im Kern aus einer Realtime Virtual Machine (RTVM), welche Funktionen anbietet, die Linux statt der üblichen direkten Hardware-Programmierung aufruft (Bild 1). Dieser ‚Paravirtualisierung‘ genannte Mechanismus verwaltet folgende Ressourcen: den Arbeitsspeicher, die Prozessor-Cores, den Timer, Interrupts und die PCI-Devices. Die Speicherverwaltung ermöglicht es, dem Linux einen Speicher in beliebiger Größe zuzuweisen. Dieser Speicher steht dann nach dem nächsten Bootvorgang Windows nicht mehr zur Verfügung, sondern nur noch dem Linux. 

Bild 2. Die Zuteilung vorhandener PC-Ressourcen zu den Betriebssystemen erfolgt über ein grafisches Management Tool.

© acontis

Die Prozessor-Cores können auf un­terschiedliche Art und Weise aufgeteilt werden: Beim Shared Core-Betrieb teilt sich Windows und Linux ein Core, wobei Linux aus Echtzeit-Gründen die höhere Priorität hat und durch Echtzeit-Interrupts sofort aktiviert werden kann. Windows hingegen erhält nur dann Rechenzeit, wenn Linux freiwillig – etwa nach einem Interrupt oder in der Idle-Task – die Rechenzeit des Shared Core abgibt. Diese Betriebsart funktioniert auf x86 Singlecore-Prozessoren und auch auf Multicore-Prozessoren ohne Hardware-Virtualisierungsunterstützung beliebiger Hersteller,  was bei anderen am Markt verfügbaren Echtzeit-Virtualisierungslösungen meist nicht möglich ist.

Sollten weitere Cores vorhanden sein, so können diese konfigurierbar entweder von Windows oder von Linux verwendet werden (Bild 2). So können bei einem Quad-Core-Prozessor zwei Cores dem Windows und die anderen beiden Cores dem Linux zugeordnet werden. Ein Core für Windows und drei Cores für Linux beziehungsweise anders herum sind weitere Aufteilungsmöglichkeiten der Prozessor-Cores.

Bild 3. Devices und deren Interrupts lassen sich einfach verwalten.

© acontis

Soll harte Echtzeit mit maximalen Jitter bis hinunter in den Mikrosekundenbereich erreicht werden, sollten gewisse Prozessor-Eigenschaften wie Throtteling und andere Energiesparmaßnahmen oder auch Hyperthreading – meist im BIOS – abgeschaltet werden.
Die Realtime Virtual Machine stellt neben zwei Timern (System und Auxiliary) dem Linux eine Interrupt-Verwaltung zur Verfügung. Diese dient der Anmeldung, Abmeldung und der Bearbeitung von Echtzeit-Interrupts, welche von PCIe-Devices ausgelöst werden. Die Latenzzeiten des Interrupt- und Thread-Handling sind unter dem Echtzeit-Linux-Betriebssystem sehr kurz, was niedrige Zykluszeiten bis hinunter in den Bereich von 50 µs ermöglicht.

Zusätzlich zu den geteilten Ressourcen gibt es die Möglichkeit, exklusive Ressourcen zu bestimmen. Dies sind in der Regel PCI/PCIe-Devices, welche entweder nur vom Linux oder nur von Windows angesteuert werden. Die exklusiven Ressourcen für Linux werden von diesem durch direkte HW-Zugriffe genauso angesteuert, als ob Linux allein auf dem PC ablaufen würde. Dadurch können alle Gerätetreiber, welche für Linux existieren, ohne Änderung auch innerhalb der VM verwendet werden. Die Verwaltung und Konfiguration dieser exklusiven Ressourcen übernimmt das sogenannte Real Time Device Management innerhalb des RTVM. Für diejenigen Devices, welche Linux ansteuern soll, werden unter Windows Dummy-Driver installiert (Bild 3). Diese tun unter Windows gar nichts, sondern stellen nur sicher, dass der Windows-Plug&Play-Mechanismus zufriedengestellt wird und dass die Geräte-Ressourcen von Windows freigehalten werden.
 

Die Kommunikation

Mit den erwähnten Eigenschaften ist die Kombination aus Linux und Windows grundsätzlich funktionsfähig. Für die tägliche Praxis fehlt jedoch noch etwas Entscheidendes: Die Kommunikation zwischen Windows und Linux. Die RTVM bietet hierfür mehrere Mechanismen an: TCP/IP-Kommunikation, Zugriffe auf das Windows-Dateisystem, Datenaustausch über Shared Memory, Events, Pipes und Message Queues.

Die TCP/IP-Kommunikation wird durch Netzwerk-Treiber auf beiden Betriebssystem-Seiten realisiert, welche, statt einen realen Ethernet Controller anzusteuern, auf einem gemeinsamen Shared Memory arbeiten. Der Netzwerk-Treiber für Windows und der Linux-spezifische Treiber sind Bestandteil des LxWin-Produktes. Über dieses virtuelle Netzwerk lässt sich jegliche Art von UDP- und TCP/IP-Kommunikation auf Applikationsebene abwickeln, aber auch das Online-Debugging von Linux-Applikationen durch Visual Studio oder Eclipse unter Windows (Bild 4).

Bild 4. Neben Eclipse kann auch Microsoft Visual Studio unter Windows zur Linux-Software-Entwicklung verwendet ­werden.

© acontis

Die Kommunikation über mehrere Shared-Memory-Bereiche hinweg ist in der Größe und bezüglich der Zugriffsrechte per Konfiguration einstellbar. Durch entsprechende API-Aufrufe sowohl auf der Windows- als auch auf der Linux-Seite bekommen Applikationen auf User-Ebene direkte Pointer in das Shared Memory hinein und können darüber Daten austauschen. Unterstützt wird dies durch Interlocks, um Zugriffe auf gemeinsame Speicherbereiche zu synchronisieren (Spinlocks) und durch bidirektionale Events, also asynchrone Nachrichten, welche von einem Betriebssystem zum anderen geschickt werden. Dadurch kann eine Applikation dem Gegenpart auf dem anderen Betriebssystem signalisieren, dass sich Daten im Shared Memory geändert haben. Zusätzlich gibt es Mechanismen für komplexere Kommunikationsarten zwischen Linux und Windows wie etwa Pipes, Message Queues oder Real-time Sockets, welche intern alle auf Shared Memory und Events basieren. Zugriff auf das Windows Dateisystem von Linux aus ist ebenfalls möglich.

Die Verwendung der optional vorhandenen Hardware-Virtualisierungstechnologie VT-x in Intel-CPUs eröffnet weitere Optionen. So lässt sich dem Linux mehr als 4 GByte Speicher bereitstellen, wenn das 32 Bit Linux verwendet wird. Dies geschieht durch Einblenden beliebiger Speicherbereiche in den Adressraum des Linux. 

Bei 64 Bit Linux ist VT-x notwendig, um sich einzelne Cores mit Windows zu teilen. Windows wird dabei immer nur dann aktiviert, wenn Linux nichts mehr zu tun hat und in der Idle Loop angekommen ist. Windows läuft dabei also sozusagen in der Idle Loop des Linux.

Eine weitere Fähigkeit, welche durch VT-x ermög­licht wird, ist, einen fatal Linux crash abzufangen, sodass Windows völlig ungestört weiterläuft. Linux gelangt dabei in den Virtual Monitor Modus, anstatt das gesamte System neu zu booten. Die Aktivierung von VT-x ist ganz einfach und erfolgt über die grafische Oberfläche des mitgelieferten System-Manager-Tools. 

Kombination mit Ethercat, TSN und OPC UA

Eine echtzeitfähige IPC-basierte Steuerung nützt nur dann etwas, wenn mittels der Echtzeit entsprechende Sensoren und Aktoren angesteuert werden können. Dies geschieht heute meist über Feldbusse. Steht also Linux ein Standard Ethernet-Controller exklusiv zur Verfügung, kann der Ethercat Master Stack von Acontis diesen Ethernet-Controller in harter Echtzeit betreiben und darüber externe Ethercat-Slaves ansteuern. Dadurch werden Zykluszeiten bis hinunter zu 50 µs möglich. In Entwicklung befindet sich bereits die nächste Generation von echtzeitfähiger Netzwerk-Kommunikation in Form von TSN mit OPC UA Pub/Sub-Anbindung.

Autor: Heinrich Munz ist stiller Teilhaber von Acontis Technologies aus Ravensburg

  • Xing Icon
  • LinkedIn Icon
Anzeige
zurück zur Themenseite
Anzeige

Das könnte Sie auch interessieren

Anzeige
Anzeige
Anzeige
Anzeige

NürnbergMesse

Der Wissenshub der Embedded-Community

Vom 11. bis 13. März trifft sich die Embedded-System-Branche. In sieben Messehallen informieren die Aussteller in Nürnberg über Hardware, Software, Services und Tools. Zwei begleitende Konferenzen, Expert Panels und Ausstellerforen vermitteln...

mehr...
Anzeige
Anzeige
Anzeige

Inonet

Sicherer Embedded PC für industrielle Anwendungen

Der Embedded-PC ‚ReliaCOR 54-13‘ von Inonet ist laut Hersteller als einer der ersten Embedded Computer made in Germany für KI-Anwendungen nach IEC 62443-4-2 zertifiziert. Damit erfüllt er die Anforderungen industrieller Sicherheitsstandards, wie von...

mehr...
Jetzt Newsletter abonnieren