diff --git a/README.CN.md b/README.CN.md
index b8cba52a..1b44067b 100644
--- a/README.CN.md
+++ b/README.CN.md
@@ -48,8 +48,8 @@ _带上我最诚挚的问候,
Andre ([@andre-richter])_
### 🚀 tl;dr 版本
1. [安装 Docker][install_docker]。
-2. 确保你的用户在 [docker group] 中。
-3. 安装正确的`Rust`工具链:
+2. **(仅限Linux)** 确保您的用户帐户在 [docker group] 中。
+3. 准备Rust工具链。其中大部分将在首次使用时通过[rust-toolchain.toml](rust-toolchain.toml)文件进行处理。我们要做的是:
1. 如果你已经安装了一个版本的Rust:
```bash
cargo install cargo-binutils rustfilt
@@ -63,12 +63,17 @@ _带上我最诚挚的问候,
Andre ([@andre-richter])_
cargo install cargo-binutils rustfilt
```
-1. 如果你使用 `Visual Studio Code`,我强烈推荐你安装[Rust Analyzer 扩展]。
-1. 如果你使用的**不是**Linux,那么你还需要安装一些`Ruby` gems。
+4. 如果你使用 `Visual Studio Code`,我强烈推荐你安装[Rust Analyzer 扩展]。
+5. **(仅限macOS)** 安装一些`Ruby` gems。
+
+这是作者最后一次在`macOS Monterey`上用`Ruby 3.0.2`版本进行测试。如果您正在使用`rbenv`,那么相应的`.ruby-version`文件已经就位。
+如果你从未听说过`rbenv`,请尝试使用[这个指南](https://stackoverflow.com/a/68118750)。
+
+在存储库根文件夹中运行此操作:
```bash
-sudo gem install bundler
-bundle config set path '.vendor/bundle'
+bundle config set --local path '.vendor/bundle'
+bundle config set --local without 'development'
bundle install
```
@@ -78,9 +83,10 @@ bundle install
## 🧰 长期版本: 消除工具链烦恼
-这个系列的教程会着重关注用户体验的友好性。因此,我尽量消除嵌入式开发中的最大痛点:工具链的问题。
+这个系列的教程会着重关注用户体验的友好性。因此,我尽量消除嵌入式开发中的最大痛点:`Toolchain hassle`。
Rust内置的交叉编译支持在这方面帮了我们大忙。我们只需要使用`rustup`安装目标工具链就可以在`x86`宿主机上交叉编译支持树莓派的目标文件。然而,除了Rust编译器,我们还需要更多的工具。例如:
+Rust本身在这方面已经起到了很大的作用,因为它内置了对交叉编译的支持。从`x86`宿主机到树莓派的`AArch64`架构的交叉编译所需的一切都将由`rustup`自动安装。然而,除了Rust编译器,我们还将使用更多的工具。例如:
- 用于在我们的宿主系统上模拟我们内核运行环境的`QEMU`。
- 一个叫`Minipush`的自制工具,可以通过`UART`将内核加载到树莓派上。
@@ -96,14 +102,18 @@ Rust内置的交叉编译支持在这方面帮了我们大忙。我们只需要
由于教程中开发的内核是在真实的硬件上运行的,因此强烈建议您使用 USB 串行调试线来进行试验。连接调试线后,树莓派需要通过额外电源供电。
-- 淘宝搜索"USB 转串口"
-- 如下图连接 GPIO 串口的 14/15 号引脚
-- [第六章](06_drivers_gpio_uart) 是这个设备第一次需要使用的地方。找到如何准备 SD 卡来引导你自制的内核的说明。
-- [第七章](07_uart_chainloader)开始,在树莓派上启动内核变得非常舒适。在这章,会开发出一个叫`chainloader`的文件。
- 这将是您暂时需要在 SD 卡上手动复制的最后一个文件。这将使您能够在通过 UART 按需引导期间加载教程内核。
+- 您可以在[\[1\]] [\[2\]]中或者[淘宝]上找到USB转串口线,但许多其他线材也可以工作。理想情况下,您的线材应基于`CP2102`芯片。
+- 您将其连接到`GND`和GPIO引脚`14/15`,如下所示。
+- [教程5](05_drivers_gpio_uart/README.CN.md)是这个设备第一次需要使用的地方。查看它了解如何准备SD卡以从中启动自制内核的说明。
+- 从[教程6](06_uart_chainloader/README.CN.md)开始,在树莓派上启动内核变得非常舒适。在本教程中开发了一个所谓的`chainloader`,。
+ 这将是您暂时需要在SD卡上手动复制的最后一个文件。这将使您能够在通过`UART`按需引导期间加载教程内核。
![UART wiring diagram](doc/wiring.png)
+[\[1\]]: https://www.amazon.de/dp/B0757FQ5CX/ref=cm_sw_r_tw_dp_U_x_ozGRDbVTJAG4Q
+[\[2\]]: https://www.adafruit.com/product/954
+[淘宝]: https://www.taobao.com/
+
## 🙌 致谢
这个教程最初是由[Zoltan Baldaszti](https://github.com/bztsrc)的[项目](https://github.com/bztsrc/raspi3-tutorial)衍生出来的,感谢它给我开了一个头。