Appentwicklung

Sichere und flexible Apps für die Industrie

| Redakteur: Hendrik Härter

Beliebte Apps: Im technischen Umfeld unterliegen die kleinen Programme einigen Regeln
Beliebte Apps: Im technischen Umfeld unterliegen die kleinen Programme einigen Regeln

Apps sind klein und flexibel: Warum Apps nicht in das technische Umfeld heben? Allerdings müssten Apps echtzeitfähig sein. Was muss eine Echtzeit-Plattform bieten, um Apps in der Industrie zu etablieren?

Schon seit es PCs gibt, werden Programme für Textverarbeitung, Tabellenkalkulation und alle anderen auf dem PC ausführbaren Anwendungen als Apps benutzt. Es ist für jeden selbstverständlich, dass sich Apps jederzeit starten, parallel ausführen und sogar während des Betriebs des PC neu einspielen lassen. Genau diese Eigenschaften haben wesentlich zum Erfolg des PCs beigetragen.

Die Kommunikation der Apps untereinander

Die immer populäreren Smartphones sind eigentlich miniaturisierte PCs, die noch telefonieren können, und das Angebot an Apps wächst in atemberaubendem Tempo. Apps sind oft recht speicherintensiv, was jedoch wegen der üppigen Speicherausstattung kein Problem darstellt.

Die kleinen Programme lassen sich zwar parallel ausführen, kommunizieren jedoch kaum miteinander. Informationen zwischen Apps werden in der Regel durch Kopieren von Daten ausgetauscht. Die Geschwindigkeit einer solchen Kommunikation ist für derartige Anwendungen jedoch akzeptabel und für den Benutzer kaum merklich.

Beliebig viele Apps unabhängig ausführen

Bild 1: Die MPU vergleicht während der Laufzeit die tatsächliche Adresse des Zugriffs mit den Werten des Registerpaares
Bild 1: Die MPU vergleicht während der Laufzeit die tatsächliche Adresse des Zugriffs mit den Werten des Registerpaares

Für private Anwendungen sind die Nachteile vernachlässigbar. Die Idee einer Plattform, auf der:

  • beliebig viele, voneinander unabhängige Apps ausgeführt werden können und
  • das geordnete Miteinander sowie das Einhalten gewisser Regeln koordiniert wird

hat im technischen Umfeld, wo gesteuert und geregelt wird, eine große Attraktivität. Man könnte auf einfache Weise Softwarekomponenten, also die Apps, einkaufen, in eine Plattform integrieren und so mit weit geringerem Aufwand Produktvarianten und leistungsfähige Systeme schaffen.

Für die Anbieter derartiger Apps wäre dies ein attraktiver Weg, das eigene Knowhow zu vermarkten. Das technische Umfeld definiert jedoch Bedingungen, die eine Implementierung derartiger Apps stark beeinflussen:

Ergänzendes zum Thema
 
Mikrocontroller mit MPU-Speicherschutz
  • Im technischen Umfeld steht viel weniger Speicher zur Verfügung als im Smartphone, was üppig dimensionierte Adressräume und das Kopieren von Informationen zwischen Apps von vornherein ausschließt
  • Ein weiterer Nachteil der kopierenden Kommunikation ist die mangelnde Echtzeitfähigkeit und fehlende zeitliche Vorhersagbarkeit, da die Kommunikationszeit von der Größe der zu kopierenden Daten abhängt

Wenn also das Konzept der Plattform und der Apps Einzug in die technische Welt halten soll, müssen neben der gegebenen Unabhängigkeit der Apps weitere Anforderungen erfüllt sein:

  • Kommunikation zwischen Apps muss kopierfrei und trotzdem sicher sein
  • Kommunikationszeit muss klein und vorhersagbar sein
  • Speicherbedarf insbesondere an RAM muss möglichst gering sein
  • Reaktionsgeschwindigkeit muss hoch und steuerbar sein (Gewichtung durch Priorität)
  • Ausführung zumindest der höchst prioren Unterbrechung muss verzögerungsfrei erfolgen

Schnelle Abläufe sollten möglichst verzögerungsfrei ablaufen

Tatsächlich müssen in vielen technischen Systemen, wie beispielsweise die Ansteuerung von Elektromotoren, sehr schnelle Vorgänge, beispielsweise Regler, möglichst verzögerungsfrei erfolgen, um die Qualität der Regelung zu gewährleisten.

Die notwendige Messwerterfassung und Regelung des Motors erfolgt deshalb meist durch Interrupts gesteuert.

Fast alle „größeren“ Betriebssysteme bewirken zeitliche Verzögerungen der Interrupts und sind damit für eine derartige Plattform mit Echtzeitanforderungen unbrauchbar.

Ein Echtzeitkern ohne zeitliche Verzögerungen

Schematischer Aufbau des Echtzeitkerns PXROS-HR
Schematischer Aufbau des Echtzeitkerns PXROS-HR

Ein Echtzeitkern, der alle nötigen Anforderungen einer technischen Plattform an eine Apps stellt, ist PXROS-HR. Als reiner Mikrokern stellt er nur die grundlegenden Mechanismen zur Verwaltung von Ressourcen, Tasks (Prozessen) und für die Kommunikation zur Verfügung.

