News PX5: Neues Echtzeitbetriebssystem mit POSIX-Threading-API vom Express Logic-Mitbegründer


von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

Bill Lamie - er war jahrelang Präsident des Herstellers von ThreadX (heute Azure RTOS) - schickt mit PX5 ein neues Echtzeitbetriebssystem ins Rennen. Hervorragendstes Attribut der neuen Plattform ist Unterstützung für die POSIX-API, was mit Linux und anderen unixoiden Betriebssystemen aufgewachsen Entwicklern Umlernaufwand spart.

Bildquelle: PX5

Worum geht es hier?

Echtzeitbetriebssysteme gibt es per se en masse: „Problematisch“ ist, dass vom Desktop oder von größeren Embedded-Systemen umsteigende Entwickler eine neue API zur Nutzung von Threading erlernen müssen. Im Linux- bzw. Unix-Bereich hat sich POSIX als Standard etabliert - PX5 unterstützt diese API „nativ“, die oft für zusätzlichen Aufwand sorgenden Übersetzungs-Schichten sind nicht erforderlich.

Eine Frage der Einbindung.

Außer Frage steht, dass Codegeneratoren wie Cube oder MCC die „Inbetriebnahme“ der immer komplizierter werdenden Peripherie-Geräte moderner Mikrocontroller wesentlich erleichtern. PX5 begegnet diesem Problem dadurch, dass es sich - siehe auch das Architekturdiagramm - auf die Kernaufgaben eines Echtzeit-Betriebssystems beschränkt.

Bildquelle: https://px5rtos.com/px5-rtos/, Diagramm ist anklickbar

Aus dieser Vorgehensweise der Reduktion ergibt sich ein sehr einfaches Deployment des Echtzeit Betriebssystems. Im nach Anmeldung (mit Linkedin-Konto besonders bequem) unter https://px5rtos.com/px5-rtos-user-guides/ zugänglichen User Guide wird davon gesprochen, dass man für die Einbindung neben einigen Header-Dateien lediglich die Files px5.c und px5_binding.s benötigt. Das eigentliche „Anwerfen“ des ersten Threads könnte dann einfacher nicht sein:

1
#include <pthread.h>
2
3
int    main()
4
{
5
6
  /* Start PX5.  */ 
7
  px5_pthread_start(1, NULL, 0);
8
9
  /* Once px5_pthread_start returns, the C main function
10
     has been elevated to a thread - the first thread in
11
     your system!  */
12
  while(1)
13
  {
14
15
     /* PX5 RTOS API calls are all available at 
16
        this point. For this example, simply sleep for 
17
        1 second.  */
18
      sleep(1);
19
  }
20
}

Ein weiterer Nebeneffekt dieser „Reduktion auf das Minimum“ ist, dass das Betriebssystem mit sehr wenig Ressourcen auskommt. Eine Minimalinstallation soll laut PX5 mit rund 1 kB Remanentspeicher und 1 kB Arbeitsspeicher ihr Auskommen finden - dass die Nutzung höherwertiger Funktionen mehr Speicher verbraucht, dürfte aus der Logik folgen. Auf einem mit 80 MHz getakteten Kortex-Controller verspricht PX5 außerdem, dass ein Context-Switch normalerweise in weniger als 1 µs abgeschlossen werden kann.

Speicher-Verifikation durch „Canaries“.

Ein weiteres interessantes Feature von PX5 läuft unter dem Namen „PX5 RTOS Pointer/Data Verification (PDV)“. Dabei handelt es sich um ein Verfahren, das unautorisierte Speicher-Zugriffe zu erkennen sucht. Dies erfolgt durch Berechnung einer Checksumme, was nach folgendem Schema passiert:

Bildquelle: PX5.

PX5 verspricht, dass die Aktivierung dieses Systems, das - normalerweise - nur die „eigenen Strukturen“ des Echtzeit Betriebssystems schützt, mit vergleichsweise wenig Overhead einhergeht - aus einer ein bis zwei Instruktionen benötigenden Anweisung wird eine 6-8 Instruktionen benötigende.

Integration ins Ökosystem

