diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index b84a8c70..99a05355 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -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]()
diff --git a/src/bare-metal/aps.md b/src/bare-metal/aps.md
new file mode 100644
index 00000000..8e937fbe
--- /dev/null
+++ b/src/bare-metal/aps.md
@@ -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>
diff --git a/src/bare-metal/aps/other-projects.md b/src/bare-metal/aps/other-projects.md
new file mode 100644
index 00000000..7f212899
--- /dev/null
+++ b/src/bare-metal/aps/other-projects.md
@@ -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.