Hardware für die Betriebssystementwicklung [geschlossen]

Ich interessiere mich stark für Theorie und Design von Betriebssystemen und habe beschlossen, dass ich gerne mit der Entwicklung eines Betriebssystems spielen möchte. Ich habe einen Hintergrund in der x86-Assembly und habe mich auch mit ARM befasst. Ich hätte gerne ein Entwicklungsboard, um das Betriebssystem zu entwickeln. Hat jemand Erfahrung mit der Entwicklung von Betriebssystemen und/oder kann Hardware zur Verwendung vorschlagen?

Eine Platine, die ich in Erwägung ziehe, ist die LPC1769 LPCXpresso-Platine .

Mir ist bewusst, dass ich eine VM verwenden könnte, aber ich möchte tatsächliche Hardware verwenden.

Ein paar Fragen: Wie niedrig möchtest du anfangen? Planen Sie, Ihr BIOS zu schreiben? Hast du schon Minix studiert?
Nächste Frage: Wie hochwertig willst du fertig werden? Erstellen Sie Ihren eigenen USB-Stack, TCP/IP, Dateisysteme, GUI usw.?
Die BIOS-Entwicklung steht nicht in unmittelbarer Zukunft, aber wenn es die Möglichkeit gäbe, wäre es großartig. Was das andere Ende betrifft, werde ich versuchen, USB- und TCP/IP-Stacks, GUI usw. zu schreiben.
Diese Frage bezieht sich auf jedes System, das für ein Betriebssystem gut sein könnte. Jedes System könnte fast zum Erstellen eines Betriebssystems verwendet werden und wäre gut geeignet.

Antworten (2)

Verwenden Sie einen normalen PC. Diese werden mit x86-Prozessoren und der gesamten anderen Hardware geliefert und sind genau die Art von Plattformen, die von Betriebssystemen profitieren. Auch ein alter Junker-PC wäre dafür geeignet. Sie entwickeln auf einem normalen PC mit einem echten Betriebssystem und testen auf dem klunker. Der andere Vorteil ist, dass es kostenlos ist. Sicherlich haben Sie in irgendeiner staubigen Ecke einen alten PC oder ein altes Motherboard herumliegen oder kennen jemanden, der das tut und es schon geschafft hat, es wegzuwerfen.

Seine anfängliche Idee, sich für einen ARM zu entscheiden, ist vernünftig. Wenn ich ein experimentelles Betriebssystem schreiben wollte, würde ich x86 nicht mit einer Bargepole anfassen. x86 ist keine schöne Umgebung, um mit der Low-Level-Programmierung zu beginnen. Sie möchten etwas ohne Segmentierung, das eine gute Cross-Compiler-Unterstützung bietet.
@posipiet, er sagte, sie habe x86-Erfahrung.
Ein normaler PC war auch meine ursprüngliche Idee, ich dachte, ich würde zuerst sehen, ob jemand andere Vorschläge hat.

Was willst du? Ein komplettes PC-Betriebssystem oder doch lieber ein RTOS (Real Time Operating System)? Wenn Sie Ihr eigenes PC-Betriebssystem schreiben, würde ich einen alten PC vorschlagen, wie Olin sagte.

Zufälligerweise versuche ich gerade (nur zum Spaß) mein eigenes RTOS auf einem kleinen PIC24FJ32GA002 zu schreiben (hatte es herumliegen, einfach zu arbeiten und damit zu testen). Dies ist ein einfacher 28-poliger 16-MIPS-16-Bit-Controller, der in meinem Fall jedoch funktioniert. Ich habe derzeit einen Task-Kernel zum Laufen gebracht, damit ich Tasks wechseln, vom RTOS gehandhabte Verzögerungen verwenden kann usw. Nun zu abstrakteren Funktionen mit Speicher und peripherer Kommunikation (vom RTOS gehandhabt).

Ich glaube nicht, dass Sie einen Monster-Mikrocontroller brauchen, um ein Echtzeitbetriebssystem auszuführen. Der Aufgabenkern verbraucht nur 500 bis 600 Anweisungen und etwa 300 bis 400 Bytes RAM für 2 (+ 1 Leerlauf) Aufgaben. Selbst dieses Low-Memory-Gerät hat 10,5k Anweisungen und 8KB RAM, also verwende ich jetzt nur etwa 5%.

Für ein RTOS ist es sehr wichtig, dass die CPU eine Art einfachen Stack-Wechsel unterstützt, damit Sie den Anwendungskontext schnell ändern können. Ich weiß zum Beispiel, dass einige der älteren PICs (wie ein PIC16- oder ein PIC18-Gerät) hardwarebasierte Stacks haben. Auf dem PIC24 speichere ich den Kontext (schiebe CPU-Register auf den Stapel), ändere den Stapelzeiger (auf den Stapel einer anderen Aufgabe) und setze den Kontext fort (knallte CPU-Register aus dem Stapel).

Die ARM-Chips haben keinen Hardware-basierten Stack, also sind sie einsatzbereit. Beachten Sie, dass das LPCXpresso-Board über einen eigenen Compiler und eine eigene Entwicklungsumgebung verfügt. Das bedeutet, dass Sie den code_red-Compiler und die Umgebung für den integrierten Debugger verwenden müssen . Der Debugger funktioniert nicht mit einer anderen Umgebung, da die Software für den Debugger von der eigenen IDE geladen wird. Die kostenlose Compiler-Version des Compilers hat auch eine Codebeschränkung von 128 KB. Dies ist eine Menge Code, die debuggt werden kann, glaube ich. 128 KB sind für den Anfang ausreichend für ein kleines Echtzeitbetriebssystem.

Sie können immer Ihren eigenen JLINK- oder JTAG-Programmierer bekommen, aber Sie müssten den SW- oder JTAG-Port mit der LPC1769-Karte verdrahten. Abgesehen davon verfügt der LPC1769 über viele Ressourcen und Peripheriegeräte, um loszulegen. Ich weiß aus meiner Erfahrung nicht, wie gut die Debugging-Tools auf dem LPCxpresso sind, wenn Sie wirklich Low-End-Sachen debuggen (wie das Wechseln von Aufgaben). Auf dem PIC24 musste ich zweifeln, was los ist, MPLAB hat Aufhänger nicht richtig erfasst. Trotzdem ist es immer noch möglich. Für ARM gibt es auch jede Menge RTOS und Ressourcen, auf die man einen Blick werfen kann.