diff --git a/README.CN.md b/README.CN.md index d4803d8d..cf0eb31b 100644 --- a/README.CN.md +++ b/README.CN.md @@ -12,8 +12,9 @@ 嵌入式操作系统的内核。包含了实现一般操作系统的任务,例如开发串口控制台,设置虚拟内存和处理硬件异常。 同时利用 Rust 的特性来提供系统的安全和速度。 -_Cheers, -[Andre](https://github.com/andre-richter)_ +祝你玩得开心! + +_带上我最诚挚的问候,
Andre ([@andre-richter])_ [armv8-a 架构]: https://developer.arm.com/products/architecture/cpu-architecture/a-profile/docs [功能健全的]: https://en.wikipedia.org/wiki/Monolithic_kernel @@ -32,33 +33,28 @@ _Cheers, - 我推荐使用[Visual Studio Code],配置[Rust Analyzer]插件开发代码。 - 除了文本教程之外,也可以用`make doc`命令利用网页的优势来浏览代码。 -[Visual Studio Code]: https://code.visualstudio.com -[Rust Analyzer]: https://rust-analyzer.github.io +### `make doc` 的输出 -## 🚀 易用性 - -这个系列的教程会着重关注用户体验的友好性。因此,我尽量消除嵌入式开发中的最大痛点:工具链的问题。 + -想要尝试代码的开发者们将不会因为复杂工具链的安装、编译而烦恼。 -这是通过尽可能的使用 rust 的标准工具链并由相应的 docker 容器来提供其他所有的工具链实现的。 -该容器会在需要的时候自动下载,开发者只需要安装好对应发行版的 docker 即可。 +[Visual Studio Code]: https://code.visualstudio.com +[Rust Analyzer]: https://rust-analyzer.github.io -开发环境设置由以下部分组成: +## 🛠 系统要求 -- 编译器,链接器和二进制工具用 Rust 最新版所提供的。 -- 额外的操作系统开发工具如:`QEMU`和`GDB`通过[容器](docker/rustembedded-osdev-utils)提供。 +本教程主要是面向**Linux**发行版的。理论上,文中大部分内容在其他类Unix系统诸如**macOS**也能正常工作,但请注意,只是理论上。 -如果你想了解更多关于这个容器的信息,可以看看[这里](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/docker) +### 🚀 tl;dr 版本 -## 🛠 前提条件 +1. [安装 Docker][install_docker]。 +2. 确保你的用户在 [docker group] 中。 +3. 安装正确的 `Rust` 工具链: -在你开始之前,你必须安装一个合适的 Rust 工具链: +[docker group]: https://docs.docker.com/engine/install/linux-postinstall/ ```bash -curl https://sh.rustup.rs -sSf \ - | \ - sh -s -- \ - --default-toolchain nightly-2020-04-07 \ +curl https://sh.rustup.rs -sSf | sh -s -- \ + --default-toolchain nightly-2020-05-04 \ --component llvm-tools-preview rustfmt source $HOME/.cargo/env @@ -66,10 +62,33 @@ rustup target add aarch64-unknown-none-softfloat cargo install cargo-binutils ``` -如果你使用 `Visual Studio Code`,我强烈推荐你安装[Rust Analyzer 扩展]。 +3. 如果你使用 `Visual Studio Code`,我强烈推荐你安装[Rust Analyzer 扩展]。 +4. 如果你使用的**不是**Linux,那么你还需要安装一些`Ruby` gems。 + +```bash +sudo gem install bundler +bundle install --path .vendor/bundle +``` [Rust Analyzer 扩展]: https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer + +## 🧰 长期版本: 消除工具链烦恼 + +这个系列的教程会着重关注用户体验的友好性。因此,我尽量消除嵌入式开发中的最大痛点:工具链的问题。 + +Rust内置的交叉编译支持在这方面帮了我们大忙。我们只需要使用`rustup`安装目标工具链就可以在`x86`宿主机上交叉编译支持树莓派的目标文件。然而,除了Rust编译器,我们还需要更多的工具。例如: + +- 用于在我们的宿主系统上模拟我们内核运行环境的`QEMU`。 +- 一个叫`Minipush`的自制工具,可以通过`UART`将内核加载到树莓派上。 +- 用于调式目标文件的`OpenOCD`和`GDB`。 + +在你的宿主机上安装/编译正确版本的上述工具很可能会遇到很多麻烦。举个例子,你的发行版也许并不会提供我们需要的最新版本的软件包。又或者你在编译这些工具时会遇到一些很难处理的依赖问题。 + +这也是为什么我们要尽可能使用[Docker][install_docker]的原因。我们提供了一个已经预装了所有需要的工具及依赖的容器,当需要的时候它就会被自动拉取。如果你想要了解更多有关Docker和这个容器的细节,请查看本仓库下的[docker](docker) 文件夹。 + +[install_docker]: https://docs.docker.com/get-docker/ + ## 📟 USB 串行输出 由于教程中开发的内核是在真实的硬件上运行的,因此强烈建议您使用 USB 串行调试线来进行试验。连接后调试线会为树莓派供电,