Basierend auf树莓派3 und ARMv8-AArch64 wird ein Kernel des Mikrobetriebssystems implementiert.
Das Projekt ist in Form von overview + subprojects organisiert. overview speichert alle Code. Jedes subproject verwendet diese Codes entsprechend seinen eigenen Anforderungen, einschließlich der Filterung unnötiger Dateien (mit Ausnahme von Zusammenstellung).
Das Projekt wurde unter Verwendung der modernen C++ Sprache entwickelt, und die Hauptzielarchitektur ist ARMv8 . Der vom Projekt verwendete Compiler ist g++ , sodass der Code einige Syntax -Erweiterungen von g++ enthält, wie __attribute__ , __asm__ .
Zusätzlich kompilieren Sie
Dieses Projekt basiert auf eclipse ( version > = 4.6.3 ). Beim Kompilieren müssen Sie die entsprechende eclipse -Version verwenden. Wählen Sie unter Windows , Linux oder MacOS File -> Open Projects from File System -> Klicken Sie auf Directory , wählen Sie das Verzeichnis, in dem sich das Projekt befindet, und öffnen Sie -> Finish
Das Projekt verfügt über mehrere Unterprojekte, hauptsächlich: host , qemu_virt , raspi3 und user_space .
Die entsprechenden Ziele (Architektur) dieser Konfigurationen sind: Entwicklung basierend auf dem Betriebssystem des Host-Hosts (hauptsächlich zum Testen des Speichermanagements und anderer architekturunabhängiger Funktionen), Entwicklung basierend auf der QEMU-Simulation (verwendet, um die virtuelle Speicher, Interrupts usw. zu testen), die Entwicklung basierend auf Raspberry PI 3 (verwendet, um eine umfassende Verifizierung zu umfassen und zu programmieren) und das Programm in Benutzerflächen.
Alle Unterprojekte befinden sich unter Unterprojekten.
Das Projekt hat einige spezielle Bauziele konfiguriert. Siehe Build Targets für das Projekt.
Im Kernel kann die Vermeidung der Verwendung globaler Variablen tatsächlich spezifisch verwendet werden, um alle globalen Variablen zu initialisieren, die definiert werden müssen. Diese Variablen sind nur dann bequem zu verwenden, weil sie bereits während der Kompilierzeit Platz zugewiesen haben. Wenn Sie es verwenden müssen, definieren Sie es einmal bei der Definition und definieren Sie es einmal in der Initialisierungsfunktion neu.
Wenn die Projektkonfiguration geändert wird, muss eine neue Befehlszeile neu gestartet werden, da alle Eclipse -Umgebungen exportiert werden.
Projektfortschrittsübersicht Referenz Progress_current.md
Projektreferenzreferenzaufzeichnung_Note.md
Die Struktur und Konfiguration der Unterprojekte siehe Unterprojekte/Readme.md
In Arbeit (vielleicht MIT-Lizenz, aber wieder geschlossen sein kann, ist es jetzt halb geöffnet und halb geschlossen).
Nein, machen Sie es stattdessen posix.
Befolgen Sie einige Codierungsregeln, auf die hier später verwiesen werden kann
Lesen Sie das Dokument, das später veröffentlicht werden kann
Verwenden von QEMU zum Debuggen eines Demostrationsprogramms
Versuchen Sie, den Kernel -Code zu ändern, Rerun.
Dann add -a && git Commit && git push!
Siehe hier auch siehe externes Dokument.
RSP3-Armv8-Baremital, das ursprüngliche Projekt.
Linux, Linux, offiziell.
Qemu, ein Emulator, der sehr hilft.
Gvvisor, ein Benutzerraumkern, von Google, in Go.
Benutzermodus Linux (UML), wie der Name heißt.
X2, ein alter Kernel auf Bochs.
Raspi3 Tutorial, von BZT, sehr nützlich für Anfänger.
ARMV8 Hello World, Hello World Beispiel für ARMV8, basierend auf QEMU, nützlich für Anfänger.