rust-raspberrypi-OS-tutorials/01_wait_forever/README.CN.md
Andre Richter c4f9432e13
Remove xbuild. Use upstream aarch64 rust-std 🎉 🦀
`rustup target add aarch64-unknown-none-softfloat` is now a thing.
It is no longer required to build rust-std on-demand with `xbuild`.

This reduces compile-times significantly.
2020-04-07 23:17:48 +02:00

38 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 教程 01 - 一直等待(死循环)
## tl;dr
项目框架已经构建完成目前代码做的仅仅是挂起CPU核心执行内核代码。
- `Makefile` 目标项:
- `doc`: 生成文档。
- `qemu`: 在 QEMU 中运行 `kernel`
- `clippy`
- `clean`
- `readelf`: 检查 `ELF` 输出。
- `objdump`: 检查汇编。
- `nm`: 检查符号。
- 代码按照 `kernel` `arch``BSP` (板级支持包)的形式组织。
- 条件编译会根据用户提供的参数编译各自的 `arch``BSP` 的内容。
- 自定义 `link.ld` 链接脚本.
- 载入地址为 `0x80_000`
- 目前仅有 `.text` 小节section
- `main.rs`: 重要的 [inner attributes]:
- `#![no_std]`, `#![no_main]`
- 汇编函数 `_start()` 会执行 `wfe` (Wait For Event) 并挂起所有正在执行 `_start()` 的核心。
- 我们(必须)定义一个 `#[panic_handler]` 函数。
- 用于等待cpu事件的发生。
[inner attributes]: https://doc.rust-lang.org/reference/attributes.html
### 测试一下!
在项目文件夹下调用 QEMU 并观察在 `wfe` 中CPU核心的运转情况
```console
» make qemu
[...]
IN:
0x00080000: d503205f wfe
0x00080004: 17ffffff b #0x80000
```