同步操作将从 mirrors_rust-embedded/rust-raspberrypi-OS-tutorials 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
该系列教程适用于 ARM64 位ARMv8-A 架构的业余操作系统开发者。该教程会从零开始,一步步地指导你如何开发一个功能健全的 嵌入式操作系统的内核。包含了实现一般操作系统的任务,例如开发串口控制台,设置虚拟内存和处理硬件异常。 同时利用 Rust 的特性来提供系统的安全和速度。
祝你玩得开心!
带上我最诚挚的问候,
Andre (@andre-richter)
tl;dr
章节外还有非常详细、具体的介绍。长期计划是所有的教程都会有详细的文字说明。但是目前只有那些我认为教程的tl;dr
和diff
还不够详细的章节会详细说明。QEMU
上。UART
来观察输出结果。make doc
命令利用网页的优势来浏览代码。make doc
的输出本教程主要是面向Linux发行版的。理论上,文中大部分内容在其他类Unix系统诸如macOS也能正常工作,但请注意,只是理论上。
确保你的用户在 docker group 中。
安装正确的Rust
工具链:
如果你已经安装了一个版本的Rust:
cargo install cargo-binutils rustfilt
如果你想要全新安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
cargo install cargo-binutils rustfilt
如果你使用 Visual Studio Code
,我强烈推荐你安装Rust Analyzer 扩展。
如果你使用的不是Linux,那么你还需要安装一些Ruby
gems。
sudo gem install bundler
bundle config set path '.vendor/bundle'
bundle install
这个系列的教程会着重关注用户体验的友好性。因此,我尽量消除嵌入式开发中的最大痛点:工具链的问题。
Rust内置的交叉编译支持在这方面帮了我们大忙。我们只需要使用rustup
安装目标工具链就可以在x86
宿主机上交叉编译支持树莓派的目标文件。然而,除了Rust编译器,我们还需要更多的工具。例如:
QEMU
。Minipush
的自制工具,可以通过UART
将内核加载到树莓派上。OpenOCD
和GDB
。在你的宿主机上安装/编译正确版本的上述工具很可能会遇到很多麻烦。举个例子,你的发行版也许并不会提供我们需要的最新版本的软件包。又或者你在编译这些工具时会遇到一些很难处理的依赖问题。
这也是为什么我们要尽可能使用Docker的原因。我们提供了一个已经预装了所有需要的工具及依赖的容器,当需要的时候它就会被自动拉取。如果你想要了解更多有关Docker和这个容器的细节,请查看本仓库下的docker 文件夹。
由于教程中开发的内核是在真实的硬件上运行的,因此强烈建议您使用 USB 串行调试线来进行试验。连接调试线后,树莓派需要通过额外电源供电。
chainloader
的文件。
这将是您暂时需要在 SD 卡上手动复制的最后一个文件。这将使您能够在通过 UART 按需引导期间加载教程内核。这个教程最初是由Zoltan Baldaszti的项目衍生出来的,感谢它给我开了一个头。
Licensed under either of
at your option.
除非您明确声明,否则有意提交给您的任何贡献(包括 Apache-2.0 许可中定义的)均应按上述双重许可,且无任何附加条款或条件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。