

Dies ist eine Tutorial-Serie für Hobby-Betriebssystementwickler, die neu in ARMs 64-Bit-ARMV8-A-Architektur sind. Die Tutorials geben eine geführte, schrittweise Tour durch das Schreiben eines monolithischen kernel für ein embedded system von Grund auf. Sie decken die Implementierung gemeinsamer Betriebssystemaufgaben ab, z. B. das Schreiben in die serielle Konsole, die Einrichtung des virtuellen Speichers und die Umführung von HW -Ausnahmen. Die einzigartigen Funktionen von Rust , um Sicherheit und Geschwindigkeit zu gewährleisten.
Viel Spaß!
Beste grüße,
Andre (@andre-Richter)
PS: Für andere Sprachen achten Sie auf alternative Readme -Dateien. Zum Beispiel README.CN.md oder README.ES.md . Vielen Dank an unsere Übersetzer?
kernel Binärer.README hat einen kurzen tl;dr einen kurzen Überblick über die Ergänzungen gibt, und zeigt den Quellcode diff dem vorherigen Tutorial an, sodass Sie die Änderungen/Ergänzungen bequem überprüft können.tl;dr Abschnitt einen vollwertigen, detaillierten Text. Der langfristige Plan ist, dass alle Tutorials einen vollständigen Text erhalten, aber im Moment ist dies exklusiv für Tutorials, in denen ich denke, dass tl;dr und diff nicht ausreichen, um die Idee zu bekommen.QEMU zu laufen.UART beobachten.make doc in jedem Tutorial. Damit können Sie den ausführlich dokumentierten Code auf bequeme Weise durchsuchen.make doc 
Die Tutorials sind hauptsächlich auf Linux -basierte Verteilungen ausgerichtet. Die meisten Dinge werden auch auf MacOS funktionieren, aber dies ist nur experimentell .
Docker Engine installieren.
( Nur Linux ) Stellen Sie sicher, dass sich Ihr Benutzerkonto in der Docker -Gruppe befindet.
Bereiten Sie die Rust -Toolchain vor. Das meiste davon wird beim ersten Gebrauch über die Datei rost-toolchain.toml-Datei behandelt. Was uns noch übrig bleibt, ist:
Wenn Sie bereits eine Version von Rost installiert haben:
cargo install cargo-binutils rustfiltWenn Sie Rost von Grund auf neu installieren müssen:
curl --proto ' =https ' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME /.cargo/env
cargo install cargo-binutils rustfilt Falls Sie Visual Studio Code verwenden, empfehle ich dringend, die Erweiterung der Rust Analyzer zu installieren.
( nur macOS ) Installieren Sie ein paar Ruby -Edelsteine.
Dies wurde zuletzt vom Autor mit Ruby Version 3.0.2 auf macOS Monterey getestet. Wenn Sie rbenv verwenden, ist die jeweilige .ruby-version Datei bereits vorhanden. Wenn Sie noch nie von rbenv gehört haben, versuchen Sie, diese kleine Anleitung zu verwenden.
Führen Sie dies im Repository -Root -Ordner aus:
bundle config set --local path ' .vendor/bundle '
bundle config set --local without ' development '
bundle install Diese Serie versucht, sich stark auf Benutzerfreundlichkeit zu konzentrieren. Daher wurden Anstrengungen unternommen, um den größten Schmerz in der eingebetteten Entwicklung so weit wie möglich zu beseitigen: Toolchain hassle .
Rust selbst hilft in dieser Hinsicht bereits viel, da es eine eingebaute Unterstützung für die Cross-Compilation bietet. Alles, was wir für das Cross-Compiling von einem x86 Host zur AArch64 Architektur des Raspberry Pi benötigen, wird automatisch von rustup installiert. Neben dem Rost -Compiler werden wir jedoch weitere Werkzeuge verwenden. Unter anderem:
QEMU , um unseren Kernel auf dem Host -System zu emulieren.Minipush , um einen Kernel auf den Raspberry Pi on-Demand über UART zu laden.OpenOCD und GDB zum Debuggen des Ziels.Es gibt eine Menge, die beim Installieren und/oder Kompilieren der richtigen Version jedes Tools auf Ihrem Host -Computer schief gehen kann. Beispielsweise bietet Ihre Verteilung möglicherweise nicht die neueste Version, die benötigt wird. Oder es fehlt einige schwer zu abhängige Abhängigkeiten für die Zusammenstellung eines dieser Tools.
Aus diesem Grund werden wir Docker nach Möglichkeit nutzen. Wir bieten einen dazugehörigen Container mit allen benötigten Werkzeugen oder Abhängigkeiten vorinstalliert und werden nach dem Bedarf automatisch gezogen. Wenn Sie mehr über Docker und Peek in den bereitgestellten Container erfahren möchten, lesen Sie bitte den Docker -Ordner des Repositorys.
Da der Kernel in den Tutorials auf der realen Hardware entwickelt wurde, wird dringend empfohlen, ein serielles USB -Kabel zu erhalten, um die volle Erfahrung zu sammeln.
CP2102 -Chip.GND und GPIO -Pins 14/15 wie unten gezeigt.chainloader entwickelt, der die letzte Datei sein wird, die Sie für eine Weile manuell auf die SD-Karte kopieren müssen. Dadurch können Sie die Tutorial -Kernel während des Starts auf UART laden. 
Die Originalversion der Tutorials begann als Gabel von Zoltan Baldasztis fantastische Tutorials für Bare Metal -Programmierung auf RPI3 in C . Danke, dass du mir einen Vorsprung gemacht hast!
Lizenziert unter einem von
nach Ihrer Option.
Sofern Sie nicht ausdrücklich anders angeben, ist ein Beitrag, der absichtlich zur Aufnahme in die Arbeit von Ihnen eingereicht wird, wie in der Apache-2.0-Lizenz definiert, ohne zusätzliche Bedingungen doppelt lizenziert wie oben.