Similar Projects & Tutorials
Learning resources and similar bare-metal Rust projects.
Rust OS Tutorials
Philipp Oppermann’s Blog OS
Target: x86_64 architecture (different from our AArch64)
Useful for reference:
- Testing framework - Custom test harness pattern
- Print macros -
print!/println!implementation usingfmt::Writetrait - Panic handling - Separate panic handlers for test vs normal mode
- VGA text mode concepts - Console output patterns
- Memory management - Heap allocators, paging concepts
Less relevant:
- x86-specific code (bootloader, interrupts, APIC)
- VGA hardware specifics
- x86 page table format
Best use: Architecture patterns and Rust idioms, not hardware specifics.
Rust Raspberry Pi OS Tutorials
Target: Raspberry Pi 3 and 4 (AArch64, same as us!)
Useful for reference:
- Pi-specific initialization - GPIO, UART, timer setup examples
- AArch64 assembly - Boot sequence, exception handling patterns
- Linker scripts - Section placement approaches for Pi
- Driver patterns - MMIO register access techniques
- Testing approaches - QEMU-based integration test examples
Differences from DaedalusOS:
- Uses Ruby-based build tooling (we use Cargo directly)
- Structured as progressive tutorials (we’re focused on single working kernel)
- Supports multiple Pi models (we’re Pi 4 only)
Best use: Reference implementation for Pi 4 hardware initialization.
Embedded Rust Resources
The Embedded Rust Book
Topics:
#![no_std]development- Peripheral access crates (PAC pattern)
- Memory-mapped I/O
- Volatile operations
- Inline assembly
Best use: General embedded Rust patterns, not Pi-specific.
C-based OS Development
OSDev Wiki
Useful sections:
- Meaty Skeleton - Project structure inspiration
- Memory management - Paging, heaps, allocators
- Filesystems - Future milestone reference
- Bootloaders - Understanding boot process
Note: Most content is x86-focused. Use for concepts, not code.
OSDev Wiki - ARM
Relevant topics:
- Exception handling
- MMU setup
- Cache management
- SMP (multi-core) bringup
Raspberry Pi 4 Bare Metal Projects
rpi4-bare-metal by rhythm16
GitHub: rhythm16/rpi4-bare-metal
Target: Raspberry Pi 4B (BCM2711, same as us!)
Useful for reference:
- GIC-400 implementation - Interrupt controller setup and handling examples
- PL011 UART interrupts - Interrupt-driven I/O patterns
- Mini-UART driver - Alternative UART implementation approach
- BCM2711-specific initialization - Hardware bringup sequence examples
Best use: Reference implementation for GIC-400 interrupt handling on Pi 4.
rpi4os.com Tutorial Series
Writing a “bare metal” OS for Raspberry Pi 4
Target: Raspberry Pi 4B
Topics covered:
- System timer interrupts
- Exception handling at EL1
- Interrupt controller setup
- Bare metal C programming patterns
Best use: Step-by-step tutorial for Pi 4 interrupt concepts.
Valvers Bare Metal Programming
Target: Raspberry Pi series (includes Pi 4)
Useful sections:
- Part 4: Interrupts - GIC-400 explanation and setup
- Interrupt controller architecture
- Bare metal C patterns for Pi
Best use: Understanding interrupt flow and GIC-400 architecture.
Important note: All Pi 4 bare metal projects require enable_gic=1 in config.txt!
Project Comparisons
When to Consult Each Resource
| Need | Resource | Why |
|---|---|---|
| Rust OS patterns | Blog OS | Architecture, testing, idioms |
| Pi 4 hardware | Rust Pi OS Tutorials, rpi4-bare-metal | Hardware initialization examples |
| ARM assembly | Rust Pi OS Tutorials | AArch64 boot/exception code patterns |
| Embedded Rust | Embedded Rust Book | #![no_std] patterns |
| OS concepts | OSDev Wiki | General OS knowledge |
| ARM architecture | OSDev ARM | ARM-specific OS dev |
| GIC-400 interrupts | rpi4-bare-metal, Valvers | Interrupt handling examples |
Using Reference Implementations
- Understand the concept from tutorials/docs
- Review similar implementations in reference projects
- Study hardware specifications from official datasheets
- Implement independently for DaedalusOS constraints
- Document our approach in code comments and docs
Note: These projects are reference implementations to learn from, not code to directly copy. Each has different design goals and constraints.
Related Documentation
- ARM Documentation - ARM architecture references
- Raspberry Pi Documentation - Pi 4 hardware specs
- Design Decisions - Why we made different choices