使用Rust在树莓派上编写操作系统 - 01 - 无限循环
概述
- 本章搭建了项目骨架。
- 一小段汇编代码让CPU的所有核心都执行内核代码。(译注:执行后CPU占用率100%)
构建
Makefile
目标:doc
:生成文档。qemu
:在QEMU中运行内核
。clippy
clean
readelf
:检查ELF
输出。objdump
:检查汇编。nm
:检查符号。
需要关注的代码
BSP
中的link.ld
为链接脚本。- 加载地址为
0x8_0000
- 目前只有一个节(section):代码节
.text
。(译注:详情参考ELF文件结构)
- 加载地址为
main.rs
中主要关注几个内部属性:#![no_std]
(译注:编译禁用自动引用标准库),#![no_main]
(译注:不使用main
函数,我们自己提供入口点函数)
boot.s
中:汇编函数_start()
将执行wfe
(等待事件),挂起所有执行_start()
CPU核心。- 我们需要定义一个
#[panic_handler]
以使编译通过。- 使用
unimplemented!()
宏作为占位符,否则可能会被编译器优化掉。
- 使用