Ich bin neu in der RTOS-Welt. Ich plane, RTOS auf einem Raspberry Pi 3 (möglicherweise FreeRTOS) zu verwenden. Kann jemand vorschlagen, welches RTOS für die Anfänger gut wäre?
Ist es sogar möglich, RTOS auf einen Raspberry Pi 3 zu laden, da sie noch kein Datenblatt zum BCM2837 veröffentlicht haben?
Antworten:
Obwohl das ursprüngliche Projekt nur Raspberry Pi 1 unterstützt, habe ich diese Fork auf einem Raspberry Pi 2 erfolgreich kompiliert und es heißt, auch 3 zu unterstützen.
https://github.com/Forty-Tw0/RaspberryPi-FreeRTOS
quelle
Bis jetzt habe ich das folgende RTOS ohne Erfolg für Himbeer-Pi 3 getestet, damit jemand keine Zeit verliert (ich verliere 3 Monate): FreeRTOS, Xenomai, RTEMS, BitThunder, ChibiOS / RT
Für RISC OS ist es kein RTOS.
Das Einzige, das ich bisher auf Himbeer-Pi 3 ausführen konnte, ist der Fuchsia OS-Kernel (Magenta), der sich jedoch in einem früheren Stadium befindet und niedrig dokumentiert ist
Eine andere Möglichkeit ist, das RTOS selbst zu erstellen. Ja, es ist möglich, ULTIBO CORE zu verwenden und die folgenden Tutorials zu befolgen: - http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal- programming-in-cpt1 / - https://www.youtube.com/watch?v=TCfpb8M0WeQ
quelle
ARM, die ISA-Familie, die von den Broadcom-Prozessoren für alle aktuellen Raspberry Pi-Modelle verwendet wird, basiert auf RISC , für das RISC OS geschrieben wurde. RISC OS Ich denke, dass ARM-Geräte in ihrem ersten Jahrzehnt die Hauptrolle spielten, als dasselbe britische Technologieunternehmen (Acorn) ursprünglich sowohl ARM- als auch RISC-Betriebssysteme entwarf. Tatsächlich stand ARM ursprünglich für "Acorn RISC machine" (Eichel-RISC-Maschine), und ein Teil des Grundes, warum der Himbeer-Pi so genannt wird, wie er ist, beruht auf einer Tradition in Großbritannien, Computersysteme nach Früchten oder Nüssen zu benennen.
RISC OS ist kein echtes Echtzeitbetriebssystem. Es verwendet jedoch kooperatives Multitasking. Dies bedeutet, dass Sie einen Prozess ausführen können, der sich freiwillig weigern kann, sich einem anderen Prozess hinzugeben. Welche Konsequenzen dies haben mag, weiß ich nicht, aber ich würde davon ausgehen, dass:
Sie können Dinge so konfigurieren, dass dies ohne Probleme möglich ist, es kann jedoch Einschränkungen hinsichtlich der Leistung des Betriebssystems geben (z. B. in Bezug auf das Netzwerk).
Kontextumschaltungen in den Kernelmodus werden nur aufgrund von Systemaufrufen durchgeführt, die vom Prozess ausgeführt werden, um seine Ziele zu erreichen.
Das kommt der Echtzeitfunktionalität ziemlich nahe, je nachdem, wie viel "Echtzeit" Sie benötigen. Ferner gibt es eine Bestätigung, dass RISC OS auf dem Pi 3 ausgeführt wird .
quelle
Da die Definition eines RTOS von der Anwendung abhängt, normalerweise von einem Computer, der vorgibt, viel einfacher zu sein, ist RISC OS ein RTOS für mittelkomplexe Anwendungen und nicht unbedingt für hochkomplexe Anwendungen, obwohl es sich um ein hochkomplexes RTOS handelt klingt wie ein Widerspruch. Das Beispiel von Mahmoud Almostafa RABBAH bezieht sich auf kein Betriebssystem und das Ausführen eines Single-Tasking-Programms direkt vom Bootloader, das auch kein RTOS ist.
Der einzig vernünftige Weg, dies zu verstehen, besteht darin, die RTOS-Definition in drei Ebenen zu unterteilen:
Geringe Komplexität wäre so etwas wie eine Waschmaschine oder ein Datenlogger, und wahrscheinlich sind Sie mit einfacherer Hardware, z. B. Arduino oder vielleicht einer einfacheren MCU oder sogar nur sequentieller Logik, in erster Linie besser dran. Es wird weniger Strom verbrauchen und es gibt viel weniger Grund zur Sorge: Machen Sie Dinge niemals komplizierter, als sie sein müssen.
Hohe Komplexität wäre so etwas wie ein vollständiges Multitasking-System, was ein RTOS nicht ist. Wenn Sie möchten, ist es wahrscheinlich besser, Ihre GUI auf einem separaten Gerät auszuführen. Hohe Komplexität kann auch darin bestehen, Prozesse zu überwachen, die andere Prozesse aufrufen, und einige müssen priorisiert werden. Auch hier ist eine parallele Verarbeitung besser geeignet, da sonst die Möglichkeit einer Echtzeitreaktion nicht gegeben ist.
Bei mittlerer Komplexität benötigen Sie die Schnittstellen, die ein normales Betriebssystem bieten kann, z. B. USB, und möglicherweise einen kleinen Bildschirmausgang. Sie möchten jedoch einen Datenstrom verarbeiten und nicht durch irgendetwas unterbrochen werden. Dies klingt wie das Niveau einer Automobilanwendung.
Dazu können Sie etwas ohne Betriebssystem kompilieren und es mit einem Hostcomputer entwickeln, oder Sie können die Version von RISC OS verwenden, die direkt in BASIC bootet und auf dem Zielcomputer entwickelt, was normalerweise einfacher ist.
Dadurch wird eine einzelne Task ausgeführt, die schnell genug sein kann, um eine Reihe von Ereignissen abzufragen, ohne von anderen Dingen unterbrochen zu werden. Hardware-Interrupts würden weiterhin ausgeführt, es sei denn, sie sind deaktiviert (relativ einfach), und diese sind erforderlich, damit das Display / USB usw. funktioniert. Andere Hardware-Interrupts führen Timer und E / A aus, die Sie möglicherweise nicht verwenden.
Ein weiterer Vorteil von RISC OS in RTOS-Anwendungen besteht darin, dass Sie nur die Module verwenden können, die Sie benötigen. Dies ist in herkömmlichen GUI-Anwendungen nicht sinnvoll und wurde beispielsweise von STD / AdvantageSix [1] verwendet, obwohl sie den Begriff "eingebettete Systeme" verwenden. anstelle von "RTOS". Die Vorteile sind ein vereinfachtes Design, ein geringerer Stromverbrauch, eine geringere Speichernutzung und schnellere Startzeiten (einige E / A-Geräteschnittstellen erfordern selbst einen Miniboot, und das Betriebssystem muss daran teilnehmen, obwohl die Zeitskalen in der Regel zu kurz sind, um dies zu bemerken ).
Ich hoffe, dass beides einige Lücken in den obigen Informationen ausfüllt und die Lücken in meinem eigenen Wissen deutlich macht.
[1] http://www.advantagesix.co.uk/about_us.html (Andere Beispiele aus dem Speicher sind online nicht mehr verfügbar.)
quelle