1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-03-23 07:06:19 +02:00

Add first AP slide and mention other projects.

This commit is contained in:
Andrew Walbran 2023-02-28 03:01:05 +00:00
parent dee3e64442
commit 76ad4b2939
3 changed files with 28 additions and 1 deletions

View File

@ -255,10 +255,11 @@
# Bare Metal Rust: Afternoon
- [Application processors]()
- [Application processors](bare-metal/aps.md)
- [MMIO](bare-metal/aps/mmio.md)
- [Let's write a UART driver]()
- [Logging]()
- [Other projects](bare-metal/aps/other-projects.md)
- [Useful crates]()
- [zerocopy]()
- [aarch64_paging]()

15
src/bare-metal/aps.md Normal file
View File

@ -0,0 +1,15 @@
# Application processors
So far we've talked about microcontrollers, such as the Arm Cortex-M series. Now let's try writing
something for Cortex-A. For simplicity we'll just work with QEMU's aarch64
['virt'](https://qemu-project.gitlab.io/qemu/system/arm/virt.html) board.
<details>
* Broadly speaking, microcontrollers don't have an MMU or multiple levels of privilege (exception
levels on Arm CPUs, rings on x86), while application processors do.
* QEMU supports emulating various different machines or board models for each architecture. The
'virt' board doesn't correspond to any particular real hardware, but is designed purely for
virtual machines.
</details>

View File

@ -0,0 +1,11 @@
# Other projects
* [oreboot](https://github.com/oreboot/oreboot)
* "coreboot without the C"
* Supports x86, aarch64 and RISC-V.
* Relies on LinuxBoot rather than having many drivers itself.
* [Rust RaspberryPi OS tutorial](https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials)
* Initialisation, UART driver, simple bootloader, JTAG, exception levels, exception handling, page tables
* Not all very well written, so beware.
* [`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)
* Static analysis to determine maximum stack usage.