In kurzer Zeit plant PX5 sowohl das zur-Verfügung-Stellen eines GUI-Stacks als auch eines TCP-IP-Stacks. In beiden Fällen möchte das Unternehmen dabei auf „etablierte“ Mitspieler im Ökosystem setzen - weitere Informationen hierzu kommen in wenigen Tagen in Form eines Interviews mit Bill Lamie, das schon von seinem PR-Team bearbeitet wird.

Schon im Rahmen der „Ankündigung“ der Verfügbarkeit des Echtzeit Betriebssystems kündigte man die ersten Partnerschaften an - neben dem Bluetooth und WLAN-Stack-Spezialisten Clarinox (siehe https://www.businesswire.com/news/home/20230125005148/en/Clarinox-Strengthens-Wireless-Connectivity-Development-for-IoT-Devices-with-Support-for-Innovative-PX5-RTOS) und dem Tracing-Spezialisten Percepio (siehe https://www.electronicspecifier.com/industries/industrial/percepio-to-support-px5-rtos-with-tracealyzer-tool) gab es auch eine Ankündigung von CypherBridge (https://www.businesswire.com/news/home/20230125005146/en/Cypherbridge-Enhances-Security-and-Interoperability-for-IoT-Devices-with-Support-for-New-PX5-RTOS). Einige Stunden später folgte IAR:

1
With PX5 RTOS being fully supported in IAR Embedded Workbench® for Arm®, developers can leverage an integrated development environment for seamlessly building and debugging their commercial safety-critical applications from source code to firmware. Accordingly, customers benefit from reduced time-to-market, improved device firmware quality, and portability across device platforms.

Was kostet es, und wie wird es supportet?

Die Lizenzierung, und insbesondere die Lizenzkosten von Echtzeitbetriebssysteme sind immer ein „haariges“ Thema. Zum Zeitpunkt der Drucklegung dieses Artikels gibt es noch keine öffentlichen Informationen dazu - unter der URL https://px5rtos.com/licensing/ findet sich auf der Webseite aber die gezeigte Abbildung, die die „Flexibilität“ im Bereich der Lizenzierungsbedingungen illustrieren soll.

Welche Systeme werden unterstützt?

Ob der „Ultra neuen“ Verfügbarkeit gibt es derzeit noch keine vollständige Kompatibilitäts-Liste für PX5. Unter https://px5rtos.com/semiconductor/ gibt es allerdings schon jetzt eine Liste der unterstützten Halbleiterpartner. In der unter https://px5rtos.com/px5-rtos-faq/ bereitstehenden FAQ findet sich außerdem die folgende Aussage.

1
The fullest support is for the Arm processors, including the Cortex-M series MCUs and Cortex-A/R series MPUs. Please contact us for the latest processor support.

In eigener Sache

Obwohl das Interview zum Thema bereits in Arbeit ist, ist Bill Lamie gewillt, weitere Anfragen der Community entgegenzunehmen und zu beantworten. Bitte einfach hier einen Kommentar posten - der Autor kümmert sich um die Übersetzung.


: Bearbeitet durch NewsPoster
von Operator S. (smkr)


Lesenswert?

Inwiefern unterscheidet es sich von Nuttx (https://nuttx.apache.org/) 
welches schon einige Jahre frei verfügbar ist und ebenfalls auf die 
POSIX Kompatibilität achtet?

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Frage raus! Ich denke ich kriege bald eine AW.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Was macht das obige C-Beispiel? In Posix erzeugt man einen Thread mit 
`pthread_create()` dann hätte der "Prozess" 2 laufende threads. Eine 
Endlosschleife würde man ja auch heute noch ganz ohne OS hinbekommen.

von A. B. (funky)


Lesenswert?

Ein Vergleich der RTOSse wäre mal schön. Freertos, Zephyr, threadx, 
nuttx, , px5, etc etc

Was kann was, was ist gut wofür? Ich würde denken mit allen kann man 
alles bzw. das gleiche machen, aber irgendeinen Grund für die Existenz 
des jeweiligen Systems wird es ja hoffentlich geben

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.