Zu dieser Frage wurde hier diskutiert: link
Auszüge: Der Artikel im Linux Journal, auf den verwiesen wird, ist hier: link
Ich denke, dass die 8052- und die M68HC12-Ports besonders schlechte Optionen sind, um NuttX zu charakterisieren, da beide einige Probleme haben und NuttX jetzt Version 5.16 mit 63 Releases hat.
Ich habe das Interview auf der Registerkarte "Publisher" hier ausgefüllt: Link ; Auch dort gibt es eine Rezension: Link .
Eine ausführliche NuttX-Dokumentation finden Sie hier: link .
Die Probleme mit den Teilen hcs12 und 8051 lauten wie folgt:
8051 / 80c52: Diese Architektur ist wirklich RTOS-feindlich. Es verfügt über einen winzigen Hardwarestapel (128 Bytes beim 8051, 256 beim 80c52) an einem dedizierten Speicherort (Adresse 0). Um Aufgaben zu wechseln, müssen Sie den gesamten Stapel der zu blockierenden Aufgabe von der zugewiesenen Adresse an einen Speicherort kopieren und anschließend den gesamten Stapel der zu startenden Aufgabe von ihrem Speicherort an den zugewiesenen Stapelspeicherort kopieren. YECH!
Und da ist der Stapel so klein. Es ist sehr, sehr einfach, den Stapel zu überlaufen - insbesondere während der Interrupt-Behandlung.
Der NuttX 8051-Port ist vollständig und funktionsfähig (zumindest das letzte Mal, als ich ihn verwendet habe). Aber um es nützlich zu machen, müssten Sie wahrscheinlich auch den gesamten Stapel auf jeden Interrupt kopieren, damit er nicht überläuft. Grundsätzlich habe ich zu diesem Zeitpunkt das Interesse verloren, aber wenn jemand wirklich motiviert war, den 8051 zu verwenden, ist dies machbar (wenn vielleicht nicht gut beraten).
Was an dem 8051-Port gut war, ist, dass es eine großartige Übung war, NuttX in einen sehr kleinen Speicherbereich zu bringen. Der 8051-Port wird mit 32 KB RAM ausgeführt - einschließlich RTOS, libc, Compiler-Bibliotheken, einem umfangreichen Testprogramm, .data / .bss und und heap. Und mit ein bisschen Gedächtnis!
hcs12: Dies ist ein Projekt, an dem ich in meiner Freizeit arbeite, wenn ich nichts anderes mache. Es ist einfach noch nicht fertig und noch nicht bereit für die Hauptsendezeit.
Im Vergleich zu anderen RTOSs habe ich wirklich keine guten, aussagekräftigen Antworten, weil ich keine anderen RTOSs verwende. Aber hier ist mein naives Verständnis:
FreeRTOS hat Unmengen an Downloads und eine wirklich winzige Stellfläche von etwa 4 KB. Es ist das RTOS der Wahl für die wirklich kleinen MCUs. Ein FreeRTOS-Port wird von Siliziumanbietern mit nahezu jeder MCU gebündelt. Es ist also die Standard-RTOS-Option.
Es gibt Dutzende von Wettbewerbern mit FreeRTOS. ChiBIOS fällt mir sofort ein. Dies sind alles winzige Scheduler verschiedener Typen.
Um einen echten Vergleich anzustellen, müssen wir zunächst definieren, was wir unter einem RTOS verstehen: Ist es nur ein Scheduler? Oder handelt es sich um eine integrierte Reihe von Standardfunktionen des Betriebssystems - wie Scheduler, Dateisystem, Gerätetreiber, Speicherverwaltung, Netzwerkbetrieb usw. Die meisten Betriebssysteme, z. B. Linux, sind vollständige Entwicklungsumgebungen, nicht nur Scheduler. NuttX ist ein vollwertiges Betriebssystem, genauso wie Linux. Hier sind ein paar andere:
RTEMS : Ich habe mit diesem gearbeitet. Es ist schon immer da und sollte sehr stabil sein. Es ist groß; denke> 100kb. Ich denke, es zielt ein wenig über dem MCU-Markt.
uCOS : Ich habe es nie benutzt, aber das ist das RTOS unter verschiedenen populären Bootloadern, nicht wahr ? Mein Eindruck ist, dass es RTEMS ähnlich ist, aber ich weiß nicht wirklich, wovon ich spreche.
Wie würde ich NuttX mit denen vergleichen: Nun, es ist viel kleiner. Die Startfläche beträgt ca. 20 KB. Eine voll funktionsfähige Konfiguration ist etwa 10-20 KB mehr. Ein weiterer Unterschied zu diesen RTOS ist, dass NuttX sehr standardorientiert ist. Sie können sich NuttX als ein winziges Linux vorstellen. Der meiste Code, der unter Linux kompiliert und ausgeführt wird, läuft auch unter NuttX (einige Systemcodes wie Netzwerkcode oder Daemons müssen möglicherweise angepasst werden).
Ich denke, RTEMS konzentriert sich mehr auf Mikroprozessoren. NuttX konzentriert sich mehr auf Mikrocontroller.