Jegliche spezifische Funktionalität lebt in ihm als unabhängig betrachtete Tasks (Apps). Der Mikrokern weist keinerlei Peripherieabhängigkeit auf und hat die besondere Eigenschaft, jederzeit Unterbrechungen zuzulassen (Interrupt-Transparenz). Zeitliche Verzögerungen von Interrupts entfallen.

Dynamischer Einsatz im App-Konzept

Im Gegensatz zu vielen anderen Echtzeitkernen kann PXROS-HR auch dynamisch verwendet werden. Diese Eigenschaft ist für das Apps-Konzept zwingend notwendig, da alle Ressourcen und damit auch Tasks zur Laufzeit erzeugt und auch wieder aufgelöst werden können.

Das Konzept der kontrollierten, effizienten Kommunikation von ansonsten unabhängigen Tasks spiegelt sich im Nachrichtenmechanismus von PXROS-HR wider. Eine Nachricht ist eigentlich ein Objekt, das den Adressraum einer Task verlassen und den einer anderen betreten kann. Die Kommunikation besteht somit aus zwei Schritten, dem Senden (Abgeben) eines Objektes und Empfangen.

Es findet kein Kopieren statt und – entsprechende Hardwareunterstützung vorausgesetzt – es kann kontrolliert und sichergestellt werden, dass durch das Senden tatsächlich das Objekt den Adressraum des Senders verlässt und somit nicht mehr zugreifbar ist. Ein erneuter Versuch, auf das Objekt zuzugreifen, führt zu einer Schutzverletzung und kann somit sofort erkannt werden.

Mikrokern managt die Speicherverwaltung

Grundvoraussetzung ist die Möglichkeit, Bereiche als Sichtfenster auf den Datenspeicher hinsichtlich Lage und Größe durch eine Speicherschutzeinheit (MPU) zu definieren und zu schützen. Die Verwaltung dieser Informationen ist allein Sache des Mikrokerns. Objekte werden beim Mikrokern angefordert, der die entsprechenden Datenstrukturen erzeugt und dann bei Sende- und Empfangsvorgängen manipuliert.

Eine MPU verwendet eine Reihe von Registerpaaren (Data Protection Register), von denen jedes die Grenzen eines Speicherbereichs definiert, auf den der Zugriff erlaubt ist. Die Art des Zugriffs wie Lesen, Schreiben oder Ausführen kann für jeden Bereich festgelegt werden.

Memory Protection Unit und die begrenzten Systemressourcen

Die MPU vergleicht zur Laufzeit die tatsächliche Adresse eines Zugriffs mit den Werten des Registerpaars (Bild 1). Liegt ein Zugriff außerhalb des erlaubten Bereichs, wird eine Ausnahmeprozedur (Trap) eingeleitet. Um einen wirksamen Schutz zu gewährleisten, ist die Programmierung der MPU-Register privilegierten Instanzen, wie dem Betriebssystem, im Supervisor-Modus vorbehalten, während "normale" Anwendungen (App - Task im User-Modus) diese Berechtigung nicht haben.

Im Gegensatz zu einer Memory Management Unit mit fester Seitengröße kann die Memory Protection Unit Speicherbereiche beliebiger Größe schützen und der Speicher wird nicht fragemtiert. Das ist eine effiziente Art mit begrenzten Ressourcen umzugehen. Geeignete Mikrocontroller sind beispielsweise TriCore, Power Architecture und Cortex-M3/M4).

Geschützte Kommunikation unter den Apps

Zusätzlich kann die Kommunikation zwischen individuellen Tasks (Apps) geschützt werden: Beim Senden einer Message wird das ausschließliche Zugriffsrecht zu dem von der Message belegten Speicherbereich an den Empfänger weitergeleitet, sodass nur er auf den Inhalt der Message zugreifen kann (Bild 2). Dieser Mechanismus erfüllt zugleich hohe Anforderungen an die Datensicherheit.

Diese Verfahren sind für den Entwickler völlig transparent, da die Verwaltung der MPU vollständig in das Betriebssystem integriert ist. Im Falle eines Taskwechsels schreibt das Betriebssystem automatisch die neuen Speicherbereichsgrenzen für Read-Only-Daten, Variablen und den Stack, sowie die entsprechenden, für die Task gültigen Rechte in die Speicherschutzregister der MPU; Beim Senden oder Öffnen von Messages setzt das Betriebssystem außerdem die dazugehörigen Eigentumsrechte und passt die Speicherbereichsgrenzen dynamisch an die Größe der Message im jeweiligen Fall an.

Mögliche Fehler sind gekapselt

Dieses Kapselungsprinzip verwirklicht die völlige Trennung der Komponenten (Apps) voneinander – quasi eine Aufteilung des Controllers in virtuelle Mikrocontroller. Fehler durch unerlaubten Speicherzugriff, die durch fehlerhafte Programmierung (systematische Fehler), einen Defekt der Hardware (Zufallsfehler) oder temporäre Fehler, wie elektromagnetische Einstreuungen (vorübergehender Fehler) – haben außerhalb einer Embedded App keine Auswirkung. //heh

* * Mario Cupelli ist Leiter der Entwicklung und für Qualitätssicherung bei HighTec EDV-Systeme.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 28636120 / Embedded Software Entwicklungswerkzeuge)