Ausführen von Anwendungen aus freeRTOS
Ich bin gerade dabei, das Betriebssystem für ein Unterhaltungselektronikprodukt zu entwickeln, das meine Firma entwickelt. Ich habe mich für freeRTOS als Backbone für unser Betriebssystem entschieden und arbeite fleißig daran, Hardwarefunktionen innerhalb des Betriebssystems zu implementieren. Ich bin jedoch auf ein Problem beim Ausführen von Anwendungen von Drittanbietern aus freeRTOS gestoßen.
Ursprünglich betrachtete ich eine Aufgabe als eine Anwendung, bei der im Grunde genommen "myapplication.c" und "myapplication.h" alle für die Anwendung erforderlichen Funktionen enthielten und der Code in der for (;;) - Schleife der Aufgabe enthalten war (als eine main while-Schleife). Wenn der Benutzer entscheidet, diese Anwendung auszuführen, wird ein Funktionszeiger an eine Warteschlange übergeben, die meine app_launcher-Task dann verwendet, um die neue Task mithilfe der Drittanbieter-Task oder -Anwendung zu erstellen.
Das Problem bei diesem Ansatz ist jedoch, dass das Betriebssystem bereits kompiliert ist und sich auf dem Mikrocontroller befindet und Anwendungen installiert und gelöscht werden, wie es der Benutzer für richtig hält. Daher müssen Anwendungen offensichtlich vom Betriebssystem aus kompiliert und ausführbar sein. Auf einer Standard-Unix-Maschine würde ich so etwas wie Fork verwenden, um die ausführbare Datei auszuwählen und ihr einen eigenen Prozess zu geben. Ich kann jedoch keine ähnliche Funktionalität in freeRTOS finden. Meine andere Idee ist die Annäherung an eine Skriptsprache für die App-Entwicklung, aber ich bin mir auch nicht sicher, wie ich diese Anwendungen starten soll ...
Die Frage ist also, wie ich freeRTOS dazu bringe, Anwendungen von Drittanbieter-Entwicklern auszuführen, die noch nicht in das Betriebssystem integriert sind.